entityManager ->createQueryBuilder() ->delete() ->from(NewsletterEntity::class, 'n') ->getQuery() ->execute(); $this->entityManager ->createQueryBuilder() ->delete() ->from(SettingEntity::class, 's') ->getQuery() ->execute(); $this->wp = new WPFunctions(); $this->settings = SettingsController::getInstance(); $this->originalWcSettings = $this->settings->get('woocommerce'); $this->newslettersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class); $this->transactionalEmails = new TransactionalEmails( $this->wp, $this->settings, ContainerWrapper::getInstance()->get(Template::class), Stub::makeEmpty(WooCommerceHelper::class), $this->newslettersRepository ); $this->settings->set('woocommerce', $this->originalWcSettings); } public function testInitCreatesTransactionalEmailAndSavesItsId() { $this->transactionalEmails->init(); $email = $this->newslettersRepository->findOneBy(['type' => Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL]); assert($email instanceof NewsletterEntity); $id = $this->settings->get(TransactionalEmails::SETTING_EMAIL_ID, null); expect($email)->notEmpty(); expect($id)->notNull(); expect($email->getId())->equals($id); } public function testInitDoesntCreateTransactionalEmailIfSettingAlreadySet() { $this->settings->set(TransactionalEmails::SETTING_EMAIL_ID, 1); $this->transactionalEmails->init(); $email = $this->newslettersRepository->findOneBy(['type' => Newsletter::TYPE_WC_TRANSACTIONAL_EMAIL]); expect($email)->equals(null); } public function testInitUsesImageFromWCSettings() { $wp = Stub::make(new WPFunctions, ['getOption' => function($name) { if ($name == 'woocommerce_email_header_image') { return 'my-awesome-image-url'; } }]); $transactionalEmails = new TransactionalEmails( $wp, $this->settings, ContainerWrapper::getInstance()->get(Template::class), Stub::makeEmpty(WooCommerceHelper::class), $this->newslettersRepository ); $transactionalEmails->init(); $email = $this->newslettersRepository->findOneBy([ 'type' => NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL, ]); assert($email instanceof NewsletterEntity); expect($email)->notEmpty(); expect(json_encode($email->getBody()))->stringContainsString('my-awesome-image-url'); } public function testInitStripsUnwantedTagsFromWCFooterText() { $optionOriginalValue = $this->wp->getOption('woocommerce_email_footer_text'); $this->wp->updateOption('woocommerce_email_footer_text', '
Text Link
Text Link
'); $this->wp->updateOption('woocommerce_email_footer_text', $optionOriginalValue); } }