subscriber = Subscriber::create(); $this->subscriber->email = 'subscriber@example.com'; $this->segments = [Segment::create(), Segment::create()]; $this->segments[0]->name = 'List1'; $this->segments[1]->name = 'List2'; } function testItDoesNotSendIfNoSettings() { Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, null); $mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this); $service = new NewSubscriberNotificationMailer($mailer); $service->send($this->subscriber, $this->segments); } function testItDoesNotSendIfSettingsDoesNotHaveEnabled() { Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, []); $mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this); $service = new NewSubscriberNotificationMailer($mailer); $service->send($this->subscriber, $this->segments); } function testItDoesNotSendIfSettingsDoesNotHaveAddress() { Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => false]); $mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this); $service = new NewSubscriberNotificationMailer($mailer); $service->send($this->subscriber, $this->segments); } function testItDoesNotSendIfDisabled() { Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => false, 'address' => 'a@b.c']); $mailer = Stub::makeEmpty(Mailer::class, ['getSenderNameAndAddress' => Expected::never()], $this); $service = new NewSubscriberNotificationMailer($mailer); $service->send($this->subscriber, $this->segments); } function testItSends() { Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => true, 'address' => 'a@b.c']); $mailer = Stub::makeEmpty(Mailer::class, [ 'getSenderNameAndAddress' => Expected::once(function($sender) { expect($sender)->count(2); expect($sender['address'])->startsWith('wordpress@'); expect($sender['name'])->startsWith('wordpress@'); }), 'send' => Expected::once(function($newsletter, $subscriber) { expect($subscriber)->equals('a@b.c'); expect($newsletter)->hasKey('subject'); expect($newsletter)->hasKey('body'); expect($newsletter)->count(2); expect($newsletter['subject'])->equals('New subscriber to List1, List2'); expect($newsletter['body'])->hasKey('html'); expect($newsletter['body'])->hasKey('text'); expect($newsletter['body'])->count(2); expect($newsletter['body']['text'])->contains('subscriber@example.com'); expect($newsletter['body']['html'])->contains('subscriber@example.com'); }), ], $this); $service = new NewSubscriberNotificationMailer($mailer); $service->send($this->subscriber, $this->segments); } function testItRemovesWwwFromSenderAddress() { Setting::setValue(NewSubscriberNotificationMailer::SETTINGS_KEY, ['enabled' => true,'address' => 'a@b.c']); update_option( 'home', 'http://www.example.com/xyz' ); $mailer = Stub::makeEmpty(Mailer::class, [ 'getSenderNameAndAddress' => Expected::once(function($sender) { expect($sender)->count(2); expect($sender['address'])->equals('wordpress@example.com'); expect($sender['name'])->equals('wordpress@example.com'); }), ], $this); $service = new NewSubscriberNotificationMailer($mailer); $service->send($this->subscriber, $this->segments); } }