NewsletterTemplateTest.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Newsletter\Controller\Adminhtml;
  7. /**
  8. * @magentoAppArea adminhtml
  9. */
  10. class NewsletterTemplateTest extends \Magento\TestFramework\TestCase\AbstractBackendController
  11. {
  12. /**
  13. * @var string
  14. */
  15. private $formKey;
  16. /**
  17. * @var \Magento\Newsletter\Model\Template
  18. */
  19. protected $model;
  20. /**
  21. * @inheritDoc
  22. */
  23. protected function setUp()
  24. {
  25. parent::setUp();
  26. $formKey = $this->_objectManager->get(\Magento\Framework\Data\Form\FormKey::class);
  27. $this->formKey = $formKey->getFormKey();
  28. $post = [
  29. 'code' => 'test data',
  30. 'subject' => 'test data2',
  31. 'sender_email' => 'sender@email.com',
  32. 'sender_name' => 'Test Sender Name',
  33. 'text' => 'Template Content',
  34. 'form_key' => $this->formKey,
  35. ];
  36. $this->getRequest()->setPostValue($post)->setMethod(\Zend\Http\Request::METHOD_POST);
  37. $this->model = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  38. \Magento\Newsletter\Model\Template::class
  39. );
  40. }
  41. /**
  42. * @inheritDoc
  43. */
  44. protected function tearDown()
  45. {
  46. /**
  47. * Unset messages
  48. */
  49. \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(\Magento\Backend\Model\Session::class)
  50. ->destroy();
  51. $this->model = null;
  52. }
  53. /**
  54. * @magentoAppIsolation enabled
  55. * @magentoDbIsolation enabled
  56. */
  57. public function testSaveActionCreateNewTemplateAndVerifySuccessMessage()
  58. {
  59. $this->getRequest()->setParam('id', $this->model->getId());
  60. $this->dispatch('backend/newsletter/template/save');
  61. /**
  62. * Check that errors was generated and set to session
  63. */
  64. $this->assertSessionMessages($this->isEmpty(), \Magento\Framework\Message\MessageInterface::TYPE_ERROR);
  65. /**
  66. * Check that success message is set
  67. */
  68. $this->assertSessionMessages(
  69. $this->equalTo(['The newsletter template has been saved.']),
  70. \Magento\Framework\Message\MessageInterface::TYPE_SUCCESS
  71. );
  72. }
  73. /**
  74. * @magentoAppIsolation enabled
  75. * @magentoDataFixture Magento/Newsletter/_files/newsletter_sample.php
  76. */
  77. public function testSaveActionEditTemplateAndVerifySuccessMessage()
  78. {
  79. // Loading by code, since ID will vary. template_code is not actually used to load anywhere else.
  80. $this->model->load('some_unique_code', 'template_code');
  81. // Ensure that template is actually loaded so as to prevent a false positive on saving a *new* template
  82. // instead of existing one.
  83. $this->assertEquals('some_unique_code', $this->model->getTemplateCode());
  84. $this->getRequest()->setParam('id', $this->model->getId());
  85. $this->dispatch('backend/newsletter/template/save');
  86. /**
  87. * Check that errors was generated and set to session
  88. */
  89. $this->assertSessionMessages($this->isEmpty(), \Magento\Framework\Message\MessageInterface::TYPE_ERROR);
  90. /**
  91. * Check that success message is set
  92. */
  93. $this->assertSessionMessages(
  94. $this->equalTo(['The newsletter template has been saved.']),
  95. \Magento\Framework\Message\MessageInterface::TYPE_SUCCESS
  96. );
  97. }
  98. /**
  99. * @magentoAppIsolation enabled
  100. * @magentoDataFixture Magento/Newsletter/_files/newsletter_sample.php
  101. */
  102. public function testDeleteActionTemplateAndVerifySuccessMessage()
  103. {
  104. // Loading by code, since ID will vary. template_code is not actually used to load anywhere else.
  105. $this->model->load('some_unique_code', 'template_code');
  106. $this->getRequest()->setParam('id', $this->model->getId());
  107. $this->dispatch('backend/newsletter/template/delete');
  108. /**
  109. * Check that errors was generated and set to session
  110. */
  111. $this->assertSessionMessages($this->isEmpty(), \Magento\Framework\Message\MessageInterface::TYPE_ERROR);
  112. /**
  113. * Check that success message is set
  114. */
  115. $this->assertSessionMessages(
  116. $this->equalTo(['The newsletter template has been deleted.']),
  117. \Magento\Framework\Message\MessageInterface::TYPE_SUCCESS
  118. );
  119. }
  120. /**
  121. * @magentoAppIsolation enabled
  122. * @magentoDataFixture Magento/Newsletter/_files/newsletter_sample.php
  123. */
  124. public function testSaveActionTemplateWithGetAndVerifyRedirect()
  125. {
  126. // Loading by code, since ID will vary. template_code is not actually used to load anywhere else.
  127. $this->model->load('some_unique_code', 'template_code');
  128. $this->getRequest()->setMethod(\Zend\Http\Request::METHOD_GET)->setParam('id', $this->model->getId());
  129. $this->dispatch('backend/newsletter/template/save');
  130. $this->assertEquals(404, $this->getResponse()->getStatusCode());
  131. }
  132. }