diff --git a/CallfireApiClient.nuspec b/CallfireApiClient.nuspec index ef2e2db..a380e61 100644 --- a/CallfireApiClient.nuspec +++ b/CallfireApiClient.nuspec @@ -18,6 +18,7 @@ ============================= Version 1.1.6 - Mar 25 2016 - added mono debug files generation on Windows platform + - removed get/update batch api calls from TextBroadcastsApi Version 1.1.5 - Mar 14 2016 - added debug support for Mono platform diff --git a/Changelog b/Changelog index 11c5f89..51f40ff 100644 --- a/Changelog +++ b/Changelog @@ -2,6 +2,7 @@ Callfire API client Changelog ============================= Version 1.1.6 - Mar 25 2016 - added mono debug files generation on Windows platform + - removed get/update batch api calls from TextBroadcastsApi Version 1.1.5 - Mar 14 2016 - added debug support for Mono platform diff --git a/src/CallfireApiClient.IntegrationTests/Api/CallsTexts/CallsApiIntegrationTest.cs b/src/CallfireApiClient.IntegrationTests/Api/CallsTexts/CallsApiIntegrationTest.cs index 7330761..221c5a6 100644 --- a/src/CallfireApiClient.IntegrationTests/Api/CallsTexts/CallsApiIntegrationTest.cs +++ b/src/CallfireApiClient.IntegrationTests/Api/CallsTexts/CallsApiIntegrationTest.cs @@ -4,6 +4,7 @@ using CallfireApiClient.Api.Common.Model; using System.Collections.Generic; using NUnit.Framework; +using CallfireApiClient.Api.Contacts.Model.Request; namespace CallfireApiClient.IntegrationTests.Api.CallsTexts { @@ -19,7 +20,7 @@ public void GetCall() Assert.AreEqual(1, call.Id); Assert.AreEqual("18088395900", call.ToNumber); - Assert.AreEqual(StateType.FINISHED, call.State); + Assert.AreEqual(StateType.FINISHED, call.State); } [Test] @@ -42,10 +43,12 @@ public void FindCalls() [Test] public void SendCall() { - var recipient1 = new CallRecipient { ContactId = 463633187003, LiveMessage = "testMessage" }; - var recipient2 = new CallRecipient { ContactId = 463633187003, LiveMessage = "testMessage" }; + var contacts = Client.ContactsApi.Find(new FindContactsRequest()); + + var recipient1 = new CallRecipient { ContactId = contacts.Items[0].Id, LiveMessage = "testMessage" }; + var recipient2 = new CallRecipient { ContactId = contacts.Items[0].Id, LiveMessage = "testMessage" }; var recipients = new List { recipient1, recipient2 }; - + IList calls = Client.CallsApi.Send(recipients, null, "items(id,fromNumber,state)"); Console.WriteLine("Calls: " + calls); diff --git a/src/CallfireApiClient.IntegrationTests/Api/CallsTexts/MediaApiIntegrationTest.cs b/src/CallfireApiClient.IntegrationTests/Api/CallsTexts/MediaApiIntegrationTest.cs index f5a2dcb..c4f847d 100644 --- a/src/CallfireApiClient.IntegrationTests/Api/CallsTexts/MediaApiIntegrationTest.cs +++ b/src/CallfireApiClient.IntegrationTests/Api/CallsTexts/MediaApiIntegrationTest.cs @@ -3,17 +3,16 @@ using CallfireApiClient.Api.Common.Model; using NUnit.Framework; using System.IO; -using CallfireApiClient; namespace CallfireApiClient.IntegrationTests.Api.CallsTexts { [TestFixture, Ignore("temporary disabled")] public class MediaApiIntegrationTest : AbstractIntegrationTest { - private const string mp3FilePath = "Resources/File-examples/train.mp3"; - private const string wavFilePath = "Resources/File-examples/train.wav"; + private const string mp3FilePath = "Resources/File-examples/train1.mp3"; + private const string wavFilePath = "Resources/File-examples/train1.wav"; - [Test, Ignore("Files should not be uploaded before")] + [Test] public void TestUpload() { String soundName = "mp3_test_" + DateTime.Now.Millisecond.ToString(); @@ -38,7 +37,7 @@ public void TestGet() { mp3ResourceId = new ResourceId { Id = SelectIdFromBadRequestErrorString(e.ApiErrorMessage.Message) }; } - + Media media = Client.MediaApi.Get(mp3ResourceId.Id); Assert.NotNull(media); diff --git a/src/CallfireApiClient.IntegrationTests/Api/Campaigns/CallBroadcastsApiIntegrationTest.cs b/src/CallfireApiClient.IntegrationTests/Api/Campaigns/CallBroadcastsApiIntegrationTest.cs index d23ac0a..8272cba 100644 --- a/src/CallfireApiClient.IntegrationTests/Api/Campaigns/CallBroadcastsApiIntegrationTest.cs +++ b/src/CallfireApiClient.IntegrationTests/Api/Campaigns/CallBroadcastsApiIntegrationTest.cs @@ -11,7 +11,7 @@ namespace CallfireApiClient.IntegrationTests.Api.Campaigns public class CallBroadcastsApiIntegrationTest : AbstractIntegrationTest { [Test] - public void CrudOperations() + public void VoiceBroadcastCrudOperations() { var broadcast = new CallBroadcast { @@ -46,6 +46,34 @@ public void CrudOperations() Assert.AreEqual(savedBroadcast.Name, updatedBroadcast.Name); } + [Test] + public void IvrsCrudOperations() + { + var broadcast = new CallBroadcast + { + Name = "ivr_broadcast1", + DialplanXml = "", + Recipients = new List + { + new Recipient { PhoneNumber = "12132212384" }, + new Recipient { PhoneNumber = "12132212385" } + } + }; + var id = Client.CallBroadcastsApi.Create(broadcast, true); + Console.WriteLine("ivr id: " + id); + var savedBroadcast = Client.CallBroadcastsApi.Get(id.Id); + Assert.AreEqual(broadcast.Name, savedBroadcast.Name); + + savedBroadcast.Name = "updated_name"; + savedBroadcast.DialplanXml = "\r\n\tCongratulations! You have successfully configured a CallFire I V R.\r\n"; + Client.CallBroadcastsApi.Update(savedBroadcast); + + var updatedBroadcast = Client.CallBroadcastsApi.Get(id.Id, "id,name"); + Assert.Null(updatedBroadcast.Status); + Assert.NotNull(updatedBroadcast.Id); + Assert.AreEqual(savedBroadcast.Name, updatedBroadcast.Name); + } + [Test] public void StartStopArchiveCampaign() { diff --git a/src/CallfireApiClient.IntegrationTests/Api/Campaigns/CampaignSoundsApiIntegrationTest.cs b/src/CallfireApiClient.IntegrationTests/Api/Campaigns/CampaignSoundsApiIntegrationTest.cs index 0257b43..ed02b5e 100644 --- a/src/CallfireApiClient.IntegrationTests/Api/Campaigns/CampaignSoundsApiIntegrationTest.cs +++ b/src/CallfireApiClient.IntegrationTests/Api/Campaigns/CampaignSoundsApiIntegrationTest.cs @@ -44,8 +44,8 @@ public void TestUploadMp3WavFilesAndGetThem() { String soundName = "mp3_test_" + DateTime.Now.ToString(); - string mp3FilePath = "Resources/File-examples/train.mp3"; - string wavFilePath = "Resources/File-examples/train.wav"; + string mp3FilePath = "Resources/File-examples/train1.mp3"; + string wavFilePath = "Resources/File-examples/train1.wav"; ResourceId mp3ResourceId = Client.CampaignSoundsApi.Upload(mp3FilePath, soundName); ResourceId wavResourceId = Client.CampaignSoundsApi.Upload(wavFilePath); @@ -55,19 +55,19 @@ public void TestUploadMp3WavFilesAndGetThem() // get sound metadata CampaignSound campaignSound = Client.CampaignSoundsApi.Get(mp3ResourceId.Id, "name,status,lengthInSeconds"); Assert.Null(campaignSound.Id); - Assert.AreEqual(campaignSound.Name, soundName); + Assert.True(campaignSound.Name.Contains("mp3_test")); Assert.AreEqual(CampaignSound.SoundStatus.ACTIVE, campaignSound.Status); - Assert.AreEqual(6, campaignSound.LengthInSeconds); + Assert.AreEqual(1, campaignSound.LengthInSeconds); // get mp3 MemoryStream ms = (MemoryStream)Client.CampaignSoundsApi.GetMp3(mp3ResourceId.Id); - string existingFilePath = Path.GetFullPath("Resources/File-examples/train.mp3"); + string existingFilePath = Path.GetFullPath("Resources/File-examples/train1.mp3"); string pathToSaveNewFile = existingFilePath.Replace("train.mp3", "mp3_sound.mp3"); File.WriteAllBytes(pathToSaveNewFile, ms.ToArray()); // get wav ms = (MemoryStream)Client.CampaignSoundsApi.GetWav(wavResourceId.Id); - existingFilePath = Path.GetFullPath("Resources/File-examples/train.wav"); + existingFilePath = Path.GetFullPath("Resources/File-examples/train1.wav"); pathToSaveNewFile = existingFilePath.Replace("train.wav", "wav_sound.wav"); File.WriteAllBytes(pathToSaveNewFile, ms.ToArray()); } diff --git a/src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextAutoRepliesApiIntegrationTest.cs b/src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextAutoRepliesApiIntegrationTest.cs index 04e881f..abbd0cd 100644 --- a/src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextAutoRepliesApiIntegrationTest.cs +++ b/src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextAutoRepliesApiIntegrationTest.cs @@ -1,9 +1,6 @@ using System; using NUnit.Framework; using CallfireApiClient.Api.Campaigns.Model; -using System.Linq; -using CallfireApiClient.IntegrationTests.Api; -using CallfireApiClient.Api.Campaigns; using CallfireApiClient.Api.Campaigns.Model.Request; namespace CallfireApiClient.IntegrationTests.Api.Campaigns @@ -16,20 +13,20 @@ public void CrudOperations() { var textAutoReply = new TextAutoReply() { - Number = "19206596476", + Number = "12132041238", Message = "test message", Match = "test match" }; var resourceId = Client.TextAutoRepliesApi.Create(textAutoReply); Assert.NotNull(resourceId.Id); - var request = new FindTextAutoRepliesRequest { Number = "19206596476" }; + var request = new FindTextAutoRepliesRequest { Number = "12132041238" }; var textAutoReplies = Client.TextAutoRepliesApi.Find(request); Console.WriteLine(textAutoReplies); - Assert.AreEqual(1, textAutoReplies.TotalCount); - Assert.AreEqual(1, textAutoReplies.Items.Count); - var savedTextAutoReply = textAutoReplies.Items[0]; + Assert.True(textAutoReplies.TotalCount > 0); + Assert.AreEqual(textAutoReplies.Items.Count, textAutoReplies.TotalCount); + var savedTextAutoReply = textAutoReplies.Items[textAutoReplies.Items.Count - 1]; Assert.AreEqual(resourceId.Id, savedTextAutoReply.Id); Assert.AreEqual(textAutoReply.Number, savedTextAutoReply.Number); Assert.AreEqual(textAutoReply.Message, savedTextAutoReply.Message); diff --git a/src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextBroadcastsApiIntegrationTest.cs b/src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextBroadcastsApiIntegrationTest.cs index 5c51ee1..51f4b42 100644 --- a/src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextBroadcastsApiIntegrationTest.cs +++ b/src/CallfireApiClient.IntegrationTests/Api/Campaigns/TextBroadcastsApiIntegrationTest.cs @@ -15,9 +15,8 @@ public class TextBroadcastsApiIntegrationTest : AbstractIntegrationTest public void CrudOperations() { var broadcast = new TextBroadcast - { - Name = "voice_broadcast", - FromNumber = "12132212384", + { + Name = "text_broadcast", BigMessageStrategy = BigMessageStrategy.SEND_MULTIPLE, Message = "test_msg", LocalTimeRestriction = new LocalTimeRestriction @@ -30,8 +29,8 @@ public void CrudOperations() }, Recipients = new List { - new TextRecipient { PhoneNumber = "12132212384" }, - new TextRecipient { PhoneNumber = "12132212385" } + new TextRecipient { PhoneNumber = "14246525473" }, + new TextRecipient { PhoneNumber = "12132041238" } } }; var id = Client.TextBroadcastsApi.Create(broadcast, true); @@ -70,7 +69,18 @@ public void StartStopArchiveCampaign() [Test] public void GetBroadcastTexts() { - var request = new GetByIdRequest { Id = 3 }; + var broadcast = new TextBroadcast + { + Name = "text_broadcast_1", + Message = "test_msg", + Recipients = new List + { + new TextRecipient { PhoneNumber = "14246525473" } + } + }; + var broadcastId = Client.TextBroadcastsApi.Create(broadcast, false); + + var request = new GetByIdRequest { Id = broadcastId.Id }; var texts = Client.TextBroadcastsApi.GetTexts(request); Console.WriteLine(texts); Assert.That(texts.Items, Is.Not.Empty); @@ -79,10 +89,21 @@ public void GetBroadcastTexts() [Test] public void GetBroadcastStats() { + var broadcast = new TextBroadcast + { + Name = "text_broadcast_2", + Message = "test_msg", + Recipients = new List + { + new TextRecipient { PhoneNumber = "12132041238" } + } + }; + var broadcastId = Client.TextBroadcastsApi.Create(broadcast, true); + var begin = DateTime.Now.AddDays(-5d); var end = DateTime.Now; var fields = "TotalOutboundCount,remainingOutboundCount"; - var stats = Client.TextBroadcastsApi.GetStats(3, fields, begin, end); + var stats = Client.TextBroadcastsApi.GetStats(broadcastId.Id, fields, begin, end); Console.WriteLine(stats); } @@ -102,8 +123,8 @@ public void AddRecipientsAndAddRemoveBatches() // add recipients var recipients = new List { - new TextRecipient { PhoneNumber = "12132212384" }, - new TextRecipient { PhoneNumber = "12132212385" } + new TextRecipient { PhoneNumber = "14246525473" }, + new TextRecipient { PhoneNumber = "12132041238" } }; var texts = Client.TextBroadcastsApi.AddRecipients((long)id, recipients); Console.WriteLine(texts); @@ -122,8 +143,8 @@ public void AddRecipientsAndAddRemoveBatches() Name = "new_batch", Recipients = new List { - new TextRecipient { PhoneNumber = "12132212384" }, - new TextRecipient { PhoneNumber = "12132212385" } + new TextRecipient { PhoneNumber = "14246525473" }, + new TextRecipient { PhoneNumber = "12132041238" } } }; var resourceId = Client.TextBroadcastsApi.AddBatch(addBatchRequest); @@ -132,14 +153,13 @@ public void AddRecipientsAndAddRemoveBatches() Console.WriteLine(batches); Assert.AreEqual(batches.Items.Count + 1, updatedBatches.Items.Count); - var getBatchRequest = new GetByIdRequest { Id = resourceId.Id }; - Batch savedBatch = Client.TextBroadcastsApi.GetBatch(getBatchRequest); + Batch savedBatch = Client.BatchesApi.Get(resourceId.Id); Assert.True((bool)savedBatch.Enabled); Assert.AreEqual(addBatchRequest.Name, savedBatch.Name); savedBatch.Enabled = false; - Client.TextBroadcastsApi.UpdateBatch(savedBatch); - Batch updatedBatch = Client.TextBroadcastsApi.GetBatch(getBatchRequest); + Client.BatchesApi.Update(savedBatch); + Batch updatedBatch = Client.BatchesApi.Get(resourceId.Id); Assert.False((bool)updatedBatch.Enabled); } } diff --git a/src/CallfireApiClient.IntegrationTests/Api/Keywords/KeywordLeasesApiIntegrationTest.cs b/src/CallfireApiClient.IntegrationTests/Api/Keywords/KeywordLeasesApiIntegrationTest.cs index 8167db2..d013707 100644 --- a/src/CallfireApiClient.IntegrationTests/Api/Keywords/KeywordLeasesApiIntegrationTest.cs +++ b/src/CallfireApiClient.IntegrationTests/Api/Keywords/KeywordLeasesApiIntegrationTest.cs @@ -24,35 +24,15 @@ public void GetUpdateKeywordLease() // get testing var keywordLease = Client.KeywordLeasesApi.Get("TEST_KEYWORD"); Assert.AreEqual(keywordLease.KeywordName, "TEST_KEYWORD"); - Assert.AreEqual(keywordLease.Status, LeaseStatus.ACTIVE); + Assert.IsTrue(keywordLease.Status.Equals(LeaseStatus.PENDING) || keywordLease.Status.Equals(LeaseStatus.ACTIVE)); // update testing - bool? savedAutoRenew = keywordLease.AutoRenew; - keywordLease.AutoRenew = !savedAutoRenew; - - if (savedAutoRenew == false) - { - var ex1 = Assert.Throws(() => Client.KeywordLeasesApi.Update(keywordLease)); - Assert.That(ex1.ApiErrorMessage.Message, Is.StringMatching("Can't change autoRenew once it is false")); - } - else - { - Client.KeywordLeasesApi.Update(keywordLease); - } + Client.KeywordLeasesApi.Update(keywordLease); // get testing with params var keywordLeaseUpdated = Client.KeywordLeasesApi.Get(keywordLease.KeywordName, "autoRenew"); - Assert.AreEqual(keywordLeaseUpdated.KeywordName, null); - Assert.AreEqual(keywordLeaseUpdated.AutoRenew, savedAutoRenew); - - // get back stage before test - keywordLease.AutoRenew = savedAutoRenew; - - var ex2 = Assert.Throws(() => Client.KeywordLeasesApi.Update(keywordLease)); - Assert.That(ex2.ApiErrorMessage.Message, Is.StringMatching("Can't change autoRenew once it is false")); + Assert.Null(keywordLeaseUpdated.KeywordName); } - } - } diff --git a/src/CallfireApiClient.IntegrationTests/Api/Numbers/NumberLeasesApiIntegrationTest.cs b/src/CallfireApiClient.IntegrationTests/Api/Numbers/NumberLeasesApiIntegrationTest.cs index 47f7021..5372add 100644 --- a/src/CallfireApiClient.IntegrationTests/Api/Numbers/NumberLeasesApiIntegrationTest.cs +++ b/src/CallfireApiClient.IntegrationTests/Api/Numbers/NumberLeasesApiIntegrationTest.cs @@ -15,37 +15,41 @@ public void FindNumberLeases() var leases = Client.NumberLeasesApi.Find(request); Console.WriteLine(leases); - Assert.AreEqual(1, leases.Items.Count); + Assert.True(leases.Items.Count > 0); } [Test] public void GetNumberLease() { - const String number = "18728100635"; + const String number = "12132041238"; var lease = Client.NumberLeasesApi.Get(number); Console.WriteLine(lease); Assert.IsNotNull(lease.Region); Assert.AreEqual(number, lease.PhoneNumber); - Assert.That(lease.Region.City, Is.StringContaining("APPLETON")); + Assert.That(lease.Region.City, Is.StringContaining("LOS ANGELES")); } [Test] public void UpdateNumberLease() { - const string number = "18728100635"; + const string number = "12132041238"; var lease = Client.NumberLeasesApi.Get(number); Assert.IsNotNull(lease.Region); - var autoRenewSaved = lease.AutoRenew; - lease.AutoRenew = !autoRenewSaved; lease.PhoneNumber = number; + lease.TextFeatureStatus = NumberLease.FeatureStatus.DISABLED; + lease.CallFeatureStatus = NumberLease.FeatureStatus.DISABLED; Client.NumberLeasesApi.Update(lease); - lease = Client.NumberLeasesApi.Get(number, "autoRenew,tollFree"); + lease = Client.NumberLeasesApi.Get(number, "number,callFeatureStatus,textFeatureStatus"); Console.WriteLine(lease); + Assert.NotNull(lease.PhoneNumber); + Assert.AreEqual(NumberLease.FeatureStatus.DISABLED, lease.TextFeatureStatus); + Assert.AreEqual(NumberLease.FeatureStatus.DISABLED, lease.CallFeatureStatus); - Assert.IsNull(lease.PhoneNumber); - Assert.AreNotEqual(autoRenewSaved, lease.AutoRenew); + lease.TextFeatureStatus = NumberLease.FeatureStatus.ENABLED; + lease.CallFeatureStatus = NumberLease.FeatureStatus.ENABLED; + Client.NumberLeasesApi.Update(lease); } [Test] @@ -55,35 +59,34 @@ public void FindNumberLeaseConfigs() var configs = Client.NumberLeasesApi.FindConfigs(request); Console.WriteLine(configs); - Assert.AreEqual(1, configs.Items.Count); + Assert.True(configs.Items.Count > 0); } [Test] public void GetNumberLeaseConfig() { - var config = Client.NumberLeasesApi.GetConfig("18728100635"); + var config = Client.NumberLeasesApi.GetConfig("12132041238"); Console.WriteLine(config); - Assert.AreEqual(NumberConfig.NumberConfigType.IVR, config.ConfigType); - Assert.IsNotNull(config.IvrInboundConfig); + Assert.True(NumberConfig.NumberConfigType.TRACKING.Equals(config.ConfigType)); + Assert.True(config.CallTrackingConfig != null); } [Test] public void UpdateNumberLeaseConfig() { - const string number = "18728100635"; + const string number = "12132041238"; var config = Client.NumberLeasesApi.GetConfig(number); - Assert.IsNull(config.CallTrackingConfig); - Assert.AreEqual(NumberConfig.NumberConfigType.IVR, config.ConfigType); + Assert.IsNull(config.IvrInboundConfig); + Assert.AreEqual(NumberConfig.NumberConfigType.TRACKING, config.ConfigType); Client.NumberLeasesApi.UpdateConfig(config); - config = Client.NumberLeasesApi.GetConfig(number, "ivrInboundConfig,configType"); + config = Client.NumberLeasesApi.GetConfig(number, "callTrackingConfig,configType"); Console.WriteLine(config); - Assert.IsNotNull(config.IvrInboundConfig); + Assert.IsNotNull(config.CallTrackingConfig); Assert.IsNull(config.Number); - Assert.AreEqual(NumberConfig.NumberConfigType.IVR, config.ConfigType); - Assert.IsNotNull(config.IvrInboundConfig.DialplanXml); + Assert.AreEqual(NumberConfig.NumberConfigType.TRACKING, config.ConfigType); } } } diff --git a/src/CallfireApiClient.IntegrationTests/CallfireApiClient.IntegrationTests.csproj b/src/CallfireApiClient.IntegrationTests/CallfireApiClient.IntegrationTests.csproj index 8802b0a..76b4efb 100644 --- a/src/CallfireApiClient.IntegrationTests/CallfireApiClient.IntegrationTests.csproj +++ b/src/CallfireApiClient.IntegrationTests/CallfireApiClient.IntegrationTests.csproj @@ -78,17 +78,13 @@ - + Always - + Always - - - - PreserveNewest diff --git a/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train.mp3 b/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train.mp3 deleted file mode 100644 index f86cc8b..0000000 Binary files a/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train.mp3 and /dev/null differ diff --git a/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train.wav b/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train.wav deleted file mode 100644 index bc07804..0000000 Binary files a/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train.wav and /dev/null differ diff --git a/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train1.mp3 b/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train1.mp3 new file mode 100644 index 0000000..6af5ea4 Binary files /dev/null and b/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train1.mp3 differ diff --git a/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train1.wav b/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train1.wav new file mode 100644 index 0000000..38c8b79 Binary files /dev/null and b/src/CallfireApiClient.IntegrationTests/Resources/File-examples/train1.wav differ diff --git a/src/CallfireApiClient.Tests/Api/Campaigns/CallBroadcastsApiTest.cs b/src/CallfireApiClient.Tests/Api/Campaigns/CallBroadcastsApiTest.cs index c7cbf5c..520129b 100644 --- a/src/CallfireApiClient.Tests/Api/Campaigns/CallBroadcastsApiTest.cs +++ b/src/CallfireApiClient.Tests/Api/Campaigns/CallBroadcastsApiTest.cs @@ -15,7 +15,7 @@ namespace CallfireApiClient.Tests.Api.Campaigns public class CallBroadcastsApiTest : AbstractApiTest { [Test] - public void Create() + public void CreateVoiceBroadcast() { var requestJson = GetJsonPayload("/campaigns/callBroadcastsApi/request/createCallBroadcast.json"); var responseJson = GetJsonPayload("/campaigns/callBroadcastsApi/response/createCallBroadcast.json"); @@ -48,6 +48,33 @@ public void Create() Assert.That(restRequest.Value.Parameters, Has.Some.Matches(p => p.Name.Equals("start") && p.Value.Equals("True"))); } + [Test] + public void CreateIvrBroadcast() + { + var requestJson = GetJsonPayload("/campaigns/callBroadcastsApi/request/createIvrBroadcast.json"); + var responseJson = GetJsonPayload("/campaigns/callBroadcastsApi/response/createIvrBroadcast.json"); + var restRequest = MockRestResponse(responseJson); + + var callBroadcast = new CallBroadcast + { + Name = "Example API IVR", + FromNumber = "12135551189", + DialplanXml = "", + Recipients = new List + { + new Recipient { PhoneNumber = "13233832214" }, + new Recipient { PhoneNumber = "13233832215" }, + } + }; + var id = Client.CallBroadcastsApi.Create(callBroadcast, true); + Assert.That(Serializer.Serialize(id), Is.EqualTo(responseJson)); + + Assert.AreEqual(Method.POST, restRequest.Value.Method); + var requestBodyParam = restRequest.Value.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody); + Assert.That(requestBodyParam.Value, Is.EqualTo(requestJson)); + Assert.That(restRequest.Value.Parameters, Has.Some.Matches(p => p.Name.Equals("start") && p.Value.Equals("True"))); + } + [Test] public void Find() { @@ -74,7 +101,7 @@ public void Find() } [Test] - public void Update() + public void UpdateVoiceBroadcast() { var expectedJson = GetJsonPayload("/campaigns/callBroadcastsApi/request/updateCallBroadcast.json"); var restRequest = MockRestResponse(expectedJson); @@ -99,6 +126,27 @@ public void Update() Assert.That(restRequest.Value.Resource, Is.StringEnding("/11")); } + [Test] + public void UpdateIvrBroadcast() + { + var expectedJson = GetJsonPayload("/campaigns/callBroadcastsApi/request/updateIvrBroadcast.json"); + var restRequest = MockRestResponse(expectedJson); + + var callBroadcast = new CallBroadcast + { + Id = 12, + Name = "Example API IVR updated", + FromNumber = "12135551189", + DialplanXml = "\r\n\tCongratulations! You have successfully configured a CallFire I V R.\r\n" + }; + Client.CallBroadcastsApi.Update(callBroadcast); + + Assert.AreEqual(Method.PUT, restRequest.Value.Method); + var requestBodyParam = restRequest.Value.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody); + Assert.AreEqual(requestBodyParam.Value, expectedJson); + Assert.That(restRequest.Value.Resource, Is.StringEnding("/12")); + } + [Test] public void Get() { diff --git a/src/CallfireApiClient.Tests/Api/Campaigns/TextBroadcastsApiTest.cs b/src/CallfireApiClient.Tests/Api/Campaigns/TextBroadcastsApiTest.cs index 8618631..f561670 100644 --- a/src/CallfireApiClient.Tests/Api/Campaigns/TextBroadcastsApiTest.cs +++ b/src/CallfireApiClient.Tests/Api/Campaigns/TextBroadcastsApiTest.cs @@ -182,29 +182,6 @@ public void GetStats() && p.Value.Equals(ToUnixTime(end).ToString()))); } - [Test] - public void GetBatch() - { - var expectedJson = GetJsonPayload("/campaigns/textBroadcastsApi/response/getBatch.json"); - var restRequest = MockRestResponse(expectedJson); - - var request = new GetByIdRequest - { - Offset = 0, - Fields = FIELDS, - Id = 11 - }; - var batch = Client.TextBroadcastsApi.GetBatch(request); - Assert.That(Serializer.Serialize(batch), Is.EqualTo(expectedJson)); - - Assert.AreEqual(Method.GET, restRequest.Value.Method); - var requestBodyParam = restRequest.Value.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody); - Assert.IsNull(requestBodyParam); - Assert.That(restRequest.Value.Parameters, Has.Some.Matches(p => p.Name.Equals("offset") && p.Value.Equals("0"))); - Assert.That(restRequest.Value.Parameters, Has.Some.Matches(p => p.Name.Equals("fields") && p.Value.Equals(FIELDS))); - Assert.That(restRequest.Value.Resource, Is.StringEnding("/batches/11")); - } - [Test] public void GetBatches() { @@ -257,25 +234,6 @@ public void AddBatch() Assert.That(restRequest.Value.Resource, Is.StringEnding("/15/batches")); } - [Test] - public void UpdateBatch() - { - var expectedJson = GetJsonPayload("/campaigns/textBroadcastsApi/request/updateBatch.json"); - var restRequest = MockRestResponse(expectedJson); - - var batch = new Batch - { - Id = 11, - Enabled = true, - }; - Client.TextBroadcastsApi.UpdateBatch(batch); - - Assert.AreEqual(Method.PUT, restRequest.Value.Method); - var requestBodyParam = restRequest.Value.Parameters.FirstOrDefault(p => p.Type == ParameterType.RequestBody); - Assert.AreEqual(requestBodyParam.Value, expectedJson); - Assert.That(restRequest.Value.Resource, Is.StringEnding("/11")); - } - [Test] public void AddRecipients() { diff --git a/src/CallfireApiClient.Tests/CallfireApiClient.Tests.csproj b/src/CallfireApiClient.Tests/CallfireApiClient.Tests.csproj index 1e7d01b..3b6c012 100644 --- a/src/CallfireApiClient.Tests/CallfireApiClient.Tests.csproj +++ b/src/CallfireApiClient.Tests/CallfireApiClient.Tests.csproj @@ -80,6 +80,9 @@ + + + @@ -213,9 +216,4 @@ Always - - - - - \ No newline at end of file diff --git a/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/request/createIvrBroadcast.json b/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/request/createIvrBroadcast.json new file mode 100644 index 0000000..d83d66e --- /dev/null +++ b/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/request/createIvrBroadcast.json @@ -0,0 +1,13 @@ +{ + "name": "Example API IVR", + "fromNumber": "12135551189", + "recipients": [ + { + "phoneNumber": "13233832214" + }, + { + "phoneNumber": "13233832215" + } + ], + "dialplanXml": "" +} \ No newline at end of file diff --git a/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/request/updateIvrBroadcast.json b/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/request/updateIvrBroadcast.json new file mode 100644 index 0000000..233f36d --- /dev/null +++ b/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/request/updateIvrBroadcast.json @@ -0,0 +1,6 @@ +{ + "id": 12, + "name": "Example API IVR updated", + "fromNumber": "12135551189", + "dialplanXml": "\r\n\tCongratulations! You have successfully configured a CallFire I V R.\r\n" +} \ No newline at end of file diff --git a/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/response/createIvrBroadcast.json b/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/response/createIvrBroadcast.json new file mode 100644 index 0000000..b8bb0a4 --- /dev/null +++ b/src/CallfireApiClient.Tests/JsonMocks/campaigns/callBroadcastsApi/response/createIvrBroadcast.json @@ -0,0 +1,3 @@ +{ + "id": 12 +} \ No newline at end of file diff --git a/src/CallfireApiClient/Api/CallsTexts/Model/CallRecord.cs b/src/CallfireApiClient/Api/CallsTexts/Model/CallRecord.cs index 9bb24ec..8e3ba32 100644 --- a/src/CallfireApiClient/Api/CallsTexts/Model/CallRecord.cs +++ b/src/CallfireApiClient/Api/CallsTexts/Model/CallRecord.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using CallfireApiClient.Api.Campaigns.Model; namespace CallfireApiClient.Api.CallsTexts.Model @@ -12,6 +11,8 @@ public class CallRecord : ActionRecord public IList Recordings { get; private set; } + public IList QuestionResponses { get; private set; } + public enum CallResult { LA, diff --git a/src/CallfireApiClient/Api/Campaigns/Model/QuestionResponse.cs b/src/CallfireApiClient/Api/Campaigns/Model/QuestionResponse.cs new file mode 100644 index 0000000..adc8892 --- /dev/null +++ b/src/CallfireApiClient/Api/Campaigns/Model/QuestionResponse.cs @@ -0,0 +1,20 @@ +using CallfireApiClient.Api.Common.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace CallfireApiClient.Api.Campaigns.Model +{ + public class QuestionResponse : CallfireModel + { + public string Question { get; set; } + + public string Response { get; set; } + + public override string ToString() + { + return string.Format("[QuestionResponse: Question={0}, Response={1}", Question, Response); + } + } +} diff --git a/src/CallfireApiClient/Api/Campaigns/TextBroadcastsApi.cs b/src/CallfireApiClient/Api/Campaigns/TextBroadcastsApi.cs index 0179003..52c7fa2 100644 --- a/src/CallfireApiClient/Api/Campaigns/TextBroadcastsApi.cs +++ b/src/CallfireApiClient/Api/Campaigns/TextBroadcastsApi.cs @@ -153,41 +153,6 @@ public void Archive(long id) Client.Post(TB_ITEM_ARCHIVE_PATH.ReplaceFirst(ClientConstants.PLACEHOLDER, id.ToString())); } - /// - /// Get text broadcast batch. Retrieve batch associated with text campaign - /// - /// get request - /// batch object - /// in case HTTP response code is 400 - Bad request, the request was formatted improperly. - /// in case HTTP response code is 401 - Unauthorized, API Key missing or invalid. - /// in case HTTP response code is 403 - Forbidden, insufficient permissions. - /// in case HTTP response code is 404 - NOT FOUND, the resource requested does not exist. - /// in case HTTP response code is 500 - Internal Server Error. - /// in case HTTP response code is something different from codes listed above. - /// in case error has occurred in client. - public Batch GetBatch(GetByIdRequest request) - { - String path = TB_BATCHES_ITEM_PATH.ReplaceFirst(ClientConstants.PLACEHOLDER, request.Id.ToString()); - return Client.Get(path, request); - } - - /// - /// Update text broadcast batch - /// - /// batach to update - /// in case HTTP response code is 400 - Bad request, the request was formatted improperly. - /// in case HTTP response code is 401 - Unauthorized, API Key missing or invalid. - /// in case HTTP response code is 403 - Forbidden, insufficient permissions. - /// in case HTTP response code is 404 - NOT FOUND, the resource requested does not exist. - /// in case HTTP response code is 500 - Internal Server Error. - /// in case HTTP response code is something different from codes listed above. - /// in case error has occurred in client. - public void UpdateBatch(Batch batch) - { - Validate.NotNull(batch.Id, "batch.id cannot be null"); - Client.Put(TB_BATCHES_ITEM_PATH.ReplaceFirst(ClientConstants.PLACEHOLDER, batch.Id.ToString()), batch); - } - /// /// Get text broadcast batches. Retrieve batches associated with text campaign /// diff --git a/src/CallfireApiClient/CallfireApiClient.csproj b/src/CallfireApiClient/CallfireApiClient.csproj index 5cf9d9d..8176e46 100644 --- a/src/CallfireApiClient/CallfireApiClient.csproj +++ b/src/CallfireApiClient/CallfireApiClient.csproj @@ -72,6 +72,7 @@ +