Skip to content

Commit 32c500b

Browse files
committed
MC-30604: Storefront: Subscribe/unsubscribe to email newsletter
1 parent bfb133b commit 32c500b

File tree

2 files changed

+28
-14
lines changed

2 files changed

+28
-14
lines changed

dev/tests/integration/testsuite/Magento/Newsletter/Controller/Manage/SaveTest.php

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,15 @@ protected function tearDown()
6262
*
6363
* @dataProvider subscriptionDataProvider
6464
*
65-
* @param string $isSubscribed
65+
* @param bool $isSubscribed
6666
* @param string $expectedMessage
6767
* @return void
6868
*/
69-
public function testSaveAction(string $isSubscribed, string $expectedMessage): void
69+
public function testSaveAction(bool $isSubscribed, string $expectedMessage): void
7070
{
7171
$this->loginCustomer('new_customer@example.com');
72-
$this->getRequest()->setParam('form_key', $this->formKey->getFormKey())
73-
->setParam('is_subscribed', $isSubscribed);
7472
$this->_objectManager->removeSharedInstance(CustomerPlugin::class);
75-
$this->dispatch('newsletter/manage/save');
73+
$this->dispatchSaveAction($isSubscribed);
7674
$this->assertSuccessSubscription($expectedMessage);
7775
}
7876

@@ -83,11 +81,11 @@ public function subscriptionDataProvider(): array
8381
{
8482
return [
8583
'subscribe_customer' => [
86-
'is_subscribed' => 1,
84+
'is_subscribed' => true,
8785
'expected_message' => 'We have saved your subscription.',
8886
],
8987
'unsubscribe_customer' => [
90-
'is_subscribed' => 0,
88+
'is_subscribed' => false,
9189
'expected_message' => 'We have updated your subscription.',
9290
],
9391
];
@@ -102,8 +100,7 @@ public function subscriptionDataProvider(): array
102100
public function testSubscribeWithEnabledConfirmation(): void
103101
{
104102
$this->loginCustomer('new_customer@example.com');
105-
$this->getRequest()->setParam('form_key', $this->formKey->getFormKey())->setParam('is_subscribed', '1');
106-
$this->dispatch('newsletter/manage/save');
103+
$this->dispatchSaveAction(true);
107104
$this->assertSuccessSubscription('A confirmation request has been sent.');
108105
}
109106

@@ -115,12 +112,25 @@ public function testSubscribeWithEnabledConfirmation(): void
115112
public function testUnsubscribeSubscribedCustomer(): void
116113
{
117114
$this->loginCustomer('new_customer@example.com');
118-
$this->getRequest()->setParam('form_key', $this->formKey->getFormKey())->setParam('is_subscribed', '0');
119115
$this->_objectManager->removeSharedInstance(CustomerPlugin::class);
120-
$this->dispatch('newsletter/manage/save');
116+
$this->dispatchSaveAction(false);
121117
$this->assertSuccessSubscription('We have removed your newsletter subscription.');
122118
}
123119

120+
/**
121+
* Dispatch save action with parameters
122+
*
123+
* @param string $isSubscribed
124+
* @return void
125+
*/
126+
private function dispatchSaveAction(bool $isSubscribed): void
127+
{
128+
$this->_objectManager->removeSharedInstance(CustomerPlugin::class);
129+
$this->getRequest()->setParam('form_key', $this->formKey->getFormKey())
130+
->setParam('is_subscribed', $isSubscribed);
131+
$this->dispatch('newsletter/manage/save');
132+
}
133+
124134
/**
125135
* Login customer by email
126136
*

dev/tests/integration/testsuite/Magento/Newsletter/Controller/NewActionTest.php renamed to dev/tests/integration/testsuite/Magento/Newsletter/Controller/Subscriber/NewActionTest.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77

88
namespace Magento\Newsletter\Controller;
99

10+
use Laminas\Stdlib\Parameters;
1011
use Magento\Customer\Api\CustomerRepositoryInterface;
1112
use Magento\Customer\Model\Session;
12-
use Magento\Framework\Webapi\Rest\Request;
13+
use Magento\Framework\App\Request\Http as HttpRequest;
1314
use Magento\Newsletter\Model\ResourceModel\Subscriber as SubscriberResource;
1415
use Magento\Newsletter\Model\ResourceModel\Subscriber\CollectionFactory;
1516
use Magento\TestFramework\TestCase\AbstractController;
@@ -207,7 +208,10 @@ public function testWithEmailAssignedToAnotherCustomer(): void
207208
*/
208209
private function prepareRequest(string $email): void
209210
{
210-
$this->getRequest()->setMethod(Request::HTTP_METHOD_POST);
211+
$parameters = $this->_objectManager->create(Parameters::class);
212+
$parameters->set('HTTP_REFERER', 'http://localhost/testRedirect');
213+
$this->getRequest()->setServer($parameters);
214+
$this->getRequest()->setMethod(HttpRequest::METHOD_POST);
211215
$this->getRequest()->setPostValue(['email' => $email]);
212216
}
213217

@@ -222,7 +226,7 @@ private function performAsserts(string $message): void
222226
if ($message) {
223227
$this->assertSessionMessages($this->equalTo([(string)__($message)]));
224228
}
225-
$this->assertRedirect($this->stringContains('/index.php'));
229+
$this->assertRedirect($this->equalTo('http://localhost/testRedirect'));
226230
}
227231

228232
/**

0 commit comments

Comments
 (0)