diff --git a/.gitignore b/.gitignore index 9e6a444..7b2c62a 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,5 @@ /pkg/ /spec/reports/ /tmp/ -/spec/ .rspec .gem diff --git a/globe_connect.gemspec b/globe_connect.gemspec index ee939fd..acde679 100644 --- a/globe_connect.gemspec +++ b/globe_connect.gemspec @@ -38,4 +38,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency "bundler", "~> 1.13" spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "rspec", "~> 3.5" + spec.add_development_dependency "webmock" end diff --git a/spec/fixtures/sms.json b/spec/fixtures/sms.json new file mode 100644 index 0000000..8c77e71 --- /dev/null +++ b/spec/fixtures/sms.json @@ -0,0 +1,19 @@ +{ + "outboundSMSMessageRequest": { + "address": "tel:+639175595283", + "deliveryInfoList": { + "deliveryInfo": [], + "resourceURL": "https://devapi.globelabs.com.ph/smsmessaging/v1/outbound/8011/requests?access_token=3YM8xurK_IPdhvX4OUWXQljcHTIPgQDdTESLXDIes4g" + }, + "senderAddress": "8011", + "outboundSMSTextMessage": { + "message": "Hello World" + }, + "receiptRequest": { + "notifyURL": "http://test-sms1.herokuapp.com/callback", + "callbackData": null, + "senderName": null, + "resourceURL": "https://devapi.globelabs.com.ph/smsmessaging/v1/outbound/8011/requests?access_token=3YM8xurK_IPdhvX4OUWXQljcHTIPgQDdTESLXDIes4g" + } + } +} diff --git a/spec/lib/globe_connect/sms_spec.rb b/spec/lib/globe_connect/sms_spec.rb new file mode 100644 index 0000000..8b992bc --- /dev/null +++ b/spec/lib/globe_connect/sms_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +describe Sms do + describe '#send_message' do + let(:body) do + { + outboundSMSMessageRequest: { + senderAddress:'tel:short_code', + address:['tel:subscriber_number'], + outboundSMSTextMessage:{message:'message'} + } + } + end + + before do + stub_post('/smsmessaging/v1/outbound/short_code/requests?access_token=token'). + with(body: JSON.generate(body), headers: request_headers). + to_return(status: 200, body: fixture('sms.json'), headers: {}) + end + + it 'returns sms response' do + sms = Sms.new 'token', 'short_code' + response = sms.send_message 'subscriber_number', 'message' + + expect(response['outboundSMSMessageRequest']).to be_truthy + end + + it 'send the correct resource' do + sms = Sms.new 'token', 'short_code' + sms.send_message 'subscriber_number', 'message' + + expect(a_post('/smsmessaging/v1/outbound/short_code/requests?access_token=token') + .with(body: JSON.generate(body), headers: request_headers)).to have_been_made + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..b42ef60 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,24 @@ +require 'globe_connect' +require 'webmock/rspec' + +BASE_URL = 'https://devapi.globelabs.com.ph' + +def stub_post(path) + stub_request(:post, BASE_URL + path) +end + +def a_post(path) + a_request(:post, BASE_URL + path) +end + +def fixture(file) + File.new(fixture_path + '/' + file) +end + +def fixture_path + File.expand_path('../fixtures', __FILE__) +end + +def request_headers + {'Content-Type'=>'application/json', 'Host'=>'devapi.globelabs.com.ph'} +end