Move onSettingsChange from Bridge service to SettingsChangeHandler
Bridge is a low level service that processes requests and responses to/from Bridge API. This change is needed so that we can remove dependency on MailPoet\Util\License\Features\Subscribers service from the Bridge. The dependecy is a higher level service and may easily cause a circular dependency issue. The SettingsChangeHandler is service for handling side effects when saving settings. This feels as a better place to put the functionality. [MAILPOET-5191]
This commit is contained in:
committed by
Veljko V
parent
ab19ef92d5
commit
cd5a023b35
@@ -5,7 +5,10 @@ namespace MailPoet\Settings;
|
||||
use MailPoet\Cron\Workers\InactiveSubscribers;
|
||||
use MailPoet\Cron\Workers\WooCommerceSync;
|
||||
use MailPoet\Entities\ScheduledTaskEntity;
|
||||
use MailPoet\Mailer\Mailer;
|
||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||
use MailPoet\Services\Bridge;
|
||||
use MailPoet\Services\SubscribersCountReporter;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
|
||||
@@ -79,6 +82,49 @@ class SettingsChangeHandlerTest extends \MailPoetTest {
|
||||
return $task;
|
||||
}
|
||||
|
||||
public function testItChecksAndStoresKeysWhenUpdatingBridge() {
|
||||
$key = 'valid-key';
|
||||
$settings = [];
|
||||
$settings[Mailer::MAILER_CONFIG_SETTING_NAME]['mailpoet_api_key'] = $key;
|
||||
$settings['premium']['premium_key'] = $key;
|
||||
$response = ['state' => Bridge::KEY_VALID];
|
||||
|
||||
$bridge = $this->createMock(Bridge::class);
|
||||
$bridge->expects($this->once())
|
||||
->method('checkMSSKey')
|
||||
->with($this->equalTo($key))
|
||||
->willReturn($response);
|
||||
$bridge->expects($this->once())
|
||||
->method('storeMSSKeyAndState')
|
||||
->with(
|
||||
$this->equalTo($key),
|
||||
$this->equalTo($response)
|
||||
);
|
||||
|
||||
$bridge->expects($this->once())
|
||||
->method('checkPremiumKey')
|
||||
->with($this->equalTo($key))
|
||||
->willReturn($response);
|
||||
$bridge->expects($this->once())
|
||||
->method('storePremiumKeyAndState')
|
||||
->with(
|
||||
$this->equalTo($key),
|
||||
$this->equalTo($response)
|
||||
);
|
||||
|
||||
$countReporterMock = $this->createMock(SubscribersCountReporter::class);
|
||||
$countReporterMock->expects($this->once())
|
||||
->method('report')
|
||||
->with($this->equalTo($key));
|
||||
|
||||
$changeHandler = $this->getServiceWithOverrides(SettingsChangeHandler::class, [
|
||||
'bridge' => $bridge,
|
||||
'subscribersCountReporter' => $countReporterMock,
|
||||
]);
|
||||
|
||||
$changeHandler->updateBridge($settings);
|
||||
}
|
||||
|
||||
private function getScheduledTaskByType(string $type): ?ScheduledTaskEntity {
|
||||
return $this->tasksRepository->findOneBy([
|
||||
'type' => $type,
|
||||
|
Reference in New Issue
Block a user