Unify responses of newsletter editing API methods with get()

[MAILPOET-5779]
This commit is contained in:
Jan Jakes
2024-01-16 15:37:42 +01:00
committed by Veljko V
parent a50fcc67ba
commit e0b6cf7b41
2 changed files with 57 additions and 9 deletions

View File

@ -163,6 +163,8 @@ class Newsletters extends APIEndpoint {
$newsletter = $this->newsletterSaveController->save($data); $newsletter = $this->newsletterSaveController->save($data);
$response = $this->newslettersResponseBuilder->build($newsletter, [ $response = $this->newslettersResponseBuilder->build($newsletter, [
NewslettersResponseBuilder::RELATION_SEGMENTS, NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
]); ]);
$previewUrl = $this->getViewInBrowserUrl($newsletter); $previewUrl = $this->getViewInBrowserUrl($newsletter);
$response = $this->wp->applyFilters('mailpoet_api_newsletters_save_after', $response); $response = $this->wp->applyFilters('mailpoet_api_newsletters_save_after', $response);
@ -237,7 +239,11 @@ class Newsletters extends APIEndpoint {
$this->newslettersRepository->flush(); $this->newslettersRepository->flush();
return $this->successResponse( return $this->successResponse(
$this->newslettersResponseBuilder->build($newsletter) $this->newslettersResponseBuilder->build($newsletter, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
])
); );
} }
@ -247,7 +253,11 @@ class Newsletters extends APIEndpoint {
$this->newslettersRepository->bulkRestore([$newsletter->getId()]); $this->newslettersRepository->bulkRestore([$newsletter->getId()]);
$this->newslettersRepository->refresh($newsletter); $this->newslettersRepository->refresh($newsletter);
return $this->successResponse( return $this->successResponse(
$this->newslettersResponseBuilder->build($newsletter), $this->newslettersResponseBuilder->build($newsletter, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
]),
['count' => 1] ['count' => 1]
); );
} else { } else {
@ -263,7 +273,11 @@ class Newsletters extends APIEndpoint {
$this->newslettersRepository->bulkTrash([$newsletter->getId()]); $this->newslettersRepository->bulkTrash([$newsletter->getId()]);
$this->newslettersRepository->refresh($newsletter); $this->newslettersRepository->refresh($newsletter);
return $this->successResponse( return $this->successResponse(
$this->newslettersResponseBuilder->build($newsletter), $this->newslettersResponseBuilder->build($newsletter, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
]),
['count' => 1] ['count' => 1]
); );
} else { } else {
@ -294,7 +308,11 @@ class Newsletters extends APIEndpoint {
$duplicate = $this->newsletterSaveController->duplicate($newsletter); $duplicate = $this->newsletterSaveController->duplicate($newsletter);
$this->wp->doAction('mailpoet_api_newsletters_duplicate_after', $newsletter, $duplicate); $this->wp->doAction('mailpoet_api_newsletters_duplicate_after', $newsletter, $duplicate);
return $this->successResponse( return $this->successResponse(
$this->newslettersResponseBuilder->build($duplicate), $this->newslettersResponseBuilder->build($duplicate, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
]),
['count' => 1] ['count' => 1]
); );
} else { } else {

View File

@ -201,7 +201,13 @@ class NewslettersTest extends \MailPoetTest {
verify($response->status)->equals(APIResponse::STATUS_OK); verify($response->status)->equals(APIResponse::STATUS_OK);
$updatedNewsletter = $this->newsletterRepository->findOneById($this->newsletter->getId()); $updatedNewsletter = $this->newsletterRepository->findOneById($this->newsletter->getId());
$this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter); // PHPStan $this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter); // PHPStan
verify($response->data)->equals($this->newslettersResponseBuilder->build($updatedNewsletter, [NewslettersResponseBuilder::RELATION_SEGMENTS])); verify($response->data)->equals(
$this->newslettersResponseBuilder->build($updatedNewsletter, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
])
);
verify($updatedNewsletter->getType())->equals('Updated type'); verify($updatedNewsletter->getType())->equals('Updated type');
verify($updatedNewsletter->getSubject())->equals('Updated subject'); verify($updatedNewsletter->getSubject())->equals('Updated subject');
verify($updatedNewsletter->getPreheader())->equals('Updated preheader'); verify($updatedNewsletter->getPreheader())->equals('Updated preheader');
@ -347,7 +353,13 @@ class NewslettersTest extends \MailPoetTest {
verify($response->status)->equals(APIResponse::STATUS_OK); verify($response->status)->equals(APIResponse::STATUS_OK);
$newsletter = $this->newsletterRepository->findOneById($this->newsletter->getId()); $newsletter = $this->newsletterRepository->findOneById($this->newsletter->getId());
$this->assertInstanceOf(NewsletterEntity::class, $newsletter); $this->assertInstanceOf(NewsletterEntity::class, $newsletter);
verify($response->data)->equals($this->newslettersResponseBuilder->build($newsletter)); verify($response->data)->equals(
$this->newslettersResponseBuilder->build($newsletter, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
])
);
verify($response->data['deleted_at'])->null(); verify($response->data['deleted_at'])->null();
verify($response->meta['count'])->equals(1); verify($response->meta['count'])->equals(1);
} }
@ -357,7 +369,13 @@ class NewslettersTest extends \MailPoetTest {
verify($response->status)->equals(APIResponse::STATUS_OK); verify($response->status)->equals(APIResponse::STATUS_OK);
$newsletter = $this->newsletterRepository->findOneById($this->newsletter->getId()); $newsletter = $this->newsletterRepository->findOneById($this->newsletter->getId());
$this->assertInstanceOf(NewsletterEntity::class, $newsletter); $this->assertInstanceOf(NewsletterEntity::class, $newsletter);
verify($response->data)->equals($this->newslettersResponseBuilder->build($newsletter)); verify($response->data)->equals(
$this->newslettersResponseBuilder->build($newsletter, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
])
);
verify($response->data['deleted_at'])->notNull(); verify($response->data['deleted_at'])->notNull();
verify($response->meta['count'])->equals(1); verify($response->meta['count'])->equals(1);
} }
@ -382,7 +400,13 @@ class NewslettersTest extends \MailPoetTest {
verify($response->status)->equals(APIResponse::STATUS_OK); verify($response->status)->equals(APIResponse::STATUS_OK);
$newsletterCopy = $this->newsletterRepository->findOneBy(['subject' => 'Copy of My Standard Newsletter']); $newsletterCopy = $this->newsletterRepository->findOneBy(['subject' => 'Copy of My Standard Newsletter']);
$this->assertInstanceOf(NewsletterEntity::class, $newsletterCopy); $this->assertInstanceOf(NewsletterEntity::class, $newsletterCopy);
verify($response->data)->equals($this->newslettersResponseBuilder->build($newsletterCopy)); verify($response->data)->equals(
$this->newslettersResponseBuilder->build($newsletterCopy, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
])
);
verify($response->meta['count'])->equals(1); verify($response->meta['count'])->equals(1);
$hookName = 'mailpoet_api_newsletters_duplicate_after'; $hookName = 'mailpoet_api_newsletters_duplicate_after';
@ -393,7 +417,13 @@ class NewslettersTest extends \MailPoetTest {
verify($response->status)->equals(APIResponse::STATUS_OK); verify($response->status)->equals(APIResponse::STATUS_OK);
$newsletterCopy = $this->newsletterRepository->findOneBy(['subject' => 'Copy of My Post Notification']); $newsletterCopy = $this->newsletterRepository->findOneBy(['subject' => 'Copy of My Post Notification']);
$this->assertInstanceOf(NewsletterEntity::class, $newsletterCopy); $this->assertInstanceOf(NewsletterEntity::class, $newsletterCopy);
verify($response->data)->equals($this->newslettersResponseBuilder->build($newsletterCopy)); verify($response->data)->equals(
$this->newslettersResponseBuilder->build($newsletterCopy, [
NewslettersResponseBuilder::RELATION_SEGMENTS,
NewslettersResponseBuilder::RELATION_OPTIONS,
NewslettersResponseBuilder::RELATION_QUEUE,
])
);
verify($response->meta['count'])->equals(1); verify($response->meta['count'])->equals(1);
} }