[{"data":1,"prerenderedAt":3329},["ShallowReactive",2],{"docs-nav":3,"doc-latest\u002Fpackages\u002Fwpzylos-scaffold\u002Ftesting":691,"docs-prevnext-flat":3010},[4,27,51,653,663,670,683],{"title":5,"order":6,"key":7,"items":8,"packages":26},"Getting Started",1,"getting-started",[9,11,15,19,23],{"path":10,"title":5,"order":6},"\u002Fdocs\u002Flatest\u002Fgetting-started",{"path":12,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fgetting-started\u002Finstallation","Installation",3,{"path":16,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fgetting-started\u002Fconfiguration","Configuration",4,{"path":20,"title":21,"order":22},"\u002Fdocs\u002Flatest\u002Fgetting-started\u002Fquick-start","Quick Start",50,{"path":24,"title":25,"order":22},"\u002Fdocs\u002Flatest\u002Fgetting-started\u002Ftutorial","Tutorial: Build a Notes Plugin",{},{"title":28,"order":29,"key":30,"items":31,"packages":50},"Core Concepts",2,"concepts",[32,35,38,41,44,47],{"path":33,"title":34,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Farchitecture","Architecture Overview",{"path":36,"title":37,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Fhooks","Hook System",{"path":39,"title":40,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Fplugin-context","Plugin Context",{"path":42,"title":43,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Flifecycle","Request Lifecycle",{"path":45,"title":46,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Fcontainer","Service Container",{"path":48,"title":49,"order":22},"\u002Fdocs\u002Flatest\u002Fconcepts\u002Fservice-providers","Service Providers",{},{"title":52,"order":14,"key":53,"items":54,"packages":55},"Packages","packages",[],{"wpzylos-assets":56,"wpzylos-cli-core":91,"wpzylos-cli-devtool":114,"wpzylos-config":136,"wpzylos-container":158,"wpzylos-core":180,"wpzylos-database":202,"wpzylos-events":224,"wpzylos-hooks":246,"wpzylos-http":269,"wpzylos-i18n":291,"wpzylos-logger":313,"wpzylos-mail":335,"wpzylos-mcp":357,"wpzylos-migrations":376,"wpzylos-model":398,"wpzylos-notification":420,"wpzylos-queue":442,"wpzylos-requirements":464,"wpzylos-routing":486,"wpzylos-scaffold":514,"wpzylos-scheduler":545,"wpzylos-security":567,"wpzylos-validation":587,"wpzylos-views":609,"wpzylos-wp-cli":631},[57,60,63,65,67,71,75,79,83,87],{"path":58,"title":59,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets","WPZylos Assets",{"path":61,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Foverview","Overview",{"path":64,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Finstallation",{"path":66,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fconfiguration",{"path":68,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fusage","Usage",5,{"path":72,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fapi-reference","API Reference",6,{"path":76,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fexamples","Examples",7,{"path":80,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Ftesting","Testing",8,{"path":84,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Fsecurity","Security",9,{"path":88,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-assets\u002Ftroubleshooting","Troubleshooting",10,[92,95,97,99,101,103,105,107,109,112],{"path":93,"title":94,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core","WPZylos CLI Core Documentation",{"path":96,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Foverview",{"path":98,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Finstallation",{"path":100,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fconfiguration",{"path":102,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fusage",{"path":104,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fapi-reference",{"path":106,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fexamples",{"path":108,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Ftesting",{"path":110,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Fsecurity","Security Notes",{"path":113,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-core\u002Ftroubleshooting",[115,118,120,122,124,126,128,130,132,134],{"path":116,"title":117,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool","WPZylos CLI Devtool Documentation",{"path":119,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Foverview",{"path":121,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Finstallation",{"path":123,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fconfiguration",{"path":125,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fusage",{"path":127,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fapi-reference",{"path":129,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fexamples",{"path":131,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Ftesting",{"path":133,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Fsecurity",{"path":135,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-cli-devtool\u002Ftroubleshooting",[137,140,142,144,146,148,150,152,154,156],{"path":138,"title":139,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config","WPZylos Config",{"path":141,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Foverview",{"path":143,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Finstallation",{"path":145,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fconfiguration",{"path":147,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fusage",{"path":149,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fapi-reference",{"path":151,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fexamples",{"path":153,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Ftesting",{"path":155,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Fsecurity",{"path":157,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-config\u002Ftroubleshooting",[159,162,164,166,168,170,172,174,176,178],{"path":160,"title":161,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container","WPZylos Container",{"path":163,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Foverview",{"path":165,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Finstallation",{"path":167,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fconfiguration",{"path":169,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fusage",{"path":171,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fapi-reference",{"path":173,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fexamples",{"path":175,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Ftesting",{"path":177,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Fsecurity",{"path":179,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-container\u002Ftroubleshooting",[181,184,186,188,190,192,194,196,198,200],{"path":182,"title":183,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core","WPZylos Core",{"path":185,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Foverview",{"path":187,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Finstallation",{"path":189,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fconfiguration",{"path":191,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fusage",{"path":193,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fapi-reference",{"path":195,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fexamples",{"path":197,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Ftesting",{"path":199,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Fsecurity",{"path":201,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-core\u002Ftroubleshooting",[203,206,208,210,212,214,216,218,220,222],{"path":204,"title":205,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database","WPZylos Database",{"path":207,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Foverview",{"path":209,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Finstallation",{"path":211,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fconfiguration",{"path":213,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fusage",{"path":215,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fapi-reference",{"path":217,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fexamples",{"path":219,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Ftesting",{"path":221,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Fsecurity",{"path":223,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-database\u002Ftroubleshooting",[225,228,230,232,234,236,238,240,242,244],{"path":226,"title":227,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events","WPZylos Events",{"path":229,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Foverview",{"path":231,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Finstallation",{"path":233,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fconfiguration",{"path":235,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fusage",{"path":237,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fapi-reference",{"path":239,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fexamples",{"path":241,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Ftesting",{"path":243,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Fsecurity",{"path":245,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-events\u002Ftroubleshooting",[247,250,252,254,256,259,261,263,265,267],{"path":248,"title":249,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks","WPZylos Hooks",{"path":251,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Foverview",{"path":253,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Finstallation",{"path":255,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fconfiguration",{"path":257,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fusage","Usage Guide",{"path":260,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fapi-reference",{"path":262,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fexamples",{"path":264,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Ftesting",{"path":266,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Fsecurity",{"path":268,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-hooks\u002Ftroubleshooting",[270,273,275,277,279,281,283,285,287,289],{"path":271,"title":272,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http","WPZylos HTTP",{"path":274,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Foverview",{"path":276,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Finstallation",{"path":278,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fconfiguration",{"path":280,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fusage",{"path":282,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fapi-reference",{"path":284,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fexamples",{"path":286,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Ftesting",{"path":288,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Fsecurity",{"path":290,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-http\u002Ftroubleshooting",[292,295,297,299,301,303,305,307,309,311],{"path":293,"title":294,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n","WPZylos I18n",{"path":296,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Foverview",{"path":298,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Finstallation",{"path":300,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fconfiguration",{"path":302,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fusage",{"path":304,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fapi-reference",{"path":306,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fexamples",{"path":308,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Ftesting",{"path":310,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Fsecurity",{"path":312,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-i18n\u002Ftroubleshooting",[314,317,319,321,323,325,327,329,331,333],{"path":315,"title":316,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger","WPZylos Logger",{"path":318,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Foverview",{"path":320,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Finstallation",{"path":322,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fconfiguration",{"path":324,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fusage",{"path":326,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fapi-reference",{"path":328,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fexamples",{"path":330,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Ftesting",{"path":332,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Fsecurity",{"path":334,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-logger\u002Ftroubleshooting",[336,339,341,343,345,347,349,351,353,355],{"path":337,"title":338,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail","WPZylos Mail",{"path":340,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Foverview",{"path":342,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Finstallation",{"path":344,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fconfiguration",{"path":346,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fusage",{"path":348,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fapi-reference",{"path":350,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fexamples",{"path":352,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Ftesting",{"path":354,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Fsecurity",{"path":356,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mail\u002Ftroubleshooting",[358,361,363,365,367,369,371,373],{"path":359,"title":360,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp","WPZylos MCP",{"path":362,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Foverview",{"path":364,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Finstallation",{"path":366,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Fusage",{"path":368,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Fapi-reference",{"path":370,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Fexamples",{"path":372,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Ftroubleshooting",{"path":374,"title":375,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-mcp\u002Fcompanion-mcps","MCP Setup Guide",[377,380,382,384,386,388,390,392,394,396],{"path":378,"title":379,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations","WPZylos Migrations",{"path":381,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Foverview",{"path":383,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Finstallation",{"path":385,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fconfiguration",{"path":387,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fusage",{"path":389,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fapi-reference",{"path":391,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fexamples",{"path":393,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Ftesting",{"path":395,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Fsecurity",{"path":397,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-migrations\u002Ftroubleshooting",[399,402,404,406,408,410,412,414,416,418],{"path":400,"title":401,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model","WPZylos Model",{"path":403,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Foverview",{"path":405,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Finstallation",{"path":407,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fconfiguration",{"path":409,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fusage",{"path":411,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fapi-reference",{"path":413,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fexamples",{"path":415,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Ftesting",{"path":417,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Fsecurity",{"path":419,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-model\u002Ftroubleshooting",[421,424,426,428,430,432,434,436,438,440],{"path":422,"title":423,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification","WPZylos Notification",{"path":425,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Foverview",{"path":427,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Finstallation",{"path":429,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fconfiguration",{"path":431,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fusage",{"path":433,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fapi-reference",{"path":435,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fexamples",{"path":437,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Ftesting",{"path":439,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Fsecurity",{"path":441,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-notification\u002Ftroubleshooting",[443,446,448,450,452,454,456,458,460,462],{"path":444,"title":445,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue","WPZylos Queue",{"path":447,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Foverview",{"path":449,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Finstallation",{"path":451,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fconfiguration",{"path":453,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fusage",{"path":455,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fapi-reference",{"path":457,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fexamples",{"path":459,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Ftesting",{"path":461,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Fsecurity",{"path":463,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-queue\u002Ftroubleshooting",[465,468,470,472,474,476,478,480,482,484],{"path":466,"title":467,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements","WPZylos Requirements",{"path":469,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Foverview",{"path":471,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Finstallation",{"path":473,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fconfiguration",{"path":475,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fusage",{"path":477,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fapi-reference",{"path":479,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fexamples",{"path":481,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Ftesting",{"path":483,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Fsecurity",{"path":485,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-requirements\u002Ftroubleshooting",[487,490,492,494,496,498,500,502,504,506,508,511],{"path":488,"title":489,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing","WPZylos Routing",{"path":491,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Foverview",{"path":493,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Finstallation",{"path":495,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fconfiguration",{"path":497,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fusage",{"path":499,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fapi-reference",{"path":501,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fexamples",{"path":503,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Ftesting",{"path":505,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fsecurity",{"path":507,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Ftroubleshooting",{"path":509,"title":510,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Fajax","AJAX Routing",{"path":512,"title":513,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-routing\u002Frest-api","REST API Routing",[515,518,520,522,524,526,528,530,532,535,537,539,542],{"path":516,"title":517,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold","WPZylos Scaffold Documentation",{"path":519,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Foverview",{"path":521,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Finstallation",{"path":523,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fconfiguration",{"path":525,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fusage",{"path":527,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fapi-reference",{"path":529,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fexamples",{"path":531,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Ftesting",{"path":533,"title":534,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fui","UI Components (DaisyUI)",{"path":536,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fsecurity",{"path":538,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Ftroubleshooting",{"path":540,"title":541,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fcli-reference","Scaffold CLI Reference",{"path":543,"title":544,"order":22},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Fwalkthrough","Scaffold Walkthrough",[546,549,551,553,555,557,559,561,563,565],{"path":547,"title":548,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler","WPZylos Scheduler",{"path":550,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Foverview",{"path":552,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Finstallation",{"path":554,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fconfiguration",{"path":556,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fusage",{"path":558,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fapi-reference",{"path":560,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fexamples",{"path":562,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Ftesting",{"path":564,"title":85,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Fsecurity",{"path":566,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scheduler\u002Ftroubleshooting",[568,571,573,575,577,579,581,583,585],{"path":569,"title":570,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security","WPZylos Security",{"path":572,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Foverview",{"path":574,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Finstallation",{"path":576,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fconfiguration",{"path":578,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fusage",{"path":580,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fapi-reference",{"path":582,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Fexamples",{"path":584,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Ftesting",{"path":586,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-security\u002Ftroubleshooting",[588,591,593,595,597,599,601,603,605,607],{"path":589,"title":590,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation","WPZylos Validation",{"path":592,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Foverview",{"path":594,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Finstallation",{"path":596,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fconfiguration",{"path":598,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fusage",{"path":600,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fapi-reference",{"path":602,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fexamples",{"path":604,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Ftesting",{"path":606,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Fsecurity",{"path":608,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-validation\u002Ftroubleshooting",[610,613,615,617,619,621,623,625,627,629],{"path":611,"title":612,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views","WPZylos Views",{"path":614,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Foverview",{"path":616,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Finstallation",{"path":618,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fconfiguration",{"path":620,"title":258,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fusage",{"path":622,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fapi-reference",{"path":624,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fexamples",{"path":626,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Ftesting",{"path":628,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Fsecurity",{"path":630,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-views\u002Ftroubleshooting",[632,635,637,639,641,643,645,647,649,651],{"path":633,"title":634,"order":6},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli","WPZylos WP-CLI",{"path":636,"title":62,"order":29},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Foverview",{"path":638,"title":13,"order":14},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Finstallation",{"path":640,"title":17,"order":18},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fconfiguration",{"path":642,"title":69,"order":70},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fusage",{"path":644,"title":73,"order":74},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fapi-reference",{"path":646,"title":77,"order":78},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fexamples",{"path":648,"title":81,"order":82},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Ftesting",{"path":650,"title":111,"order":86},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Fsecurity",{"path":652,"title":89,"order":90},"\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-wp-cli\u002Ftroubleshooting",{"title":654,"order":18,"key":655,"items":656,"packages":662},"Scaffold","scaffold",[657,660],{"path":658,"title":659,"order":6},"\u002Fdocs\u002Flatest\u002Fscaffold","Scaffold Guide",{"path":661,"title":544,"order":22},"\u002Fdocs\u002Flatest\u002Fscaffold\u002Fwalkthrough",{},{"title":85,"order":70,"key":664,"items":665,"packages":669},"security",[666],{"path":667,"title":668,"order":29},"\u002Fdocs\u002Flatest\u002Fsecurity\u002Foverview","Security Overview",{},{"title":81,"order":74,"key":671,"items":672,"packages":682},"testing",[673,676,679],{"path":674,"title":675,"order":29},"\u002Fdocs\u002Flatest\u002Ftesting\u002Foverview","Testing Overview",{"path":677,"title":678,"order":22},"\u002Fdocs\u002Flatest\u002Ftesting\u002Fintegration-tests","Integration Testing",{"path":680,"title":681,"order":22},"\u002Fdocs\u002Flatest\u002Ftesting\u002Funit-tests","Unit Testing",{},{"title":684,"order":78,"key":685,"items":686,"packages":690},"Distribution","distribution",[687],{"path":688,"title":689,"order":29},"\u002Fdocs\u002Flatest\u002Fdistribution\u002Foverview","Distribution Guide",{},{"id":692,"title":81,"body":693,"description":702,"extension":3004,"meta":3005,"navigation":774,"order":82,"package":3006,"path":531,"seo":3007,"stem":3008,"__hash__":3009},"content\u002Fdocs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Ftesting.md",{"type":694,"value":695,"toc":2987},"minimark",[696,699,703,708,716,721,731,735,831,835,839,1415,1419,2282,2286,2624,2628,2631,2644,2651,2655,2659,2910,2914,2952,2956,2983],[697,698,81],"h1",{"id":671},[700,701,702],"p",{},"This guide covers testing WPZylos Scaffold plugins.",[704,705,707],"h2",{"id":706},"setup","Setup",[700,709,710,711,715],{},"The scaffold includes PHPUnit for testing. Tests are located in ",[712,713,714],"code",{},"tests\u002F",".",[717,718,720],"h3",{"id":719},"directory-structure","Directory Structure",[722,723,728],"pre",{"className":724,"code":726,"language":727},[725],"language-text","tests\u002F\n+-- Unit\u002F           # Unit tests\n+-- Feature\u002F        # Feature\u002Fintegration tests (create as needed)\n+-- bootstrap.php   # Test bootstrap\n","text",[712,729,726],{"__ignoreMap":730},"",[717,732,734],{"id":733},"running-tests","Running Tests",[722,736,740],{"className":737,"code":738,"language":739,"meta":730,"style":730},"language-bash shiki shiki-themes github-light github-dark","# Run all tests\ncomposer test\n# Or directly\n.\u002Fvendor\u002Fbin\u002Fphpunit\n\n# Run specific test file\n.\u002Fvendor\u002Fbin\u002Fphpunit tests\u002FUnit\u002FExampleTest.php\n\n# Run specific test method\n.\u002Fvendor\u002Fbin\u002Fphpunit --filter testMethodName\n\n# Run with coverage (requires Xdebug)\n.\u002Fvendor\u002Fbin\u002Fphpunit --coverage-html coverage\u002F\n","bash",[712,741,742,750,760,765,770,776,781,789,793,798,809,814,820],{"__ignoreMap":730},[743,744,746],"span",{"class":745,"line":6},"line",[743,747,749],{"class":748},"sJ8bj","# Run all tests\n",[743,751,752,756],{"class":745,"line":29},[743,753,755],{"class":754},"sScJk","composer",[743,757,759],{"class":758},"sZZnC"," test\n",[743,761,762],{"class":745,"line":14},[743,763,764],{"class":748},"# Or directly\n",[743,766,767],{"class":745,"line":18},[743,768,769],{"class":754},".\u002Fvendor\u002Fbin\u002Fphpunit\n",[743,771,772],{"class":745,"line":70},[743,773,775],{"emptyLinePlaceholder":774},true,"\n",[743,777,778],{"class":745,"line":74},[743,779,780],{"class":748},"# Run specific test file\n",[743,782,783,786],{"class":745,"line":78},[743,784,785],{"class":754},".\u002Fvendor\u002Fbin\u002Fphpunit",[743,787,788],{"class":758}," tests\u002FUnit\u002FExampleTest.php\n",[743,790,791],{"class":745,"line":82},[743,792,775],{"emptyLinePlaceholder":774},[743,794,795],{"class":745,"line":86},[743,796,797],{"class":748},"# Run specific test method\n",[743,799,800,802,806],{"class":745,"line":90},[743,801,785],{"class":754},[743,803,805],{"class":804},"sj4cs"," --filter",[743,807,808],{"class":758}," testMethodName\n",[743,810,812],{"class":745,"line":811},11,[743,813,775],{"emptyLinePlaceholder":774},[743,815,817],{"class":745,"line":816},12,[743,818,819],{"class":748},"# Run with coverage (requires Xdebug)\n",[743,821,823,825,828],{"class":745,"line":822},13,[743,824,785],{"class":754},[743,826,827],{"class":804}," --coverage-html",[743,829,830],{"class":758}," coverage\u002F\n",[704,832,834],{"id":833},"writing-tests","Writing Tests",[717,836,838],{"id":837},"basic-unit-test","Basic Unit Test",[722,840,844],{"className":841,"code":842,"language":843,"meta":730,"style":730},"language-php shiki shiki-themes github-light github-dark","\u003C?php\n\u002F\u002F tests\u002FUnit\u002FPluginContextTest.php\n\nnamespace MyPlugin\\Tests\\Unit;\n\nuse PHPUnit\\Framework\\TestCase;\nuse MyPlugin\\Core\\PluginContext;\n\nclass PluginContextTest extends TestCase\n{\n    private PluginContext $context;\n\n    protected function setUp(): void\n    {\n        parent::setUp();\n\n        $this->context = PluginContext::create([\n            'file'       => '\u002Fpath\u002Fto\u002Fplugin.php',\n            'slug'       => 'test-plugin',\n            'prefix'     => 'testplugin_',\n            'textDomain' => 'test-plugin',\n            'version'    => '1.0.0',\n        ]);\n    }\n\n    public function testSlugReturnsCorrectValue(): void\n    {\n        $this->assertEquals('test-plugin', $this->context->slug());\n    }\n\n    public function testPrefixReturnsCorrectValue(): void\n    {\n        $this->assertEquals('testplugin_', $this->context->prefix());\n    }\n\n    public function testHookPrefixesName(): void\n    {\n        $this->assertEquals('testplugin_init', $this->context->hook('init'));\n    }\n\n    public function testOptionKeyPrefixesKey(): void\n    {\n        $this->assertEquals('testplugin_settings', $this->context->optionKey('settings'));\n    }\n\n    public function testMetaKeyPrefixesWithUnderscore(): void\n    {\n        $this->assertEquals('_testplugin_data', $this->context->metaKey('data'));\n    }\n}\n","php",[712,845,846,855,860,864,876,880,890,899,903,917,922,933,937,957,963,975,980,1006,1021,1034,1048,1061,1075,1081,1087,1092,1109,1114,1149,1154,1159,1175,1180,1209,1214,1219,1235,1240,1275,1280,1285,1301,1306,1340,1345,1350,1366,1371,1405,1410],{"__ignoreMap":730},[743,847,848,852],{"class":745,"line":6},[743,849,851],{"class":850},"szBVR","\u003C?",[743,853,854],{"class":804},"php\n",[743,856,857],{"class":745,"line":29},[743,858,859],{"class":748},"\u002F\u002F tests\u002FUnit\u002FPluginContextTest.php\n",[743,861,862],{"class":745,"line":14},[743,863,775],{"emptyLinePlaceholder":774},[743,865,866,869,872],{"class":745,"line":18},[743,867,868],{"class":850},"namespace",[743,870,871],{"class":754}," MyPlugin\\Tests\\Unit",[743,873,875],{"class":874},"sVt8B",";\n",[743,877,878],{"class":745,"line":70},[743,879,775],{"emptyLinePlaceholder":774},[743,881,882,885,888],{"class":745,"line":74},[743,883,884],{"class":850},"use",[743,886,887],{"class":804}," PHPUnit\\Framework\\TestCase",[743,889,875],{"class":874},[743,891,892,894,897],{"class":745,"line":78},[743,893,884],{"class":850},[743,895,896],{"class":804}," MyPlugin\\Core\\PluginContext",[743,898,875],{"class":874},[743,900,901],{"class":745,"line":82},[743,902,775],{"emptyLinePlaceholder":774},[743,904,905,908,911,914],{"class":745,"line":86},[743,906,907],{"class":850},"class",[743,909,910],{"class":754}," PluginContextTest",[743,912,913],{"class":850}," extends",[743,915,916],{"class":754}," TestCase\n",[743,918,919],{"class":745,"line":90},[743,920,921],{"class":874},"{\n",[743,923,924,927,930],{"class":745,"line":811},[743,925,926],{"class":850},"    private",[743,928,929],{"class":804}," PluginContext",[743,931,932],{"class":874}," $context;\n",[743,934,935],{"class":745,"line":816},[743,936,775],{"emptyLinePlaceholder":774},[743,938,939,942,945,948,951,954],{"class":745,"line":822},[743,940,941],{"class":850},"    protected",[743,943,944],{"class":850}," function",[743,946,947],{"class":754}," setUp",[743,949,950],{"class":874},"()",[743,952,953],{"class":850},":",[743,955,956],{"class":850}," void\n",[743,958,960],{"class":745,"line":959},14,[743,961,962],{"class":874},"    {\n",[743,964,966,969,972],{"class":745,"line":965},15,[743,967,968],{"class":850},"        parent::",[743,970,971],{"class":754},"setUp",[743,973,974],{"class":874},"();\n",[743,976,978],{"class":745,"line":977},16,[743,979,775],{"emptyLinePlaceholder":774},[743,981,983,986,989,992,995,997,1000,1003],{"class":745,"line":982},17,[743,984,985],{"class":804},"        $this",[743,987,988],{"class":850},"->",[743,990,991],{"class":874},"context ",[743,993,994],{"class":850},"=",[743,996,929],{"class":804},[743,998,999],{"class":850},"::",[743,1001,1002],{"class":754},"create",[743,1004,1005],{"class":874},"([\n",[743,1007,1009,1012,1015,1018],{"class":745,"line":1008},18,[743,1010,1011],{"class":758},"            'file'",[743,1013,1014],{"class":850},"       =>",[743,1016,1017],{"class":758}," '\u002Fpath\u002Fto\u002Fplugin.php'",[743,1019,1020],{"class":874},",\n",[743,1022,1024,1027,1029,1032],{"class":745,"line":1023},19,[743,1025,1026],{"class":758},"            'slug'",[743,1028,1014],{"class":850},[743,1030,1031],{"class":758}," 'test-plugin'",[743,1033,1020],{"class":874},[743,1035,1037,1040,1043,1046],{"class":745,"line":1036},20,[743,1038,1039],{"class":758},"            'prefix'",[743,1041,1042],{"class":850},"     =>",[743,1044,1045],{"class":758}," 'testplugin_'",[743,1047,1020],{"class":874},[743,1049,1051,1054,1057,1059],{"class":745,"line":1050},21,[743,1052,1053],{"class":758},"            'textDomain'",[743,1055,1056],{"class":850}," =>",[743,1058,1031],{"class":758},[743,1060,1020],{"class":874},[743,1062,1064,1067,1070,1073],{"class":745,"line":1063},22,[743,1065,1066],{"class":758},"            'version'",[743,1068,1069],{"class":850},"    =>",[743,1071,1072],{"class":758}," '1.0.0'",[743,1074,1020],{"class":874},[743,1076,1078],{"class":745,"line":1077},23,[743,1079,1080],{"class":874},"        ]);\n",[743,1082,1084],{"class":745,"line":1083},24,[743,1085,1086],{"class":874},"    }\n",[743,1088,1090],{"class":745,"line":1089},25,[743,1091,775],{"emptyLinePlaceholder":774},[743,1093,1095,1098,1100,1103,1105,1107],{"class":745,"line":1094},26,[743,1096,1097],{"class":850},"    public",[743,1099,944],{"class":850},[743,1101,1102],{"class":754}," testSlugReturnsCorrectValue",[743,1104,950],{"class":874},[743,1106,953],{"class":850},[743,1108,956],{"class":850},[743,1110,1112],{"class":745,"line":1111},27,[743,1113,962],{"class":874},[743,1115,1117,1119,1121,1124,1127,1130,1133,1136,1138,1141,1143,1146],{"class":745,"line":1116},28,[743,1118,985],{"class":804},[743,1120,988],{"class":850},[743,1122,1123],{"class":754},"assertEquals",[743,1125,1126],{"class":874},"(",[743,1128,1129],{"class":758},"'test-plugin'",[743,1131,1132],{"class":874},", ",[743,1134,1135],{"class":804},"$this",[743,1137,988],{"class":850},[743,1139,1140],{"class":874},"context",[743,1142,988],{"class":850},[743,1144,1145],{"class":754},"slug",[743,1147,1148],{"class":874},"());\n",[743,1150,1152],{"class":745,"line":1151},29,[743,1153,1086],{"class":874},[743,1155,1157],{"class":745,"line":1156},30,[743,1158,775],{"emptyLinePlaceholder":774},[743,1160,1162,1164,1166,1169,1171,1173],{"class":745,"line":1161},31,[743,1163,1097],{"class":850},[743,1165,944],{"class":850},[743,1167,1168],{"class":754}," testPrefixReturnsCorrectValue",[743,1170,950],{"class":874},[743,1172,953],{"class":850},[743,1174,956],{"class":850},[743,1176,1178],{"class":745,"line":1177},32,[743,1179,962],{"class":874},[743,1181,1183,1185,1187,1189,1191,1194,1196,1198,1200,1202,1204,1207],{"class":745,"line":1182},33,[743,1184,985],{"class":804},[743,1186,988],{"class":850},[743,1188,1123],{"class":754},[743,1190,1126],{"class":874},[743,1192,1193],{"class":758},"'testplugin_'",[743,1195,1132],{"class":874},[743,1197,1135],{"class":804},[743,1199,988],{"class":850},[743,1201,1140],{"class":874},[743,1203,988],{"class":850},[743,1205,1206],{"class":754},"prefix",[743,1208,1148],{"class":874},[743,1210,1212],{"class":745,"line":1211},34,[743,1213,1086],{"class":874},[743,1215,1217],{"class":745,"line":1216},35,[743,1218,775],{"emptyLinePlaceholder":774},[743,1220,1222,1224,1226,1229,1231,1233],{"class":745,"line":1221},36,[743,1223,1097],{"class":850},[743,1225,944],{"class":850},[743,1227,1228],{"class":754}," testHookPrefixesName",[743,1230,950],{"class":874},[743,1232,953],{"class":850},[743,1234,956],{"class":850},[743,1236,1238],{"class":745,"line":1237},37,[743,1239,962],{"class":874},[743,1241,1243,1245,1247,1249,1251,1254,1256,1258,1260,1262,1264,1267,1269,1272],{"class":745,"line":1242},38,[743,1244,985],{"class":804},[743,1246,988],{"class":850},[743,1248,1123],{"class":754},[743,1250,1126],{"class":874},[743,1252,1253],{"class":758},"'testplugin_init'",[743,1255,1132],{"class":874},[743,1257,1135],{"class":804},[743,1259,988],{"class":850},[743,1261,1140],{"class":874},[743,1263,988],{"class":850},[743,1265,1266],{"class":754},"hook",[743,1268,1126],{"class":874},[743,1270,1271],{"class":758},"'init'",[743,1273,1274],{"class":874},"));\n",[743,1276,1278],{"class":745,"line":1277},39,[743,1279,1086],{"class":874},[743,1281,1283],{"class":745,"line":1282},40,[743,1284,775],{"emptyLinePlaceholder":774},[743,1286,1288,1290,1292,1295,1297,1299],{"class":745,"line":1287},41,[743,1289,1097],{"class":850},[743,1291,944],{"class":850},[743,1293,1294],{"class":754}," testOptionKeyPrefixesKey",[743,1296,950],{"class":874},[743,1298,953],{"class":850},[743,1300,956],{"class":850},[743,1302,1304],{"class":745,"line":1303},42,[743,1305,962],{"class":874},[743,1307,1309,1311,1313,1315,1317,1320,1322,1324,1326,1328,1330,1333,1335,1338],{"class":745,"line":1308},43,[743,1310,985],{"class":804},[743,1312,988],{"class":850},[743,1314,1123],{"class":754},[743,1316,1126],{"class":874},[743,1318,1319],{"class":758},"'testplugin_settings'",[743,1321,1132],{"class":874},[743,1323,1135],{"class":804},[743,1325,988],{"class":850},[743,1327,1140],{"class":874},[743,1329,988],{"class":850},[743,1331,1332],{"class":754},"optionKey",[743,1334,1126],{"class":874},[743,1336,1337],{"class":758},"'settings'",[743,1339,1274],{"class":874},[743,1341,1343],{"class":745,"line":1342},44,[743,1344,1086],{"class":874},[743,1346,1348],{"class":745,"line":1347},45,[743,1349,775],{"emptyLinePlaceholder":774},[743,1351,1353,1355,1357,1360,1362,1364],{"class":745,"line":1352},46,[743,1354,1097],{"class":850},[743,1356,944],{"class":850},[743,1358,1359],{"class":754}," testMetaKeyPrefixesWithUnderscore",[743,1361,950],{"class":874},[743,1363,953],{"class":850},[743,1365,956],{"class":850},[743,1367,1369],{"class":745,"line":1368},47,[743,1370,962],{"class":874},[743,1372,1374,1376,1378,1380,1382,1385,1387,1389,1391,1393,1395,1398,1400,1403],{"class":745,"line":1373},48,[743,1375,985],{"class":804},[743,1377,988],{"class":850},[743,1379,1123],{"class":754},[743,1381,1126],{"class":874},[743,1383,1384],{"class":758},"'_testplugin_data'",[743,1386,1132],{"class":874},[743,1388,1135],{"class":804},[743,1390,988],{"class":850},[743,1392,1140],{"class":874},[743,1394,988],{"class":850},[743,1396,1397],{"class":754},"metaKey",[743,1399,1126],{"class":874},[743,1401,1402],{"class":758},"'data'",[743,1404,1274],{"class":874},[743,1406,1408],{"class":745,"line":1407},49,[743,1409,1086],{"class":874},[743,1411,1412],{"class":745,"line":22},[743,1413,1414],{"class":874},"}\n",[717,1416,1418],{"id":1417},"testing-with-mocks","Testing with Mocks",[722,1420,1422],{"className":841,"code":1421,"language":843,"meta":730,"style":730},"\u003C?php\n\u002F\u002F tests\u002FUnit\u002FItemServiceTest.php\n\nnamespace MyPlugin\\Tests\\Unit;\n\nuse PHPUnit\\Framework\\TestCase;\nuse MyPlugin\\Services\\ItemService;\nuse WPZylos\\Framework\\Database\\Connection;\nuse WPZylos\\Framework\\Core\\Contracts\\ContextInterface;\n\nclass ItemServiceTest extends TestCase\n{\n    public function testAllReturnsArrayOfItems(): void\n    {\n        \u002F\u002F Create mocks\n        $db = $this->createMock(Connection::class);\n        $context = $this->createMock(ContextInterface::class);\n\n        \u002F\u002F Configure mocks\n        $context->method('tableName')\n            ->with('items')\n            ->willReturn('wp_test_items');\n\n        $db->method('getResults')\n            ->willReturn([\n                (object) ['id' => 1, 'name' => 'Item 1'],\n                (object) ['id' => 2, 'name' => 'Item 2'],\n            ]);\n\n        \u002F\u002F Create service\n        $service = new ItemService($db, $context);\n\n        \u002F\u002F Assert\n        $items = $service->all();\n        $this->assertCount(2, $items);\n        $this->assertEquals('Item 1', $items[0]->name);\n    }\n\n    public function testFindReturnsItem(): void\n    {\n        $db = $this->createMock(Connection::class);\n        $context = $this->createMock(ContextInterface::class);\n\n        $context->method('tableName')->willReturn('wp_test_items');\n        $db->method('prepare')->willReturn('SELECT * FROM wp_test_items WHERE id = 1');\n        $db->method('getRow')->willReturn((object) ['id' => 1, 'name' => 'Item 1']);\n\n        $service = new ItemService($db, $context);\n\n        $item = $service->find(1);\n        $this->assertEquals(1, $item->id);\n    }\n\n    public function testFindReturnsNullWhenNotFound(): void\n    {\n        $db = $this->createMock(Connection::class);\n        $context = $this->createMock(ContextInterface::class);\n\n        $context->method('tableName')->willReturn('wp_test_items');\n        $db->method('prepare')->willReturn('');\n        $db->method('getRow')->willReturn(null);\n\n        $service = new ItemService($db, $context);\n\n        $this->assertNull($service->find(999));\n    }\n}\n",[712,1423,1424,1430,1435,1439,1447,1451,1459,1468,1477,1486,1490,1501,1505,1520,1524,1529,1555,1577,1581,1586,1604,1619,1633,1637,1653,1661,1693,1719,1724,1728,1733,1749,1753,1758,1775,1792,1819,1823,1827,1842,1846,1866,1886,1890,1915,1965,2008,2012,2024,2028,2049,2070,2075,2080,2096,2101,2122,2143,2148,2173,2199,2225,2230,2243,2248,2272,2277],{"__ignoreMap":730},[743,1425,1426,1428],{"class":745,"line":6},[743,1427,851],{"class":850},[743,1429,854],{"class":804},[743,1431,1432],{"class":745,"line":29},[743,1433,1434],{"class":748},"\u002F\u002F tests\u002FUnit\u002FItemServiceTest.php\n",[743,1436,1437],{"class":745,"line":14},[743,1438,775],{"emptyLinePlaceholder":774},[743,1440,1441,1443,1445],{"class":745,"line":18},[743,1442,868],{"class":850},[743,1444,871],{"class":754},[743,1446,875],{"class":874},[743,1448,1449],{"class":745,"line":70},[743,1450,775],{"emptyLinePlaceholder":774},[743,1452,1453,1455,1457],{"class":745,"line":74},[743,1454,884],{"class":850},[743,1456,887],{"class":804},[743,1458,875],{"class":874},[743,1460,1461,1463,1466],{"class":745,"line":78},[743,1462,884],{"class":850},[743,1464,1465],{"class":804}," MyPlugin\\Services\\ItemService",[743,1467,875],{"class":874},[743,1469,1470,1472,1475],{"class":745,"line":82},[743,1471,884],{"class":850},[743,1473,1474],{"class":804}," WPZylos\\Framework\\Database\\Connection",[743,1476,875],{"class":874},[743,1478,1479,1481,1484],{"class":745,"line":86},[743,1480,884],{"class":850},[743,1482,1483],{"class":804}," WPZylos\\Framework\\Core\\Contracts\\ContextInterface",[743,1485,875],{"class":874},[743,1487,1488],{"class":745,"line":90},[743,1489,775],{"emptyLinePlaceholder":774},[743,1491,1492,1494,1497,1499],{"class":745,"line":811},[743,1493,907],{"class":850},[743,1495,1496],{"class":754}," ItemServiceTest",[743,1498,913],{"class":850},[743,1500,916],{"class":754},[743,1502,1503],{"class":745,"line":816},[743,1504,921],{"class":874},[743,1506,1507,1509,1511,1514,1516,1518],{"class":745,"line":822},[743,1508,1097],{"class":850},[743,1510,944],{"class":850},[743,1512,1513],{"class":754}," testAllReturnsArrayOfItems",[743,1515,950],{"class":874},[743,1517,953],{"class":850},[743,1519,956],{"class":850},[743,1521,1522],{"class":745,"line":959},[743,1523,962],{"class":874},[743,1525,1526],{"class":745,"line":965},[743,1527,1528],{"class":748},"        \u002F\u002F Create mocks\n",[743,1530,1531,1534,1536,1539,1541,1544,1546,1549,1552],{"class":745,"line":977},[743,1532,1533],{"class":874},"        $db ",[743,1535,994],{"class":850},[743,1537,1538],{"class":804}," $this",[743,1540,988],{"class":850},[743,1542,1543],{"class":754},"createMock",[743,1545,1126],{"class":874},[743,1547,1548],{"class":804},"Connection",[743,1550,1551],{"class":850},"::class",[743,1553,1554],{"class":874},");\n",[743,1556,1557,1560,1562,1564,1566,1568,1570,1573,1575],{"class":745,"line":982},[743,1558,1559],{"class":874},"        $context ",[743,1561,994],{"class":850},[743,1563,1538],{"class":804},[743,1565,988],{"class":850},[743,1567,1543],{"class":754},[743,1569,1126],{"class":874},[743,1571,1572],{"class":804},"ContextInterface",[743,1574,1551],{"class":850},[743,1576,1554],{"class":874},[743,1578,1579],{"class":745,"line":1008},[743,1580,775],{"emptyLinePlaceholder":774},[743,1582,1583],{"class":745,"line":1023},[743,1584,1585],{"class":748},"        \u002F\u002F Configure mocks\n",[743,1587,1588,1591,1593,1596,1598,1601],{"class":745,"line":1036},[743,1589,1590],{"class":874},"        $context",[743,1592,988],{"class":850},[743,1594,1595],{"class":754},"method",[743,1597,1126],{"class":874},[743,1599,1600],{"class":758},"'tableName'",[743,1602,1603],{"class":874},")\n",[743,1605,1606,1609,1612,1614,1617],{"class":745,"line":1050},[743,1607,1608],{"class":850},"            ->",[743,1610,1611],{"class":754},"with",[743,1613,1126],{"class":874},[743,1615,1616],{"class":758},"'items'",[743,1618,1603],{"class":874},[743,1620,1621,1623,1626,1628,1631],{"class":745,"line":1063},[743,1622,1608],{"class":850},[743,1624,1625],{"class":754},"willReturn",[743,1627,1126],{"class":874},[743,1629,1630],{"class":758},"'wp_test_items'",[743,1632,1554],{"class":874},[743,1634,1635],{"class":745,"line":1077},[743,1636,775],{"emptyLinePlaceholder":774},[743,1638,1639,1642,1644,1646,1648,1651],{"class":745,"line":1083},[743,1640,1641],{"class":874},"        $db",[743,1643,988],{"class":850},[743,1645,1595],{"class":754},[743,1647,1126],{"class":874},[743,1649,1650],{"class":758},"'getResults'",[743,1652,1603],{"class":874},[743,1654,1655,1657,1659],{"class":745,"line":1089},[743,1656,1608],{"class":850},[743,1658,1625],{"class":754},[743,1660,1005],{"class":874},[743,1662,1663,1666,1669,1672,1675,1677,1680,1682,1685,1687,1690],{"class":745,"line":1094},[743,1664,1665],{"class":874},"                (",[743,1667,1668],{"class":850},"object",[743,1670,1671],{"class":874},") [",[743,1673,1674],{"class":758},"'id'",[743,1676,1056],{"class":850},[743,1678,1679],{"class":804}," 1",[743,1681,1132],{"class":874},[743,1683,1684],{"class":758},"'name'",[743,1686,1056],{"class":850},[743,1688,1689],{"class":758}," 'Item 1'",[743,1691,1692],{"class":874},"],\n",[743,1694,1695,1697,1699,1701,1703,1705,1708,1710,1712,1714,1717],{"class":745,"line":1111},[743,1696,1665],{"class":874},[743,1698,1668],{"class":850},[743,1700,1671],{"class":874},[743,1702,1674],{"class":758},[743,1704,1056],{"class":850},[743,1706,1707],{"class":804}," 2",[743,1709,1132],{"class":874},[743,1711,1684],{"class":758},[743,1713,1056],{"class":850},[743,1715,1716],{"class":758}," 'Item 2'",[743,1718,1692],{"class":874},[743,1720,1721],{"class":745,"line":1116},[743,1722,1723],{"class":874},"            ]);\n",[743,1725,1726],{"class":745,"line":1151},[743,1727,775],{"emptyLinePlaceholder":774},[743,1729,1730],{"class":745,"line":1156},[743,1731,1732],{"class":748},"        \u002F\u002F Create service\n",[743,1734,1735,1738,1740,1743,1746],{"class":745,"line":1161},[743,1736,1737],{"class":874},"        $service ",[743,1739,994],{"class":850},[743,1741,1742],{"class":850}," new",[743,1744,1745],{"class":804}," ItemService",[743,1747,1748],{"class":874},"($db, $context);\n",[743,1750,1751],{"class":745,"line":1177},[743,1752,775],{"emptyLinePlaceholder":774},[743,1754,1755],{"class":745,"line":1182},[743,1756,1757],{"class":748},"        \u002F\u002F Assert\n",[743,1759,1760,1763,1765,1768,1770,1773],{"class":745,"line":1211},[743,1761,1762],{"class":874},"        $items ",[743,1764,994],{"class":850},[743,1766,1767],{"class":874}," $service",[743,1769,988],{"class":850},[743,1771,1772],{"class":754},"all",[743,1774,974],{"class":874},[743,1776,1777,1779,1781,1784,1786,1789],{"class":745,"line":1216},[743,1778,985],{"class":804},[743,1780,988],{"class":850},[743,1782,1783],{"class":754},"assertCount",[743,1785,1126],{"class":874},[743,1787,1788],{"class":804},"2",[743,1790,1791],{"class":874},", $items);\n",[743,1793,1794,1796,1798,1800,1802,1805,1808,1811,1814,1816],{"class":745,"line":1221},[743,1795,985],{"class":804},[743,1797,988],{"class":850},[743,1799,1123],{"class":754},[743,1801,1126],{"class":874},[743,1803,1804],{"class":758},"'Item 1'",[743,1806,1807],{"class":874},", $items[",[743,1809,1810],{"class":804},"0",[743,1812,1813],{"class":874},"]",[743,1815,988],{"class":850},[743,1817,1818],{"class":874},"name);\n",[743,1820,1821],{"class":745,"line":1237},[743,1822,1086],{"class":874},[743,1824,1825],{"class":745,"line":1242},[743,1826,775],{"emptyLinePlaceholder":774},[743,1828,1829,1831,1833,1836,1838,1840],{"class":745,"line":1277},[743,1830,1097],{"class":850},[743,1832,944],{"class":850},[743,1834,1835],{"class":754}," testFindReturnsItem",[743,1837,950],{"class":874},[743,1839,953],{"class":850},[743,1841,956],{"class":850},[743,1843,1844],{"class":745,"line":1282},[743,1845,962],{"class":874},[743,1847,1848,1850,1852,1854,1856,1858,1860,1862,1864],{"class":745,"line":1287},[743,1849,1533],{"class":874},[743,1851,994],{"class":850},[743,1853,1538],{"class":804},[743,1855,988],{"class":850},[743,1857,1543],{"class":754},[743,1859,1126],{"class":874},[743,1861,1548],{"class":804},[743,1863,1551],{"class":850},[743,1865,1554],{"class":874},[743,1867,1868,1870,1872,1874,1876,1878,1880,1882,1884],{"class":745,"line":1303},[743,1869,1559],{"class":874},[743,1871,994],{"class":850},[743,1873,1538],{"class":804},[743,1875,988],{"class":850},[743,1877,1543],{"class":754},[743,1879,1126],{"class":874},[743,1881,1572],{"class":804},[743,1883,1551],{"class":850},[743,1885,1554],{"class":874},[743,1887,1888],{"class":745,"line":1308},[743,1889,775],{"emptyLinePlaceholder":774},[743,1891,1892,1894,1896,1898,1900,1902,1905,1907,1909,1911,1913],{"class":745,"line":1342},[743,1893,1590],{"class":874},[743,1895,988],{"class":850},[743,1897,1595],{"class":754},[743,1899,1126],{"class":874},[743,1901,1600],{"class":758},[743,1903,1904],{"class":874},")",[743,1906,988],{"class":850},[743,1908,1625],{"class":754},[743,1910,1126],{"class":874},[743,1912,1630],{"class":758},[743,1914,1554],{"class":874},[743,1916,1917,1919,1921,1923,1925,1928,1930,1932,1934,1936,1939,1942,1945,1948,1951,1954,1957,1959,1961,1963],{"class":745,"line":1347},[743,1918,1641],{"class":874},[743,1920,988],{"class":850},[743,1922,1595],{"class":754},[743,1924,1126],{"class":874},[743,1926,1927],{"class":758},"'prepare'",[743,1929,1904],{"class":874},[743,1931,988],{"class":850},[743,1933,1625],{"class":754},[743,1935,1126],{"class":874},[743,1937,1938],{"class":758},"'",[743,1940,1941],{"class":850},"SELECT",[743,1943,1944],{"class":850}," *",[743,1946,1947],{"class":850}," FROM",[743,1949,1950],{"class":758}," wp_test_items ",[743,1952,1953],{"class":850},"WHERE",[743,1955,1956],{"class":758}," id ",[743,1958,994],{"class":850},[743,1960,1679],{"class":804},[743,1962,1938],{"class":758},[743,1964,1554],{"class":874},[743,1966,1967,1969,1971,1973,1975,1978,1980,1982,1984,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005],{"class":745,"line":1352},[743,1968,1641],{"class":874},[743,1970,988],{"class":850},[743,1972,1595],{"class":754},[743,1974,1126],{"class":874},[743,1976,1977],{"class":758},"'getRow'",[743,1979,1904],{"class":874},[743,1981,988],{"class":850},[743,1983,1625],{"class":754},[743,1985,1986],{"class":874},"((",[743,1988,1668],{"class":850},[743,1990,1671],{"class":874},[743,1992,1674],{"class":758},[743,1994,1056],{"class":850},[743,1996,1679],{"class":804},[743,1998,1132],{"class":874},[743,2000,1684],{"class":758},[743,2002,1056],{"class":850},[743,2004,1689],{"class":758},[743,2006,2007],{"class":874},"]);\n",[743,2009,2010],{"class":745,"line":1368},[743,2011,775],{"emptyLinePlaceholder":774},[743,2013,2014,2016,2018,2020,2022],{"class":745,"line":1373},[743,2015,1737],{"class":874},[743,2017,994],{"class":850},[743,2019,1742],{"class":850},[743,2021,1745],{"class":804},[743,2023,1748],{"class":874},[743,2025,2026],{"class":745,"line":1407},[743,2027,775],{"emptyLinePlaceholder":774},[743,2029,2030,2033,2035,2037,2039,2042,2044,2047],{"class":745,"line":22},[743,2031,2032],{"class":874},"        $item ",[743,2034,994],{"class":850},[743,2036,1767],{"class":874},[743,2038,988],{"class":850},[743,2040,2041],{"class":754},"find",[743,2043,1126],{"class":874},[743,2045,2046],{"class":804},"1",[743,2048,1554],{"class":874},[743,2050,2052,2054,2056,2058,2060,2062,2065,2067],{"class":745,"line":2051},51,[743,2053,985],{"class":804},[743,2055,988],{"class":850},[743,2057,1123],{"class":754},[743,2059,1126],{"class":874},[743,2061,2046],{"class":804},[743,2063,2064],{"class":874},", $item",[743,2066,988],{"class":850},[743,2068,2069],{"class":874},"id);\n",[743,2071,2073],{"class":745,"line":2072},52,[743,2074,1086],{"class":874},[743,2076,2078],{"class":745,"line":2077},53,[743,2079,775],{"emptyLinePlaceholder":774},[743,2081,2083,2085,2087,2090,2092,2094],{"class":745,"line":2082},54,[743,2084,1097],{"class":850},[743,2086,944],{"class":850},[743,2088,2089],{"class":754}," testFindReturnsNullWhenNotFound",[743,2091,950],{"class":874},[743,2093,953],{"class":850},[743,2095,956],{"class":850},[743,2097,2099],{"class":745,"line":2098},55,[743,2100,962],{"class":874},[743,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120],{"class":745,"line":2103},56,[743,2105,1533],{"class":874},[743,2107,994],{"class":850},[743,2109,1538],{"class":804},[743,2111,988],{"class":850},[743,2113,1543],{"class":754},[743,2115,1126],{"class":874},[743,2117,1548],{"class":804},[743,2119,1551],{"class":850},[743,2121,1554],{"class":874},[743,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141],{"class":745,"line":2124},57,[743,2126,1559],{"class":874},[743,2128,994],{"class":850},[743,2130,1538],{"class":804},[743,2132,988],{"class":850},[743,2134,1543],{"class":754},[743,2136,1126],{"class":874},[743,2138,1572],{"class":804},[743,2140,1551],{"class":850},[743,2142,1554],{"class":874},[743,2144,2146],{"class":745,"line":2145},58,[743,2147,775],{"emptyLinePlaceholder":774},[743,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171],{"class":745,"line":2150},59,[743,2152,1590],{"class":874},[743,2154,988],{"class":850},[743,2156,1595],{"class":754},[743,2158,1126],{"class":874},[743,2160,1600],{"class":758},[743,2162,1904],{"class":874},[743,2164,988],{"class":850},[743,2166,1625],{"class":754},[743,2168,1126],{"class":874},[743,2170,1630],{"class":758},[743,2172,1554],{"class":874},[743,2174,2176,2178,2180,2182,2184,2186,2188,2190,2192,2194,2197],{"class":745,"line":2175},60,[743,2177,1641],{"class":874},[743,2179,988],{"class":850},[743,2181,1595],{"class":754},[743,2183,1126],{"class":874},[743,2185,1927],{"class":758},[743,2187,1904],{"class":874},[743,2189,988],{"class":850},[743,2191,1625],{"class":754},[743,2193,1126],{"class":874},[743,2195,2196],{"class":758},"''",[743,2198,1554],{"class":874},[743,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2223],{"class":745,"line":2201},61,[743,2203,1641],{"class":874},[743,2205,988],{"class":850},[743,2207,1595],{"class":754},[743,2209,1126],{"class":874},[743,2211,1977],{"class":758},[743,2213,1904],{"class":874},[743,2215,988],{"class":850},[743,2217,1625],{"class":754},[743,2219,1126],{"class":874},[743,2221,2222],{"class":804},"null",[743,2224,1554],{"class":874},[743,2226,2228],{"class":745,"line":2227},62,[743,2229,775],{"emptyLinePlaceholder":774},[743,2231,2233,2235,2237,2239,2241],{"class":745,"line":2232},63,[743,2234,1737],{"class":874},[743,2236,994],{"class":850},[743,2238,1742],{"class":850},[743,2240,1745],{"class":804},[743,2242,1748],{"class":874},[743,2244,2246],{"class":745,"line":2245},64,[743,2247,775],{"emptyLinePlaceholder":774},[743,2249,2251,2253,2255,2258,2261,2263,2265,2267,2270],{"class":745,"line":2250},65,[743,2252,985],{"class":804},[743,2254,988],{"class":850},[743,2256,2257],{"class":754},"assertNull",[743,2259,2260],{"class":874},"($service",[743,2262,988],{"class":850},[743,2264,2041],{"class":754},[743,2266,1126],{"class":874},[743,2268,2269],{"class":804},"999",[743,2271,1274],{"class":874},[743,2273,2275],{"class":745,"line":2274},66,[743,2276,1086],{"class":874},[743,2278,2280],{"class":745,"line":2279},67,[743,2281,1414],{"class":874},[717,2283,2285],{"id":2284},"testing-controllers","Testing Controllers",[722,2287,2289],{"className":841,"code":2288,"language":843,"meta":730,"style":730},"\u003C?php\n\u002F\u002F tests\u002FUnit\u002FDashboardControllerTest.php\n\nnamespace MyPlugin\\Tests\\Unit;\n\nuse PHPUnit\\Framework\\TestCase;\nuse MyPlugin\\Http\\Controllers\\DashboardController;\nuse WPZylos\\Framework\\Views\\ViewFactory;\nuse WPZylos\\Framework\\Core\\Contracts\\ContextInterface;\n\nclass DashboardControllerTest extends TestCase\n{\n    public function testIndexRendersView(): void\n    {\n        $view = $this->createMock(ViewFactory::class);\n        $context = $this->createMock(ContextInterface::class);\n\n        $context->method('textDomain')->willReturn('test-plugin');\n\n        $view->expects($this->once())\n            ->method('render')\n            ->with('admin\u002Fdashboard', $this->isType('array'))\n            ->willReturn('\u003Cdiv>Dashboard\u003C\u002Fdiv>');\n\n        $controller = new DashboardController($view, $context);\n\n        ob_start();\n        $controller->index();\n        $output = ob_get_clean();\n\n        $this->assertStringContainsString('Dashboard', $output);\n    }\n}\n",[712,2290,2291,2297,2302,2306,2314,2318,2326,2335,2344,2352,2356,2367,2371,2386,2390,2412,2432,2436,2461,2465,2487,2500,2528,2541,2545,2560,2564,2571,2583,2595,2599,2616,2620],{"__ignoreMap":730},[743,2292,2293,2295],{"class":745,"line":6},[743,2294,851],{"class":850},[743,2296,854],{"class":804},[743,2298,2299],{"class":745,"line":29},[743,2300,2301],{"class":748},"\u002F\u002F tests\u002FUnit\u002FDashboardControllerTest.php\n",[743,2303,2304],{"class":745,"line":14},[743,2305,775],{"emptyLinePlaceholder":774},[743,2307,2308,2310,2312],{"class":745,"line":18},[743,2309,868],{"class":850},[743,2311,871],{"class":754},[743,2313,875],{"class":874},[743,2315,2316],{"class":745,"line":70},[743,2317,775],{"emptyLinePlaceholder":774},[743,2319,2320,2322,2324],{"class":745,"line":74},[743,2321,884],{"class":850},[743,2323,887],{"class":804},[743,2325,875],{"class":874},[743,2327,2328,2330,2333],{"class":745,"line":78},[743,2329,884],{"class":850},[743,2331,2332],{"class":804}," MyPlugin\\Http\\Controllers\\DashboardController",[743,2334,875],{"class":874},[743,2336,2337,2339,2342],{"class":745,"line":82},[743,2338,884],{"class":850},[743,2340,2341],{"class":804}," WPZylos\\Framework\\Views\\ViewFactory",[743,2343,875],{"class":874},[743,2345,2346,2348,2350],{"class":745,"line":86},[743,2347,884],{"class":850},[743,2349,1483],{"class":804},[743,2351,875],{"class":874},[743,2353,2354],{"class":745,"line":90},[743,2355,775],{"emptyLinePlaceholder":774},[743,2357,2358,2360,2363,2365],{"class":745,"line":811},[743,2359,907],{"class":850},[743,2361,2362],{"class":754}," DashboardControllerTest",[743,2364,913],{"class":850},[743,2366,916],{"class":754},[743,2368,2369],{"class":745,"line":816},[743,2370,921],{"class":874},[743,2372,2373,2375,2377,2380,2382,2384],{"class":745,"line":822},[743,2374,1097],{"class":850},[743,2376,944],{"class":850},[743,2378,2379],{"class":754}," testIndexRendersView",[743,2381,950],{"class":874},[743,2383,953],{"class":850},[743,2385,956],{"class":850},[743,2387,2388],{"class":745,"line":959},[743,2389,962],{"class":874},[743,2391,2392,2395,2397,2399,2401,2403,2405,2408,2410],{"class":745,"line":965},[743,2393,2394],{"class":874},"        $view ",[743,2396,994],{"class":850},[743,2398,1538],{"class":804},[743,2400,988],{"class":850},[743,2402,1543],{"class":754},[743,2404,1126],{"class":874},[743,2406,2407],{"class":804},"ViewFactory",[743,2409,1551],{"class":850},[743,2411,1554],{"class":874},[743,2413,2414,2416,2418,2420,2422,2424,2426,2428,2430],{"class":745,"line":977},[743,2415,1559],{"class":874},[743,2417,994],{"class":850},[743,2419,1538],{"class":804},[743,2421,988],{"class":850},[743,2423,1543],{"class":754},[743,2425,1126],{"class":874},[743,2427,1572],{"class":804},[743,2429,1551],{"class":850},[743,2431,1554],{"class":874},[743,2433,2434],{"class":745,"line":982},[743,2435,775],{"emptyLinePlaceholder":774},[743,2437,2438,2440,2442,2444,2446,2449,2451,2453,2455,2457,2459],{"class":745,"line":1008},[743,2439,1590],{"class":874},[743,2441,988],{"class":850},[743,2443,1595],{"class":754},[743,2445,1126],{"class":874},[743,2447,2448],{"class":758},"'textDomain'",[743,2450,1904],{"class":874},[743,2452,988],{"class":850},[743,2454,1625],{"class":754},[743,2456,1126],{"class":874},[743,2458,1129],{"class":758},[743,2460,1554],{"class":874},[743,2462,2463],{"class":745,"line":1023},[743,2464,775],{"emptyLinePlaceholder":774},[743,2466,2467,2470,2472,2475,2477,2479,2481,2484],{"class":745,"line":1036},[743,2468,2469],{"class":874},"        $view",[743,2471,988],{"class":850},[743,2473,2474],{"class":754},"expects",[743,2476,1126],{"class":874},[743,2478,1135],{"class":804},[743,2480,988],{"class":850},[743,2482,2483],{"class":754},"once",[743,2485,2486],{"class":874},"())\n",[743,2488,2489,2491,2493,2495,2498],{"class":745,"line":1050},[743,2490,1608],{"class":850},[743,2492,1595],{"class":754},[743,2494,1126],{"class":874},[743,2496,2497],{"class":758},"'render'",[743,2499,1603],{"class":874},[743,2501,2502,2504,2506,2508,2511,2513,2515,2517,2520,2522,2525],{"class":745,"line":1063},[743,2503,1608],{"class":850},[743,2505,1611],{"class":754},[743,2507,1126],{"class":874},[743,2509,2510],{"class":758},"'admin\u002Fdashboard'",[743,2512,1132],{"class":874},[743,2514,1135],{"class":804},[743,2516,988],{"class":850},[743,2518,2519],{"class":754},"isType",[743,2521,1126],{"class":874},[743,2523,2524],{"class":758},"'array'",[743,2526,2527],{"class":874},"))\n",[743,2529,2530,2532,2534,2536,2539],{"class":745,"line":1077},[743,2531,1608],{"class":850},[743,2533,1625],{"class":754},[743,2535,1126],{"class":874},[743,2537,2538],{"class":758},"'\u003Cdiv>Dashboard\u003C\u002Fdiv>'",[743,2540,1554],{"class":874},[743,2542,2543],{"class":745,"line":1083},[743,2544,775],{"emptyLinePlaceholder":774},[743,2546,2547,2550,2552,2554,2557],{"class":745,"line":1089},[743,2548,2549],{"class":874},"        $controller ",[743,2551,994],{"class":850},[743,2553,1742],{"class":850},[743,2555,2556],{"class":804}," DashboardController",[743,2558,2559],{"class":874},"($view, $context);\n",[743,2561,2562],{"class":745,"line":1094},[743,2563,775],{"emptyLinePlaceholder":774},[743,2565,2566,2569],{"class":745,"line":1111},[743,2567,2568],{"class":804},"        ob_start",[743,2570,974],{"class":874},[743,2572,2573,2576,2578,2581],{"class":745,"line":1116},[743,2574,2575],{"class":874},"        $controller",[743,2577,988],{"class":850},[743,2579,2580],{"class":754},"index",[743,2582,974],{"class":874},[743,2584,2585,2588,2590,2593],{"class":745,"line":1151},[743,2586,2587],{"class":874},"        $output ",[743,2589,994],{"class":850},[743,2591,2592],{"class":804}," ob_get_clean",[743,2594,974],{"class":874},[743,2596,2597],{"class":745,"line":1156},[743,2598,775],{"emptyLinePlaceholder":774},[743,2600,2601,2603,2605,2608,2610,2613],{"class":745,"line":1161},[743,2602,985],{"class":804},[743,2604,988],{"class":850},[743,2606,2607],{"class":754},"assertStringContainsString",[743,2609,1126],{"class":874},[743,2611,2612],{"class":758},"'Dashboard'",[743,2614,2615],{"class":874},", $output);\n",[743,2617,2618],{"class":745,"line":1177},[743,2619,1086],{"class":874},[743,2621,2622],{"class":745,"line":1182},[743,2623,1414],{"class":874},[704,2625,2627],{"id":2626},"code-coverage","Code Coverage",[700,2629,2630],{},"Generate HTML coverage report:",[722,2632,2634],{"className":737,"code":2633,"language":739,"meta":730,"style":730},".\u002Fvendor\u002Fbin\u002Fphpunit --coverage-html coverage\u002F\n",[712,2635,2636],{"__ignoreMap":730},[743,2637,2638,2640,2642],{"class":745,"line":6},[743,2639,785],{"class":754},[743,2641,827],{"class":804},[743,2643,830],{"class":758},[700,2645,2646,2647,2650],{},"View the report by opening ",[712,2648,2649],{},"coverage\u002Findex.html"," in a browser.",[704,2652,2654],{"id":2653},"continuous-integration","Continuous Integration",[717,2656,2658],{"id":2657},"github-actions-example","GitHub Actions Example",[722,2660,2664],{"className":2661,"code":2662,"language":2663,"meta":730,"style":730},"language-yaml shiki shiki-themes github-light github-dark","# .github\u002Fworkflows\u002Ftests.yml\nname: Tests\n\non: [push, pull_request]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        php: [\"8.0\", \"8.1\", \"8.2\"]\n\n    steps:\n      - uses: actions\u002Fcheckout@v3\n\n      - name: Setup PHP\n        uses: shivammathur\u002Fsetup-php@v2\n        with:\n          php-version: ${{ matrix.php }}\n          extensions: json, mbstring\n          coverage: xdebug\n\n      - name: Install dependencies\n        run: composer install --prefer-dist --no-progress\n\n      - name: Run tests\n        run: composer test\n","yaml",[712,2665,2666,2671,2683,2687,2706,2710,2718,2725,2735,2739,2746,2753,2775,2779,2786,2799,2803,2814,2824,2831,2841,2851,2861,2865,2876,2886,2890,2901],{"__ignoreMap":730},[743,2667,2668],{"class":745,"line":6},[743,2669,2670],{"class":748},"# .github\u002Fworkflows\u002Ftests.yml\n",[743,2672,2673,2677,2680],{"class":745,"line":29},[743,2674,2676],{"class":2675},"s9eBZ","name",[743,2678,2679],{"class":874},": ",[743,2681,2682],{"class":758},"Tests\n",[743,2684,2685],{"class":745,"line":14},[743,2686,775],{"emptyLinePlaceholder":774},[743,2688,2689,2692,2695,2698,2700,2703],{"class":745,"line":18},[743,2690,2691],{"class":804},"on",[743,2693,2694],{"class":874},": [",[743,2696,2697],{"class":758},"push",[743,2699,1132],{"class":874},[743,2701,2702],{"class":758},"pull_request",[743,2704,2705],{"class":874},"]\n",[743,2707,2708],{"class":745,"line":70},[743,2709,775],{"emptyLinePlaceholder":774},[743,2711,2712,2715],{"class":745,"line":74},[743,2713,2714],{"class":2675},"jobs",[743,2716,2717],{"class":874},":\n",[743,2719,2720,2723],{"class":745,"line":78},[743,2721,2722],{"class":2675},"  test",[743,2724,2717],{"class":874},[743,2726,2727,2730,2732],{"class":745,"line":82},[743,2728,2729],{"class":2675},"    runs-on",[743,2731,2679],{"class":874},[743,2733,2734],{"class":758},"ubuntu-latest\n",[743,2736,2737],{"class":745,"line":86},[743,2738,775],{"emptyLinePlaceholder":774},[743,2740,2741,2744],{"class":745,"line":90},[743,2742,2743],{"class":2675},"    strategy",[743,2745,2717],{"class":874},[743,2747,2748,2751],{"class":745,"line":811},[743,2749,2750],{"class":2675},"      matrix",[743,2752,2717],{"class":874},[743,2754,2755,2758,2760,2763,2765,2768,2770,2773],{"class":745,"line":816},[743,2756,2757],{"class":2675},"        php",[743,2759,2694],{"class":874},[743,2761,2762],{"class":758},"\"8.0\"",[743,2764,1132],{"class":874},[743,2766,2767],{"class":758},"\"8.1\"",[743,2769,1132],{"class":874},[743,2771,2772],{"class":758},"\"8.2\"",[743,2774,2705],{"class":874},[743,2776,2777],{"class":745,"line":822},[743,2778,775],{"emptyLinePlaceholder":774},[743,2780,2781,2784],{"class":745,"line":959},[743,2782,2783],{"class":2675},"    steps",[743,2785,2717],{"class":874},[743,2787,2788,2791,2794,2796],{"class":745,"line":965},[743,2789,2790],{"class":874},"      - ",[743,2792,2793],{"class":2675},"uses",[743,2795,2679],{"class":874},[743,2797,2798],{"class":758},"actions\u002Fcheckout@v3\n",[743,2800,2801],{"class":745,"line":977},[743,2802,775],{"emptyLinePlaceholder":774},[743,2804,2805,2807,2809,2811],{"class":745,"line":982},[743,2806,2790],{"class":874},[743,2808,2676],{"class":2675},[743,2810,2679],{"class":874},[743,2812,2813],{"class":758},"Setup PHP\n",[743,2815,2816,2819,2821],{"class":745,"line":1008},[743,2817,2818],{"class":2675},"        uses",[743,2820,2679],{"class":874},[743,2822,2823],{"class":758},"shivammathur\u002Fsetup-php@v2\n",[743,2825,2826,2829],{"class":745,"line":1023},[743,2827,2828],{"class":2675},"        with",[743,2830,2717],{"class":874},[743,2832,2833,2836,2838],{"class":745,"line":1036},[743,2834,2835],{"class":2675},"          php-version",[743,2837,2679],{"class":874},[743,2839,2840],{"class":758},"${{ matrix.php }}\n",[743,2842,2843,2846,2848],{"class":745,"line":1050},[743,2844,2845],{"class":2675},"          extensions",[743,2847,2679],{"class":874},[743,2849,2850],{"class":758},"json, mbstring\n",[743,2852,2853,2856,2858],{"class":745,"line":1063},[743,2854,2855],{"class":2675},"          coverage",[743,2857,2679],{"class":874},[743,2859,2860],{"class":758},"xdebug\n",[743,2862,2863],{"class":745,"line":1077},[743,2864,775],{"emptyLinePlaceholder":774},[743,2866,2867,2869,2871,2873],{"class":745,"line":1083},[743,2868,2790],{"class":874},[743,2870,2676],{"class":2675},[743,2872,2679],{"class":874},[743,2874,2875],{"class":758},"Install dependencies\n",[743,2877,2878,2881,2883],{"class":745,"line":1089},[743,2879,2880],{"class":2675},"        run",[743,2882,2679],{"class":874},[743,2884,2885],{"class":758},"composer install --prefer-dist --no-progress\n",[743,2887,2888],{"class":745,"line":1094},[743,2889,775],{"emptyLinePlaceholder":774},[743,2891,2892,2894,2896,2898],{"class":745,"line":1111},[743,2893,2790],{"class":874},[743,2895,2676],{"class":2675},[743,2897,2679],{"class":874},[743,2899,2900],{"class":758},"Run tests\n",[743,2902,2903,2905,2907],{"class":745,"line":1116},[743,2904,2880],{"class":2675},[743,2906,2679],{"class":874},[743,2908,2909],{"class":758},"composer test\n",[704,2911,2913],{"id":2912},"best-practices","Best Practices",[2915,2916,2917,2925,2934,2940,2946],"ol",{},[2918,2919,2920,2924],"li",{},[2921,2922,2923],"strong",{},"Keep tests isolated"," — Each test should be independent",[2918,2926,2927,2930,2931],{},[2921,2928,2929],{},"Use descriptive names"," — ",[712,2932,2933],{},"testMethodNameDoesExpectedBehavior",[2918,2935,2936,2939],{},[2921,2937,2938],{},"Test edge cases"," — Empty inputs, nulls, invalid data",[2918,2941,2942,2945],{},[2921,2943,2944],{},"Mock external dependencies"," — Database, APIs, WordPress functions",[2918,2947,2948,2951],{},[2921,2949,2950],{},"Aim for high coverage"," — Target 80%+ code coverage",[704,2953,2955],{"id":2954},"resources","Resources",[2957,2958,2959,2968,2975],"ul",{},[2918,2960,2961],{},[2962,2963,2967],"a",{"href":2964,"rel":2965},"https:\u002F\u002Fphpunit.de\u002Fdocumentation.html",[2966],"nofollow","PHPUnit Documentation",[2918,2969,2970],{},[2962,2971,2974],{"href":2972,"rel":2973},"https:\u002F\u002Fdeveloper.wordpress.org\u002Fplugins\u002Fdeveloper-tools\u002Ftesting\u002F",[2966],"WordPress Plugin Testing",[2918,2976,2977,2982],{},[2962,2978,2981],{"href":2979,"rel":2980},"https:\u002F\u002Fwpzylos.com",[2966],"wpzylos.com"," — Framework testing guide",[2984,2985,2986],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":730,"searchDepth":29,"depth":29,"links":2988},[2989,2993,2998,2999,3002,3003],{"id":706,"depth":29,"text":707,"children":2990},[2991,2992],{"id":719,"depth":14,"text":720},{"id":733,"depth":14,"text":734},{"id":833,"depth":29,"text":834,"children":2994},[2995,2996,2997],{"id":837,"depth":14,"text":838},{"id":1417,"depth":14,"text":1418},{"id":2284,"depth":14,"text":2285},{"id":2626,"depth":29,"text":2627},{"id":2653,"depth":29,"text":2654,"children":3000},[3001],{"id":2657,"depth":14,"text":2658},{"id":2912,"depth":29,"text":2913},{"id":2954,"depth":29,"text":2955},"md",{},"wpzylos-scaffold",{"title":81,"description":702},"docs\u002Flatest\u002Fpackages\u002Fwpzylos-scaffold\u002Ftesting","OvP62iKD4pzze1HiXH4sY9YPqPZ1LavgB4NZRH7SxWE",[3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3112,3113,3114,3115,3116,3117,3118,3119,3120,3121,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3134,3135,3136,3137,3138,3139,3140,3141,3142,3143,3145,3146,3147,3148,3149,3150,3151,3152,3153,3154,3156,3157,3158,3159,3160,3161,3162,3163,3164,3165,3167,3168,3169,3170,3171,3172,3173,3174,3176,3177,3178,3179,3180,3181,3182,3183,3184,3185,3187,3188,3189,3190,3191,3192,3193,3194,3195,3196,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3252,3253,3254,3255,3257,3258,3259,3260,3261,3262,3263,3264,3265,3266,3268,3269,3270,3271,3272,3273,3274,3275,3276,3278,3279,3280,3281,3282,3283,3284,3285,3286,3287,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3300,3301,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3321,3325],{"path":10,"title":5,"sectionKey":7,"sectionOrder":6,"itemOrder":6,"packageName":730,"depth":6},{"path":12,"title":13,"sectionKey":7,"sectionOrder":6,"itemOrder":14,"packageName":730,"depth":29},{"path":16,"title":17,"sectionKey":7,"sectionOrder":6,"itemOrder":18,"packageName":730,"depth":29},{"path":20,"title":21,"sectionKey":7,"sectionOrder":6,"itemOrder":22,"packageName":730,"depth":29},{"path":24,"title":25,"sectionKey":7,"sectionOrder":6,"itemOrder":22,"packageName":730,"depth":29},{"path":33,"title":34,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":730,"depth":29},{"path":36,"title":37,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":730,"depth":29},{"path":39,"title":40,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":730,"depth":29},{"path":42,"title":43,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":730,"depth":29},{"path":45,"title":46,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":730,"depth":29},{"path":48,"title":49,"sectionKey":30,"sectionOrder":29,"itemOrder":22,"packageName":730,"depth":29},{"path":58,"title":59,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3023,"depth":29},"wpzylos-assets",{"path":61,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3023,"depth":14},{"path":64,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3023,"depth":14},{"path":66,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3023,"depth":14},{"path":68,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3023,"depth":14},{"path":72,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3023,"depth":14},{"path":76,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3023,"depth":14},{"path":80,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3023,"depth":14},{"path":84,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3023,"depth":14},{"path":88,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3023,"depth":14},{"path":93,"title":94,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3034,"depth":29},"wpzylos-cli-core",{"path":96,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3034,"depth":14},{"path":98,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3034,"depth":14},{"path":100,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3034,"depth":14},{"path":102,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3034,"depth":14},{"path":104,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3034,"depth":14},{"path":106,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3034,"depth":14},{"path":108,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3034,"depth":14},{"path":110,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3034,"depth":14},{"path":113,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3034,"depth":14},{"path":116,"title":117,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3045,"depth":29},"wpzylos-cli-devtool",{"path":119,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3045,"depth":14},{"path":121,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3045,"depth":14},{"path":123,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3045,"depth":14},{"path":125,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3045,"depth":14},{"path":127,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3045,"depth":14},{"path":129,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3045,"depth":14},{"path":131,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3045,"depth":14},{"path":133,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3045,"depth":14},{"path":135,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3045,"depth":14},{"path":138,"title":139,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3056,"depth":29},"wpzylos-config",{"path":141,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3056,"depth":14},{"path":143,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3056,"depth":14},{"path":145,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3056,"depth":14},{"path":147,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3056,"depth":14},{"path":149,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3056,"depth":14},{"path":151,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3056,"depth":14},{"path":153,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3056,"depth":14},{"path":155,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3056,"depth":14},{"path":157,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3056,"depth":14},{"path":160,"title":161,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3067,"depth":29},"wpzylos-container",{"path":163,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3067,"depth":14},{"path":165,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3067,"depth":14},{"path":167,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3067,"depth":14},{"path":169,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3067,"depth":14},{"path":171,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3067,"depth":14},{"path":173,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3067,"depth":14},{"path":175,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3067,"depth":14},{"path":177,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3067,"depth":14},{"path":179,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3067,"depth":14},{"path":182,"title":183,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3078,"depth":29},"wpzylos-core",{"path":185,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3078,"depth":14},{"path":187,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3078,"depth":14},{"path":189,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3078,"depth":14},{"path":191,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3078,"depth":14},{"path":193,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3078,"depth":14},{"path":195,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3078,"depth":14},{"path":197,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3078,"depth":14},{"path":199,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3078,"depth":14},{"path":201,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3078,"depth":14},{"path":204,"title":205,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3089,"depth":29},"wpzylos-database",{"path":207,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3089,"depth":14},{"path":209,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3089,"depth":14},{"path":211,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3089,"depth":14},{"path":213,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3089,"depth":14},{"path":215,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3089,"depth":14},{"path":217,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3089,"depth":14},{"path":219,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3089,"depth":14},{"path":221,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3089,"depth":14},{"path":223,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3089,"depth":14},{"path":226,"title":227,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3100,"depth":29},"wpzylos-events",{"path":229,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3100,"depth":14},{"path":231,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3100,"depth":14},{"path":233,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3100,"depth":14},{"path":235,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3100,"depth":14},{"path":237,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3100,"depth":14},{"path":239,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3100,"depth":14},{"path":241,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3100,"depth":14},{"path":243,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3100,"depth":14},{"path":245,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3100,"depth":14},{"path":248,"title":249,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3111,"depth":29},"wpzylos-hooks",{"path":251,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3111,"depth":14},{"path":253,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3111,"depth":14},{"path":255,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3111,"depth":14},{"path":257,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3111,"depth":14},{"path":260,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3111,"depth":14},{"path":262,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3111,"depth":14},{"path":264,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3111,"depth":14},{"path":266,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3111,"depth":14},{"path":268,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3111,"depth":14},{"path":271,"title":272,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3122,"depth":29},"wpzylos-http",{"path":274,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3122,"depth":14},{"path":276,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3122,"depth":14},{"path":278,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3122,"depth":14},{"path":280,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3122,"depth":14},{"path":282,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3122,"depth":14},{"path":284,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3122,"depth":14},{"path":286,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3122,"depth":14},{"path":288,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3122,"depth":14},{"path":290,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3122,"depth":14},{"path":293,"title":294,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3133,"depth":29},"wpzylos-i18n",{"path":296,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3133,"depth":14},{"path":298,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3133,"depth":14},{"path":300,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3133,"depth":14},{"path":302,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3133,"depth":14},{"path":304,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3133,"depth":14},{"path":306,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3133,"depth":14},{"path":308,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3133,"depth":14},{"path":310,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3133,"depth":14},{"path":312,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3133,"depth":14},{"path":315,"title":316,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3144,"depth":29},"wpzylos-logger",{"path":318,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3144,"depth":14},{"path":320,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3144,"depth":14},{"path":322,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3144,"depth":14},{"path":324,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3144,"depth":14},{"path":326,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3144,"depth":14},{"path":328,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3144,"depth":14},{"path":330,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3144,"depth":14},{"path":332,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3144,"depth":14},{"path":334,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3144,"depth":14},{"path":337,"title":338,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3155,"depth":29},"wpzylos-mail",{"path":340,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3155,"depth":14},{"path":342,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3155,"depth":14},{"path":344,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3155,"depth":14},{"path":346,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3155,"depth":14},{"path":348,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3155,"depth":14},{"path":350,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3155,"depth":14},{"path":352,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3155,"depth":14},{"path":354,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3155,"depth":14},{"path":356,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3155,"depth":14},{"path":359,"title":360,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3166,"depth":29},"wpzylos-mcp",{"path":362,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3166,"depth":14},{"path":364,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3166,"depth":14},{"path":366,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3166,"depth":14},{"path":368,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3166,"depth":14},{"path":370,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3166,"depth":14},{"path":372,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3166,"depth":14},{"path":374,"title":375,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":3166,"depth":14},{"path":378,"title":379,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3175,"depth":29},"wpzylos-migrations",{"path":381,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3175,"depth":14},{"path":383,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3175,"depth":14},{"path":385,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3175,"depth":14},{"path":387,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3175,"depth":14},{"path":389,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3175,"depth":14},{"path":391,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3175,"depth":14},{"path":393,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3175,"depth":14},{"path":395,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3175,"depth":14},{"path":397,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3175,"depth":14},{"path":400,"title":401,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3186,"depth":29},"wpzylos-model",{"path":403,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3186,"depth":14},{"path":405,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3186,"depth":14},{"path":407,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3186,"depth":14},{"path":409,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3186,"depth":14},{"path":411,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3186,"depth":14},{"path":413,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3186,"depth":14},{"path":415,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3186,"depth":14},{"path":417,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3186,"depth":14},{"path":419,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3186,"depth":14},{"path":422,"title":423,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3197,"depth":29},"wpzylos-notification",{"path":425,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3197,"depth":14},{"path":427,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3197,"depth":14},{"path":429,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3197,"depth":14},{"path":431,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3197,"depth":14},{"path":433,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3197,"depth":14},{"path":435,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3197,"depth":14},{"path":437,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3197,"depth":14},{"path":439,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3197,"depth":14},{"path":441,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3197,"depth":14},{"path":444,"title":445,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3208,"depth":29},"wpzylos-queue",{"path":447,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3208,"depth":14},{"path":449,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3208,"depth":14},{"path":451,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3208,"depth":14},{"path":453,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3208,"depth":14},{"path":455,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3208,"depth":14},{"path":457,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3208,"depth":14},{"path":459,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3208,"depth":14},{"path":461,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3208,"depth":14},{"path":463,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3208,"depth":14},{"path":466,"title":467,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3219,"depth":29},"wpzylos-requirements",{"path":469,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3219,"depth":14},{"path":471,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3219,"depth":14},{"path":473,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3219,"depth":14},{"path":475,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3219,"depth":14},{"path":477,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3219,"depth":14},{"path":479,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3219,"depth":14},{"path":481,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3219,"depth":14},{"path":483,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3219,"depth":14},{"path":485,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3219,"depth":14},{"path":488,"title":489,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3230,"depth":29},"wpzylos-routing",{"path":491,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3230,"depth":14},{"path":493,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3230,"depth":14},{"path":495,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3230,"depth":14},{"path":497,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3230,"depth":14},{"path":499,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3230,"depth":14},{"path":501,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3230,"depth":14},{"path":503,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3230,"depth":14},{"path":505,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3230,"depth":14},{"path":507,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3230,"depth":14},{"path":509,"title":510,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":3230,"depth":14},{"path":512,"title":513,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":3230,"depth":14},{"path":516,"title":517,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3006,"depth":29},{"path":519,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3006,"depth":14},{"path":521,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3006,"depth":14},{"path":523,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3006,"depth":14},{"path":525,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3006,"depth":14},{"path":527,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3006,"depth":14},{"path":529,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3006,"depth":14},{"path":531,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3006,"depth":14},{"path":533,"title":534,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3006,"depth":14},{"path":536,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3006,"depth":14},{"path":538,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3006,"depth":14},{"path":540,"title":541,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":3006,"depth":14},{"path":543,"title":544,"sectionKey":53,"sectionOrder":14,"itemOrder":22,"packageName":3006,"depth":14},{"path":547,"title":548,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3256,"depth":29},"wpzylos-scheduler",{"path":550,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3256,"depth":14},{"path":552,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3256,"depth":14},{"path":554,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3256,"depth":14},{"path":556,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3256,"depth":14},{"path":558,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3256,"depth":14},{"path":560,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3256,"depth":14},{"path":562,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3256,"depth":14},{"path":564,"title":85,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3256,"depth":14},{"path":566,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3256,"depth":14},{"path":569,"title":570,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3267,"depth":29},"wpzylos-security",{"path":572,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3267,"depth":14},{"path":574,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3267,"depth":14},{"path":576,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3267,"depth":14},{"path":578,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3267,"depth":14},{"path":580,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3267,"depth":14},{"path":582,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3267,"depth":14},{"path":584,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3267,"depth":14},{"path":586,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3267,"depth":14},{"path":589,"title":590,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3277,"depth":29},"wpzylos-validation",{"path":592,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3277,"depth":14},{"path":594,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3277,"depth":14},{"path":596,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3277,"depth":14},{"path":598,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3277,"depth":14},{"path":600,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3277,"depth":14},{"path":602,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3277,"depth":14},{"path":604,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3277,"depth":14},{"path":606,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3277,"depth":14},{"path":608,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3277,"depth":14},{"path":611,"title":612,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3288,"depth":29},"wpzylos-views",{"path":614,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3288,"depth":14},{"path":616,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3288,"depth":14},{"path":618,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3288,"depth":14},{"path":620,"title":258,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3288,"depth":14},{"path":622,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3288,"depth":14},{"path":624,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3288,"depth":14},{"path":626,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3288,"depth":14},{"path":628,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3288,"depth":14},{"path":630,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3288,"depth":14},{"path":633,"title":634,"sectionKey":53,"sectionOrder":14,"itemOrder":6,"packageName":3299,"depth":29},"wpzylos-wp-cli",{"path":636,"title":62,"sectionKey":53,"sectionOrder":14,"itemOrder":29,"packageName":3299,"depth":14},{"path":638,"title":13,"sectionKey":53,"sectionOrder":14,"itemOrder":14,"packageName":3299,"depth":14},{"path":640,"title":17,"sectionKey":53,"sectionOrder":14,"itemOrder":18,"packageName":3299,"depth":14},{"path":642,"title":69,"sectionKey":53,"sectionOrder":14,"itemOrder":70,"packageName":3299,"depth":14},{"path":644,"title":73,"sectionKey":53,"sectionOrder":14,"itemOrder":74,"packageName":3299,"depth":14},{"path":646,"title":77,"sectionKey":53,"sectionOrder":14,"itemOrder":78,"packageName":3299,"depth":14},{"path":648,"title":81,"sectionKey":53,"sectionOrder":14,"itemOrder":82,"packageName":3299,"depth":14},{"path":650,"title":111,"sectionKey":53,"sectionOrder":14,"itemOrder":86,"packageName":3299,"depth":14},{"path":652,"title":89,"sectionKey":53,"sectionOrder":14,"itemOrder":90,"packageName":3299,"depth":14},{"path":658,"title":659,"sectionKey":655,"sectionOrder":18,"itemOrder":6,"packageName":730,"depth":6},{"path":661,"title":544,"sectionKey":655,"sectionOrder":18,"itemOrder":22,"packageName":730,"depth":29},{"path":667,"title":668,"sectionKey":664,"sectionOrder":70,"itemOrder":29,"packageName":730,"depth":29},{"path":674,"title":675,"sectionKey":671,"sectionOrder":74,"itemOrder":29,"packageName":730,"depth":29},{"path":677,"title":678,"sectionKey":671,"sectionOrder":74,"itemOrder":22,"packageName":730,"depth":29},{"path":680,"title":681,"sectionKey":671,"sectionOrder":74,"itemOrder":22,"packageName":730,"depth":29},{"path":688,"title":689,"sectionKey":685,"sectionOrder":78,"itemOrder":29,"packageName":730,"depth":29},{"path":3317,"title":3318,"sectionKey":3319,"sectionOrder":3320,"itemOrder":90,"packageName":730,"depth":6},"\u002Fdocs\u002Flatest\u002Ftroubleshooting","System Troubleshooting","troubleshooting",99,{"path":3322,"title":3323,"sectionKey":3324,"sectionOrder":3320,"itemOrder":22,"packageName":730,"depth":6},"\u002Fdocs\u002Flatest\u002Frelease-checklist","Release Checklist","release-checklist",{"path":3326,"title":3327,"sectionKey":3328,"sectionOrder":3320,"itemOrder":22,"packageName":730,"depth":6},"\u002Fdocs\u002Flatest\u002Frules","WPZylos Framework Rules","rules",1784547696439]