segment = $this->getSegment(); $this->subscriber = $this->getSubscriber($this->segment); $this->formRenderer = $this->diContainer->get(ManageSubscriptionFormRenderer::class); parent::_before(); } public function testItGeneratesForm() { $form = $this->formRenderer->renderForm($this->subscriber); verify($form)->stringMatchesRegExp('/
/'); verify($form)->stringContainsString(''); verify($form)->stringMatchesRegExp('//'); verify($form)->stringMatchesRegExp('//'); verify($form)->stringMatchesRegExp('/ Test segment/'); verify($form)->stringMatchesRegExp('//'); verify($form)->stringMatchesRegExp('//'); verify($form)->stringContainsString('Need to change your email address? Unsubscribe using the form below, then simply sign up again.'); } public function testItAppliesFieldsFilter() { $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($this->subscriber); verify($form)->stringMatchesRegExp('//'); } private function getSegment(): SegmentEntity { $segment = new SegmentEntity('Test segment', SegmentEntity::TYPE_DEFAULT, 'Description'); $segment->setDisplayInManageSubscriptionPage(true); $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->getSubscriberSegments()->add($subscriberSegment); } $this->entityManager->persist($subscriber); $this->entityManager->flush(); (new CustomFieldFactory())->withName('custom field 1')->withSubscriber($subscriber->getId(), 'some value')->create(); (new CustomFieldFactory())->withName('custom field 2')->withSubscriber($subscriber->getId(), 'another value')->create(); return $subscriber; } }