summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvi Goldman <avrahamymgoldman@gmail.com>2016-06-21 15:03:15 -0400
committerAvi Goldman <avrahamymgoldman@gmail.com>2016-06-21 15:03:15 -0400
commit01345cac8603d4deb38a03fda4ee69670141e06b (patch)
treed5761875a436084b00e78c628d80edcde8531bf5
parent6aa6fa118fdbcd3774b0c780498f5e1a02ba7fa8 (diff)
downloadphp-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.php2
-rw-r--r--test/unit/TransmissionTest.php187
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);
+ }
+}