diff options
author | Avi Goldman <avrahamymgoldman@gmail.com> | 2016-06-21 15:03:15 -0400 |
---|---|---|
committer | Avi Goldman <avrahamymgoldman@gmail.com> | 2016-06-21 15:03:15 -0400 |
commit | 01345cac8603d4deb38a03fda4ee69670141e06b (patch) | |
tree | d5761875a436084b00e78c628d80edcde8531bf5 | |
parent | 6aa6fa118fdbcd3774b0c780498f5e1a02ba7fa8 (diff) | |
download | php-sparkpost-01345cac8603d4deb38a03fda4ee69670141e06b.zip php-sparkpost-01345cac8603d4deb38a03fda4ee69670141e06b.tar.gz php-sparkpost-01345cac8603d4deb38a03fda4ee69670141e06b.tar.bz2 |
wrote tests to cover Resource and Transmission classes
-rw-r--r-- | lib/SparkPost/Transmission.php | 2 | ||||
-rw-r--r-- | test/unit/TransmissionTest.php | 187 |
2 files changed, 188 insertions, 1 deletions
diff --git a/lib/SparkPost/Transmission.php b/lib/SparkPost/Transmission.php index a3a4fbb..f136d5b 100644 --- a/lib/SparkPost/Transmission.php +++ b/lib/SparkPost/Transmission.php @@ -21,7 +21,7 @@ class Transmission extends Resource } /** - * Runs the given payload through the formatting methods + * Runs the given payload through the formatting functions * * @param array $payload - the request body * diff --git a/test/unit/TransmissionTest.php b/test/unit/TransmissionTest.php new file mode 100644 index 0000000..f0a8ec9 --- /dev/null +++ b/test/unit/TransmissionTest.php @@ -0,0 +1,187 @@ +<?php + +namespace SparkPost\Test; + +use SparkPost\SparkPost; +use SparkPost\SparkPostResponse; +use SparkPost\SparkPostPromise; +use Psr\Http\Message\ResponseInterface; +use Http\Promise\Promise; +use GuzzleHttp\Promise\Promise as GuzzlePromise; +use GuzzleHttp\Promise\FulfilledPromise as GuzzleFulfilledPromise; +use GuzzleHttp\Promise\RejectedPromise as GuzzleRejectedPromise; +use Http\Adapter\Guzzle6\Promise as GuzzleAdapterPromise; +use Http\Client\Exception\HttpException; +use Http\Adapter\Guzzle6\Client; +use Mockery; +use SparkPost\Test\TestUtils\ClassUtils; + +class TransmissionTest extends \PHPUnit_Framework_TestCase +{ + private static $utils; + private $clientMock; + /** @var SparkPost */ + private $resource; + + private $postTransmissionPayload = [ + 'content' => [ + 'from' => [ 'name' => 'Sparkpost Team', 'email' => 'postmaster@sendmailfor.me' ], + 'subject' => 'First Mailing From PHP', + 'text' => 'Congratulations, {{name}}!! You just sent your very first mailing!', + ], + 'substitution_data' => ['name' => 'Avi'], + 'recipients' => [ + [ + 'address' => [ + 'name' => 'Vincent', + 'email' => 'vincent.song@sparkpost.com' + ] + ], + [ 'address' => 'test@example.com' ] + ], + 'cc' => [ + [ + 'address' => [ + 'email' => 'avi.goldman@sparkpost.com' + ], + ] + ], + 'bcc' => [ + ['address' => 'Emely Giraldo <emely.giraldo@sparkpost.com>'], + ] + + ]; + + private $getTransmissionPayload = [ + 'campaign_id' => 'thanksgiving' + ]; + + /** + * (non-PHPdoc). + * + * @before + * + * @see PHPUnit_Framework_TestCase::setUp() + */ + public function setUp() + { + //setup mock for the adapter + $this->clientMock = Mockery::mock('Http\Adapter\Guzzle6\Client'); + + $this->resource = new SparkPost($this->clientMock, ['key' => 'SPARKPOST_API_KEY', 'async' => false]); + self::$utils = new ClassUtils($this->resource); + } + + public function tearDown() + { + Mockery::close(); + } + + /** + * @expectedException Exception + */ + public function testInvalidEmailFormat() + { + $this->postTransmissionPayload['recipients'][] = [ + 'address' => 'invalid email format' + ]; + + $response = $this->resource->transmissions->post($this->postTransmissionPayload); + } + + public function testGet() + { + $responseMock = Mockery::mock('Psr\Http\Message\ResponseInterface'); + $responseBodyMock = Mockery::mock(); + + $responseBody = ['results' => 'yay']; + + $this->resource->httpClient->shouldReceive('sendRequest')-> + once()-> + with(Mockery::type('GuzzleHttp\Psr7\Request'))-> + andReturn($responseMock); + + $responseMock->shouldReceive('getStatusCode')->andReturn(200); + $responseMock->shouldReceive('getBody')->andReturn($responseBodyMock); + $responseBodyMock->shouldReceive('__toString')->andReturn(json_encode($responseBody)); + + $response = $this->resource->transmissions->get($this->getTransmissionPayload); + + $this->assertEquals($responseBody, $response->getBody()); + $this->assertEquals(200, $response->getStatusCode()); + } + + public function testPut() + { + $responseMock = Mockery::mock('Psr\Http\Message\ResponseInterface'); + $responseBodyMock = Mockery::mock(); + + $responseBody = ['results' => 'yay']; + + $this->resource->httpClient->shouldReceive('sendRequest')-> + once()-> + with(Mockery::type('GuzzleHttp\Psr7\Request'))-> + andReturn($responseMock); + + $responseMock->shouldReceive('getStatusCode')->andReturn(200); + $responseMock->shouldReceive('getBody')->andReturn($responseBodyMock); + $responseBodyMock->shouldReceive('__toString')->andReturn(json_encode($responseBody)); + + $response = $this->resource->transmissions->put($this->getTransmissionPayload); + + $this->assertEquals($responseBody, $response->getBody()); + $this->assertEquals(200, $response->getStatusCode()); + } + + public function testPost() + { + $responseMock = Mockery::mock('Psr\Http\Message\ResponseInterface'); + $responseBodyMock = Mockery::mock(); + + $responseBody = ['results' => 'yay']; + + $this->resource->httpClient->shouldReceive('sendRequest')-> + once()-> + with(Mockery::type('GuzzleHttp\Psr7\Request'))-> + andReturn($responseMock); + + $responseMock->shouldReceive('getStatusCode')->andReturn(200); + $responseMock->shouldReceive('getBody')->andReturn($responseBodyMock); + $responseBodyMock->shouldReceive('__toString')->andReturn(json_encode($responseBody)); + + $response = $this->resource->transmissions->post($this->postTransmissionPayload); + + $this->assertEquals($responseBody, $response->getBody()); + $this->assertEquals(200, $response->getStatusCode()); + } + + public function testDelete() + { + $responseMock = Mockery::mock('Psr\Http\Message\ResponseInterface'); + $responseBodyMock = Mockery::mock(); + + $responseBody = ['results' => 'yay']; + + $this->resource->httpClient->shouldReceive('sendRequest')-> + once()-> + with(Mockery::type('GuzzleHttp\Psr7\Request'))-> + andReturn($responseMock); + + $responseMock->shouldReceive('getStatusCode')->andReturn(200); + $responseMock->shouldReceive('getBody')->andReturn($responseBodyMock); + $responseBodyMock->shouldReceive('__toString')->andReturn(json_encode($responseBody)); + + $response = $this->resource->transmissions->delete($this->getTransmissionPayload); + + $this->assertEquals($responseBody, $response->getBody()); + $this->assertEquals(200, $response->getStatusCode()); + } + + public function testFormatPayload() + { + $correctFormattedPayload = json_decode('{"content":{"from":{"name":"Sparkpost Team","email":"postmaster@sendmailfor.me"},"subject":"First Mailing From PHP","text":"Congratulations, {{name}}!! You just sent your very first mailing!","headers":{"CC":"avi.goldman@sparkpost.com"}},"substitution_data":{"name":"Avi"},"recipients":[{"address":{"name":"Vincent","email":"vincent.song@sparkpost.com"}},{"address":{"email":"test@example.com"}},{"address":{"email":"emely.giraldo@sparkpost.com","header_to":"\"Vincent\" <vincent.song@sparkpost.com>"}},{"address":{"email":"avi.goldman@sparkpost.com","header_to":"\"Vincent\" <vincent.song@sparkpost.com>"}}]}', true); + + $formattedPayload = $this->resource->transmissions->formatPayload($this->postTransmissionPayload); + $this->assertEquals($correctFormattedPayload, $formattedPayload); + } +} |