From 445f9f8121e16f7c9377b1c327af5a646bf339e0 Mon Sep 17 00:00:00 2001 From: NirmitiJain Date: Fri, 16 Dec 2022 16:32:10 +0530 Subject: [PATCH] update campaign sdk --- lib/plivo/resources/campaign.rb | 10 ++++++++++ spec/mocks/campaignUpdateResponse.json | 25 +++++++++++++++++++++++++ spec/resource_campaign_spec.rb | 22 ++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 spec/mocks/campaignUpdateResponse.json diff --git a/lib/plivo/resources/campaign.rb b/lib/plivo/resources/campaign.rb index 3fd26a21..38332eca 100644 --- a/lib/plivo/resources/campaign.rb +++ b/lib/plivo/resources/campaign.rb @@ -86,6 +86,16 @@ def create(options=nil) perform_create(options) end ## + # Update Camapign + def update(campaign_id, options=nil) + valid_param?(:options, options, Hash, true) + if not campaign_id + raise_invalid_request("campaign_id must be provided") + end + action = campaign_id + perform_action_with_identifier(action, 'POST', options) + end + ## # campaign number link # def number_link(options=nil) diff --git a/spec/mocks/campaignUpdateResponse.json b/spec/mocks/campaignUpdateResponse.json new file mode 100644 index 00000000..6763b5d2 --- /dev/null +++ b/spec/mocks/campaignUpdateResponse.json @@ -0,0 +1,25 @@ +{ + "api_id": "f687a17e-0725-11ed-ab02-0242ac110004", + "campaign": { + "brand_id": "BOZ5T2X", + "campaign_id": "CXX", + "mno_metadata": { + "AT&T": { + "tpm": 15 + }, + "T-Mobile": { + "brand_tier": "SOLE_PROPRIETOR" + }, + "US Cellular": { + "tpm": 15 + }, + "Verizon Wireless": { + "tpm": 15 + } + }, + "registration_status": "ACTIVE", + "reseller_id": "", + "sub_usecase": "2FA,MARKETING", + "usecase": "STARTER" + } +} \ No newline at end of file diff --git a/spec/resource_campaign_spec.rb b/spec/resource_campaign_spec.rb index 5a2139ea..d675eb04 100644 --- a/spec/resource_campaign_spec.rb +++ b/spec/resource_campaign_spec.rb @@ -185,6 +185,28 @@ def to_json_delete(obj) optout_message: "optoutmessage should be mandatory" }) end + + it 'update campaign' do + contents = File.read(Dir.pwd + '/spec/mocks/campaignUpdateResponse.json') + mock(200, JSON.parse(contents)) + response = to_json(@api.campaign + .update("CXX", + params ={ + sample1: "sample message 1 should be 20 minimum character", + } + ) + ) + + contents = JSON.parse(contents) + + expect(JSON.parse(response)) + .to eql(contents) + compare_requests(uri: '/v1/Account/MAXXXXXXXXXXXXXXXXXX/10dlc/Campaign/CXX/', + method: 'POST', + data: { + sample1: "sample message 1 should be 20 minimum character" + }) + end it 'number_link campaign' do contents = File.read(Dir.pwd + '/spec/mocks/campaignNumberLinkUnlinkResponse.json') mock(200, JSON.parse(contents))