summaryrefslogtreecommitdiffstats
path: root/test/unit/TransmissionTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/TransmissionTest.php')
-rw-r--r--test/unit/TransmissionTest.php153
1 files changed, 108 insertions, 45 deletions
diff --git a/test/unit/TransmissionTest.php b/test/unit/TransmissionTest.php
index d606c53..84f16f0 100644
--- a/test/unit/TransmissionTest.php
+++ b/test/unit/TransmissionTest.php
@@ -2,16 +2,50 @@
namespace SparkPost\Test;
-use SparkPost\Transmission;
-use SparkPost\Test\TestUtils\ClassUtils;
+use SparkPost\SparkPost;
use Mockery;
+use SparkPost\Test\TestUtils\ClassUtils;
class TransmissionTest extends \PHPUnit_Framework_TestCase
{
private static $utils;
- private $sparkPostMock;
+ 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).
*
@@ -21,11 +55,10 @@ class TransmissionTest extends \PHPUnit_Framework_TestCase
*/
public function setUp()
{
- $this->sparkPostMock = Mockery::mock('SparkPost\SparkPost', function ($mock) {
- $mock->shouldReceive('getHttpHeaders')->andReturn([]);
- });
- $this->sparkPostMock->httpAdapter = Mockery::mock();
- $this->resource = new Transmission($this->sparkPostMock);
+ //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);
}
@@ -34,81 +67,111 @@ class TransmissionTest extends \PHPUnit_Framework_TestCase
Mockery::close();
}
- public function testSend()
+ /**
+ * @expectedException Exception
+ */
+ public function testInvalidEmailFormat()
{
- $responseMock = Mockery::mock();
- $body = ['text' => 'awesomesauce', 'content' => ['subject' => 'awesomeness']];
+ $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->sparkPostMock->httpAdapter->shouldReceive('send')->
+ $this->resource->httpClient->shouldReceive('sendRequest')->
once()->
- with('/.*\/transmissions/', 'POST', Mockery::type('array'), Mockery::type('string'))->
+ 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));
- $responseMock->shouldReceive('getBody->getContents')->andReturn(json_encode($responseBody));
+ $response = $this->resource->transmissions->get($this->getTransmissionPayload);
- $this->assertEquals($responseBody, $this->resource->send($body));
+ $this->assertEquals($responseBody, $response->getBody());
+ $this->assertEquals(200, $response->getStatusCode());
}
- public function testSendDateTimeConversion()
+ public function testPut()
{
- $testStartTime = new \DateTime('2016-08-27 13:01:02', new \DateTimeZone('UTC'));
+ $responseMock = Mockery::mock('Psr\Http\Message\ResponseInterface');
+ $responseBodyMock = Mockery::mock();
- $responseMock = Mockery::mock();
$responseBody = ['results' => 'yay'];
- $this->sparkPostMock->httpAdapter->shouldReceive('send')->
+
+ $this->resource->httpClient->shouldReceive('sendRequest')->
once()->
- with('/.*\/transmissions/', 'POST', Mockery::type('array'), matchesPattern('/"start_time":"2016-08-27T13:01:02\+00:00"/'))->
+ with(Mockery::type('GuzzleHttp\Psr7\Request'))->
andReturn($responseMock);
+
$responseMock->shouldReceive('getStatusCode')->andReturn(200);
- $responseMock->shouldReceive('getBody->getContents')->andReturn(json_encode($responseBody));
+ $responseMock->shouldReceive('getBody')->andReturn($responseBodyMock);
+ $responseBodyMock->shouldReceive('__toString')->andReturn(json_encode($responseBody));
+
+ $response = $this->resource->transmissions->put($this->getTransmissionPayload);
- $this->assertEquals($responseBody, $this->resource->send(['startTime' => $testStartTime]));
+ $this->assertEquals($responseBody, $response->getBody());
+ $this->assertEquals(200, $response->getStatusCode());
}
- public function testAllWithFilter()
+ public function testPost()
{
- $responseMock = Mockery::mock();
+ $responseMock = Mockery::mock('Psr\Http\Message\ResponseInterface');
+ $responseBodyMock = Mockery::mock();
+
$responseBody = ['results' => 'yay'];
- $this->sparkPostMock->httpAdapter->shouldReceive('send')->
+
+ $this->resource->httpClient->shouldReceive('sendRequest')->
once()->
- with('/.*transmissions.*?campaign_id=campaign&template_id=template/', 'GET', Mockery::type('array'), null)->
+ 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));
- $responseMock->shouldReceive('getBody->getContents')->andReturn(json_encode($responseBody));
+ $response = $this->resource->transmissions->post($this->postTransmissionPayload);
- $this->assertEquals($responseBody, $this->resource->all('campaign', 'template'));
+ $this->assertEquals($responseBody, $response->getBody());
+ $this->assertEquals(200, $response->getStatusCode());
}
- public function testAllWithOutFilter()
+ public function testDelete()
{
- $responseMock = Mockery::mock();
+ $responseMock = Mockery::mock('Psr\Http\Message\ResponseInterface');
+ $responseBodyMock = Mockery::mock();
+
$responseBody = ['results' => 'yay'];
- $this->sparkPostMock->httpAdapter->shouldReceive('send')->
+
+ $this->resource->httpClient->shouldReceive('sendRequest')->
once()->
- with('/.*\/transmissions/', 'GET', Mockery::type('array'), null)->
+ 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));
- $responseMock->shouldReceive('getBody->getContents')->andReturn(json_encode($responseBody));
+ $response = $this->resource->transmissions->delete($this->getTransmissionPayload);
- $this->assertEquals($responseBody, $this->resource->all());
+ $this->assertEquals($responseBody, $response->getBody());
+ $this->assertEquals(200, $response->getStatusCode());
}
- public function testFind()
+ public function testFormatPayload()
{
- $responseMock = Mockery::mock();
- $responseBody = ['results' => 'yay'];
- $this->sparkPostMock->httpAdapter->shouldReceive('send')->
- once()->
- with('/.*\/transmissions.*\/test/', 'GET', Mockery::type('array'), null)->
- andReturn($responseMock);
- $responseMock->shouldReceive('getStatusCode')->andReturn(200);
-
- $responseMock->shouldReceive('getBody->getContents')->andReturn(json_encode($responseBody));
+ $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);
- $this->assertEquals($responseBody, $this->resource->find('test'));
+ $formattedPayload = $this->resource->transmissions->formatPayload($this->postTransmissionPayload);
+ $this->assertEquals($correctFormattedPayload, $formattedPayload);
}
}