writeln( 'Loading WP core... (' . $wpLoadFile . ')' ); require_once $wpLoadFile; /** * @property IntegrationTester $tester */ abstract class MailPoetTest extends \Codeception\TestCase\Test { // phpcs:ignore public Container $diContainer; protected $backupGlobals = false; protected $backupStaticAttributes = false; protected $runTestInSeparateProcess = false; protected $preserveGlobalState = false; public function setUp(): void { $this->initContainer(); parent::setUp(); } protected function checkValidHTML( string $html ): void { $dom = new \DOMDocument(); libxml_use_internal_errors( true ); $dom->loadHTML( $html ); // Check for errors during parsing $errors = libxml_get_errors(); libxml_clear_errors(); $this->assertEmpty( $errors, 'HTML is not valid: ' . $html ); } public function getServiceWithOverrides( string $id, array $overrides ) { $instance = $this->diContainer->get( $id ); return Stub::copy( $instance, $overrides ); } protected function initContainer(): void { $container = new Container(); // Start: MailPoet plugin dependencies $container->set( Initializer::class, function () { return new Initializer(); } ); $container->set( Cdn_Asset_Url::class, function () { return new Cdn_Asset_Url( 'http://localhost' ); } ); $container->set( Email_Api_Controller::class, function () { return new Email_Api_Controller(); } ); $container->set( BlockTypesController::class, function () { return $this->createMock( BlockTypesController::class ); } ); // End: MailPoet plugin dependencies $container->set( Utils::class, function () { return new Utils(); } ); $container->set( Theme_Controller::class, function () { return new Theme_Controller(); } ); $container->set( Settings_Controller::class, function ( $container ) { return new Settings_Controller( $container->get( Theme_Controller::class ) ); } ); $container->set( Settings_Controller::class, function ( $container ) { return new Settings_Controller( $container->get( Theme_Controller::class ) ); } ); $container->set( Templates::class, function ( $container ) { return new Templates( $container->get( Utils::class ) ); } ); $container->set( Template_Preview::class, function ( $container ) { return new Template_Preview( $container->get( Theme_Controller::class ), $container->get( Settings_Controller::class ), $container->get( Templates::class ), ); } ); $container->set( Patterns::class, function ( $container ) { return new Patterns( $container->get( Cdn_Asset_Url::class ), ); } ); $container->set( Cleanup_Preprocessor::class, function () { return new Cleanup_Preprocessor(); } ); $container->set( Blocks_Width_Preprocessor::class, function () { return new Blocks_Width_Preprocessor(); } ); $container->set( Typography_Preprocessor::class, function ( $container ) { return new Typography_Preprocessor( $container->get( Settings_Controller::class ) ); } ); $container->set( Spacing_Preprocessor::class, function () { return new Spacing_Preprocessor(); } ); $container->set( Highlighting_Postprocessor::class, function () { return new Highlighting_Postprocessor(); } ); $container->set( Variables_Postprocessor::class, function ( $container ) { return new Variables_Postprocessor( $container->get( Theme_Controller::class ) ); } ); $container->set( Process_Manager::class, function ( $container ) { return new Process_Manager( $container->get( Cleanup_Preprocessor::class ), $container->get( Blocks_Width_Preprocessor::class ), $container->get( Typography_Preprocessor::class ), $container->get( Spacing_Preprocessor::class ), $container->get( Highlighting_Postprocessor::class ), $container->get( Variables_Postprocessor::class ), ); } ); $container->set( Blocks_Registry::class, function () { return new Blocks_Registry(); } ); $container->set( Content_Renderer::class, function ( $container ) { return new Content_Renderer( $container->get( Process_Manager::class ), $container->get( Blocks_Registry::class ), $container->get( Settings_Controller::class ), $container->get( Theme_Controller::class ), ); } ); $container->set( Renderer::class, function ( $container ) { return new Renderer( $container->get( Content_Renderer::class ), $container->get( Templates::class ), $container->get( Theme_Controller::class ), ); } ); $container->set( Email_Editor::class, function ( $container ) { return new Email_Editor( $container->get( Email_Api_Controller::class ), $container->get( Templates::class ), $container->get( Template_Preview::class ), $container->get( Patterns::class ), $container->get( Settings_Controller::class ), ); } ); $this->diContainer = $container; } }