cleanup(); $this->formRenderer = $this->diContainer->get(ManageSubscriptionFormRenderer::class); parent::_before(); } public function testItGeneratesForm() { $subscriber = $this->getSubscriber($this->getSegment()); $form = $this->formRenderer->renderForm(Subscriber::findOne($subscriber->getId())); expect($form)->regExp('/
/'); expect($form)->stringContainsString(''); expect($form)->regExp('//'); expect($form)->regExp('//'); expect($form)->regExp('/ Test segment/'); expect($form)->stringContainsString('Need to change your email address? Unsubscribe here, then simply sign up again.'); } public function testItAppliesFieldsFilter() { $subscriber = $this->getSubscriber($this->getSegment()); $wp = $this->diContainer->get(WPFunctions::class); $wp->addFilter('mailpoet_manage_subscription_page_form_fields', function($fields) { $fields[] = [ 'type' => 'text', 'name' => 'Additional info', 'id' => 'additional_info', 'params' => [ 'label' => 'Additional info', ], ]; return $fields; }); $form = $this->formRenderer->renderForm(Subscriber::findOne($subscriber->getId())); expect($form)->regExp('//'); } private function getSegment(): SegmentEntity { $segment = new SegmentEntity('Test segment', SegmentEntity::TYPE_DEFAULT, 'Description'); $this->entityManager->persist($segment); $this->entityManager->flush(); return $segment; } private function getSubscriber(SegmentEntity $segment = null): SubscriberEntity { $subscriber = new SubscriberEntity(); $subscriber->setStatus(SubscriberEntity::STATUS_SUBSCRIBED); $subscriber->setFirstName('Fname'); $subscriber->setLastName('Lname'); $subscriber->setEmail('subscriber@test.com'); if ($segment) { $subscriberSegment = new SubscriberSegmentEntity($segment, $subscriber, SubscriberEntity::STATUS_SUBSCRIBED); $this->entityManager->persist($subscriberSegment); $subscriber->getSegments()->add($subscriberSegment); } $this->entityManager->persist($subscriber); $this->entityManager->flush(); return $subscriber; } private function cleanup() { $this->truncateEntity(SubscriberEntity::class); $this->truncateEntity(SubscriberSegmentEntity::class); $this->truncateEntity(SegmentEntity::class); } public function _after() { $this->cleanup(); } }