Add tests for remaining NewslettersListingRepository functionality

[MAILPOET-2645]
This commit is contained in:
Jan Jakeš
2020-03-03 16:32:38 +01:00
committed by Jack Kitterhing
parent cf88ada402
commit 310d658647

View File

@@ -103,6 +103,37 @@ class NewsletterListingRepositoryTest extends \MailPoetTest {
expect($newsletters)->count(1);
}
public function testItAppliesTypeParameter() {
$newsletter = new NewsletterEntity();
$newsletter->setType(NewsletterEntity::TYPE_STANDARD);
$newsletter->setSubject('Newsletter subject');
$this->entityManager->persist($newsletter);
$this->entityManager->flush();
$listingHandler = new Handler();
$newsletterListingRepository = $this->diContainer->get(NewsletterListingRepository::class);
// without type
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([]));
expect($newsletters)->count(1);
// with 'standard' type
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'params' => [
'type' => 'standard',
],
]));
expect($newsletters)->count(1);
// with 'welcome' type
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'params' => [
'type' => 'welcome',
],
]));
expect($newsletters)->count(0);
}
public function testItAppliesAutomaticEmailsGroupParameter() {
$newsletterOptionField = new NewsletterOptionFieldEntity();
$newsletterOptionField->setName('group');
@@ -159,6 +190,115 @@ class NewsletterListingRepositoryTest extends \MailPoetTest {
expect($newsletters)->count(2);
}
public function testItAppliesParentIdParameter() {
$parent = new NewsletterEntity();
$parent->setType(NewsletterEntity::TYPE_NOTIFICATION);
$parent->setSubject('Newsletter subject');
$this->entityManager->persist($parent);
$newsletter = new NewsletterEntity();
$newsletter->setParent($parent);
$newsletter->setType(NewsletterEntity::TYPE_NOTIFICATION_HISTORY);
$newsletter->setSubject('Newsletter subject');
$this->entityManager->persist($newsletter);
$this->entityManager->flush();
$listingHandler = new Handler();
$newsletterListingRepository = $this->diContainer->get(NewsletterListingRepository::class);
// existing parent ID
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'params' => [
'parent_id' => (string)$parent->getId(),
],
]));
expect($newsletters)->count(1);
// non-existent parent ID
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'params' => [
'parent_id' => (string)$newsletter->getId(),
],
]));
expect($newsletters)->count(0);
}
public function testItAppliesSort() {
$newsletter1 = new NewsletterEntity();
$newsletter1->setType(NewsletterEntity::TYPE_STANDARD);
$newsletter1->setSubject('Newsletter A');
$this->entityManager->persist($newsletter1);
$newsletter2 = new NewsletterEntity();
$newsletter2->setType(NewsletterEntity::TYPE_WELCOME);
$newsletter2->setSubject('Newsletter B');
$this->entityManager->persist($newsletter2);
$this->entityManager->flush();
$listingHandler = new Handler();
$newsletterListingRepository = $this->diContainer->get(NewsletterListingRepository::class);
// ASC
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'sort_by' => 'subject',
'sort_order' => 'asc',
]));
expect($newsletters)->count(2);
expect($newsletters[0]->getSubject())->same('Newsletter A');
expect($newsletters[1]->getSubject())->same('Newsletter B');
// DESC
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'sort_by' => 'subject',
'sort_order' => 'desc',
]));
expect($newsletters)->count(2);
expect($newsletters[0]->getSubject())->same('Newsletter B');
expect($newsletters[1]->getSubject())->same('Newsletter A');
}
public function testItAppliesLimitAndOffset() {
$newsletter1 = new NewsletterEntity();
$newsletter1->setType(NewsletterEntity::TYPE_STANDARD);
$newsletter1->setSubject('Newsletter A');
$this->entityManager->persist($newsletter1);
$newsletter2 = new NewsletterEntity();
$newsletter2->setType(NewsletterEntity::TYPE_WELCOME);
$newsletter2->setSubject('Newsletter B');
$this->entityManager->persist($newsletter2);
$this->entityManager->flush();
$listingHandler = new Handler();
$newsletterListingRepository = $this->diContainer->get(NewsletterListingRepository::class);
// first page
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'limit' => 1,
'offset' => 0,
]));
expect($newsletters)->count(1);
expect($newsletters[0]->getSubject())->same('Newsletter A');
// second page
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'limit' => 1,
'offset' => 1,
]));
expect($newsletters)->count(1);
expect($newsletters[0]->getSubject())->same('Newsletter B');
// third page
$newsletters = $newsletterListingRepository->getData($listingHandler->getListingDefinition([
'limit' => 1,
'offset' => 2,
]));
expect($newsletters)->count(0);
}
public function _after() {
$this->truncateEntity(NewsletterEntity::class);
$this->truncateEntity(SegmentEntity::class);