<?php use \Mockery as m; class UsageTriggersTest extends PHPUnit_Framework_TestCase { function testRetrieveTrigger() { $http = m::mock(new Services_Twilio_TinyHttp); $http->shouldReceive('get')->once() ->with('/2010-04-01/Accounts/AC123/Usage/Triggers/UT123.json') ->andReturn(array(200, array('Content-Type' => 'application/json'), json_encode(array( 'sid' => 'UT123', 'date_created' => 'Tue, 09 Oct 2012 19:27:24 +0000', 'recurring' => null, 'usage_category' => 'totalprice', )) )); $client = new Services_Twilio('AC123', '456bef', '2010-04-01', $http); $usageSid = 'UT123'; $usageTrigger = $client->account->usage_triggers->get($usageSid); $this->assertSame('totalprice', $usageTrigger->usage_category); } protected $formHeaders = array('Content-Type' => 'application/x-www-form-urlencoded'); function testUpdateTrigger() { $http = m::mock(new Services_Twilio_TinyHttp); $usageSid = 'UT123'; $http->shouldReceive('post')->once() ->with('/2010-04-01/Accounts/AC123/Usage/Triggers/UT123.json', $this->formHeaders, 'FriendlyName=new') ->andReturn(array(200, array('Content-Type' => 'application/json'), json_encode(array( 'friendly_name' => 'new', 'sid' => 'UT123', 'uri' => '/2010-04-01/Accounts/AC123/Usage/Triggers/UT123.json' )) )); $http->shouldReceive('get')->once() ->with('/2010-04-01/Accounts/AC123/Usage/Triggers/UT123.json') ->andReturn(array(200, array('Content-Type' => 'application/json'), json_encode(array( 'sid' => 'UT123', 'friendly_name' => 'new', )) )); $client = new Services_Twilio('AC123', '456bef', '2010-04-01', $http); $usageTrigger = $client->account->usage_triggers->get($usageSid); $usageTrigger->update(array( 'FriendlyName' => 'new', )); $usageTrigger2 = $client->account->usage_triggers->get($usageSid); $this->assertSame('new', $usageTrigger2->friendly_name); } function testFilterTriggerList() { $http = m::mock(new Services_Twilio_TinyHttp); $params = 'Page=0&PageSize=50&UsageCategory=sms'; $http->shouldReceive('get')->once() ->with('/2010-04-01/Accounts/AC123/Usage/Triggers.json?' . $params) ->andReturn(array(200, array('Content-Type' => 'application/json'), json_encode(array('usage_triggers' => array( array( 'usage_category' => 'sms', 'current_value' => '4', 'trigger_value' => '100.30', ), array( 'usage_category' => 'sms', 'current_value' => '4', 'trigger_value' => '400.30', )), 'next_page_uri' => '/2010-04-01/Accounts/AC123/Usage/Triggers.json?UsageCategory=sms&Page=1&PageSize=50', )) )); $params = 'UsageCategory=sms&Page=1&PageSize=50'; $http->shouldReceive('get')->once() ->with('/2010-04-01/Accounts/AC123/Usage/Triggers.json?' . $params) ->andReturn(array(400, array('Content-Type' => 'application/json'), '{"status":400,"message":"foo", "code": "20006"}' )); $client = new Services_Twilio('AC123', '456bef', '2010-04-01', $http); foreach ($client->account->usage_triggers->getIterator( 0, 50, array( 'UsageCategory' => 'sms', )) as $trigger ) { $this->assertSame($trigger->current_value, "4"); } } function testCreateTrigger() { $http = m::mock(new Services_Twilio_TinyHttp); $params = 'UsageCategory=sms&TriggerValue=100&CallbackUrl=foo'; $http->shouldReceive('post')->once() ->with('/2010-04-01/Accounts/AC123/Usage/Triggers.json', $this->formHeaders, $params) ->andReturn(array(201, array('Content-Type' => 'application/json'), json_encode(array( 'usage_category' => 'sms', 'sid' => 'UT123', 'uri' => '/2010-04-01/Accounts/AC123/Usage/Triggers/UT123.json' )) )); $client = new Services_Twilio('AC123', '456bef', '2010-04-01', $http); $trigger = $client->account->usage_triggers->create( 'sms', '100', 'foo' ); $this->assertSame('sms', $trigger->usage_category); } }