| Server IP : 54.94.228.101 / Your IP : 172.28.20.13 Web Server : Apache System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/vinumday2_0/vendor/nztim/mailchimp/tests/ |
Upload File : |
<?php
use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
use NZTim\Mailchimp\Exception\MailchimpBadRequestException;
use NZTim\Mailchimp\Exception\MailchimpInternalErrorException;
use NZTim\Mailchimp\Mailchimp;
use NZTim\Mailchimp\MailchimpApi;
use PHPUnit\Framework\TestCase;
class MailchimpTest extends TestCase
{
use MockeryPHPUnitIntegration;
/** @var Mockery\Mock */
protected $api;
/** @var Mailchimp */
protected $mc;
const LISTID = 'listId';
/** @before */
public function prepare()
{
$this->api = Mockery::mock(MailchimpApi::class);
$this->mc = new Mailchimp('apikey', $this->api);
}
/** @test */
public function get_lists_empty()
{
$this->api->shouldReceive('getLists')->andReturn([]);
$this->assertEquals([], $this->mc->getLists());
}
/** @test */
public function get_lists()
{
$this->api->shouldReceive('getLists')->andReturn(['lists' => ['1', '2', '3']]);
$this->assertEquals(['1', '2', '3'], $this->mc->getLists());
}
/**
* @test
* @expectedException NZTim\Mailchimp\Exception\MailchimpBadRequestException
* @expectedExceptionMessage Mailchimp API error: list id:listId does not exist
*/
public function status_list_not_found()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andThrow(new MailchimpBadRequestException);
$this->api->shouldReceive('responseCodeNotFound')->andReturn(true);
$this->mc->status(self::LISTID, 'user@example.com');
}
/**
* @test
* @expectedException NZTim\Mailchimp\Exception\MailchimpInternalErrorException
* @expectedExceptionMessage Mailchimp API error: Internal error
*/
public function status_api_internal_error()
{
$this->api->shouldReceive('getList')
->with(self::LISTID)
->andThrow(new MailchimpInternalErrorException("Mailchimp API error: Internal error"));
$this->api->shouldReceive('responseCodeNotFound')->andReturn(false);
$this->mc->status(self::LISTID, 'user@example.com');
}
/** @test */
public function status_member_not_found()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andThrow(new MailchimpBadRequestException);
$this->api->shouldReceive('responseCodeNotFound')->andReturn(true);
$this->assertEquals('not found', $this->mc->status(self::LISTID, 'user@example.com'));
}
/**
* @test
* @expectedException NZTim\Mailchimp\Exception\MailchimpException
*/
public function status_unknown_error()
{
$this->api->shouldReceive('getList')->with('listId')->andReturn([]);
$this->api->shouldReceive('getMember')->andReturn([]);
$this->mc->status(self::LISTID, 'user@example.com');
}
/** @test */
public function status_success()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andReturn(['status' => 'subscribed']);
$this->assertEquals('subscribed', $this->mc->status(self::LISTID, 'user@example.com'));
}
/** @test */
public function check_subscribed()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andReturn(['status' => 'subscribed']);
$this->assertTrue($this->mc->check(self::LISTID, 'user@example.com'));
}
/** @test */
public function check_not_subscribed()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andReturn(['status' => 'unsubscribed']);
$this->assertFalse($this->mc->check(self::LISTID, 'user@example.com'));
}
/** @test */
public function subscribe_new_member_confirms_by_default()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andThrow(new MailchimpBadRequestException);
$this->api->shouldReceive('responseCodeNotFound')->andReturn(true);
$this->api->shouldReceive('addUpdate')->with(self::LISTID, 'user@example.com', [], true); // true = confirmation required
$this->mc->subscribe(self::LISTID, 'user@example.com');
}
/** @test */
public function subscribe_existing_member_turns_off_confirm()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andReturn(['status' => 'subscribed']);
$this->api->shouldReceive('addUpdate')->with(self::LISTID, 'test@example.com', [], false);
$this->mc->subscribe(self::LISTID, 'test@example.com', [], true);
}
/** @test */
public function unsubscribe_not_subscribed()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andReturn(['status' => 'unsubscribed']);
$this->mc->unsubscribe(self::LISTID, 'test@example.com');
}
/** @test */
public function unsubscribe()
{
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andReturn(['status' => 'subscribed']);
$this->api->shouldReceive('unsubscribe')->with(self::LISTID, 'test@example.com');
$this->mc->unsubscribe(self::LISTID, 'test@example.com');
}
/** @test */
public function api_passes_call_through()
{
$this->api->shouldReceive('call')->with('someMethod', '/endpoint', ['data' => 123])->andReturn(['test' => 'result']);
$this->assertEquals(['test' => 'result'], $this->mc->api('someMethod', '/endpoint', ['data' => 123]));
}
/** @test */
public function api_handles_endpoint_without_leading_slash()
{
$this->api->shouldReceive('call')->with('get', '/endpoint', [])->andReturn(['data' => 123])->once();
$this->assertEquals(['data' => 123], $this->mc->api('get', 'endpoint'));
}
/** @test */
public function add_update_member_new()
{
$member = (new \NZTim\Mailchimp\Member('test@example.com'));
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andThrow(new MailchimpBadRequestException);
$this->api->shouldReceive('responseCodeNotFound')->andReturn(true);
$this->api->shouldReceive('addUpdateMember')->with(self::LISTID, $member);
$this->mc->addUpdateMember(self::LISTID, $member);
$this->assertEquals('pending', $member->parameters()['status_if_new']);
}
/** @test */
public function add_update_member_existing()
{
$member = (new \NZTim\Mailchimp\Member('test@example.com'));
$this->api->shouldReceive('getList')->with(self::LISTID)->andReturn([]);
$this->api->shouldReceive('getMember')->andReturn(['status' => 'subscribed']);
$this->api->shouldReceive('addUpdateMember')->with(self::LISTID, $member);
$this->mc->addUpdateMember(self::LISTID, $member);
$this->assertEquals('subscribed', $member->parameters()['status']);
}
}