diff --git a/Resources/config/services.yml b/Resources/config/services.yml index 94e12ed..2ffbdf8 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -1,6 +1,10 @@ parameters: services: + jhg_nexmo.sms_message: + class: Nexmo\NexmoMessage + arguments: ["%jhg_nexmo.api_key%","%jhg_nexmo.api_secret%"] + jhg_nexmo.sms.sender: class: Jhg\NexmoBundle\Sender\SmsSender - arguments: [@service_container] + arguments: [@service_container,@jhg_nexmo.sms_message] \ No newline at end of file diff --git a/Sender/SmsSender.php b/Sender/SmsSender.php index 7cdfcee..db68353 100644 --- a/Sender/SmsSender.php +++ b/Sender/SmsSender.php @@ -1,32 +1,45 @@ container = $container; - - $api_key = $this->container->getParameter('jhg_nexmo.api_key'); - $api_secret = $this->container->getParameter('jhg_nexmo.api_secret'); - - $this->nexmoMessage = new NexmoMessage($api_key, $api_secret); + $this->nexmoMessage = $nexmoMessage; } - - public function send($number,$fromName=null,$message,$unicode=null, $status_report_req=0) { + + /** + * @param $number + * @param null $fromName + * @param $message + * @param null $unicode + * @param int $status_report_req + * @return array|bool|\Nexmo\stdClass + */ + public function send($number,$fromName=null,$message,$unicode=null, $status_report_req=0) { if($fromName===null) $fromName = $this->container->getParameter('jhg_nexmo.from_name'); diff --git a/Tests/Command/SmsSendCommandTest.php b/Tests/Command/SmsSendCommandTest.php new file mode 100644 index 0000000..8986380 --- /dev/null +++ b/Tests/Command/SmsSendCommandTest.php @@ -0,0 +1,46 @@ +add(new SmsSendCommand()); + + $command = $application->find('nexmo:sms:send'); + $commandTester = new CommandTester($command); + + try { + $commandTester->execute(array()); + $this->assertTrue(false); + } catch(\RuntimeException $e) { + $this->assertEquals('Not enough arguments.',$e->getMessage()); + } + + $arguments = array( + 'command' => 'nexmo:sms:send', + 'number' => 'demo:greet', + 'fromName' => 'Fabien', + 'message' => '', + ); + + $input = new ArrayInput($arguments); + $returnCode = $command->run($input, $output); + + $commandTester->execute(array("+34666555444","MyApp","Hello World!!")); + +// $this->assertRegExp('/.../', $commandTester->getDisplay()); + } +} \ No newline at end of file diff --git a/Tests/Sender/SmsSenderTest.php b/Tests/Sender/SmsSenderTest.php new file mode 100644 index 0000000..41462e7 --- /dev/null +++ b/Tests/Sender/SmsSenderTest.php @@ -0,0 +1,49 @@ +'asdfghjkl', + 'jhg_nexmo.api_secret'=>'1234567890', + 'jhg_nexmo.from_name'=>'From Name', + ), + '+34666555444', + 'From Name', + 'Message', + null, + 0, + array(), + ), + ); + } + + + /** + * @dataProvider getSendData + */ + public function testSend($containerParameters,$number,$fromName,$message,$unicode,$status_report_req,$sendRequestReturnData) { + $containerMock = $this->getMock('Symfony\Component\DependencyInjection\Container'); + + $nexmoMessageMock = $this->getMock('Nexmo\NexmoMessage',array(),array($containerMock,$containerParameters['jhg_nexmo.api_key'],$containerParameters['jhg_nexmo.api_secret'])); + $nexmoMessageMock->expects($this->any()) + ->method('sendRequest') + ->will($this->returnValue($sendRequestReturnData)); + + + $sender = new SmsSender($containerMock,$nexmoMessageMock); + $result = $sender->send($number,$fromName,$message,$unicode,$status_report_req); + + $this->assertEquals(null,$result); + } +} \ No newline at end of file