diff --git a/.gitignore b/.gitignore
index 7c4ca8b..40f7967 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,119 @@
+# Created by https://www.toptal.com/developers/gitignore/api/visualstudio,dotnetcore,jetbrains
+# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudio,dotnetcore,jetbrains
+
+### DotnetCore ###
+# .NET Core build folders
+bin/
+obj/
+
+# Common node modules locations
+/node_modules
+/wwwroot/node_modules
+
+### JetBrains ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### JetBrains Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+.idea/**/sonarlint/
+
+# SonarQube Plugin
+.idea/**/sonarIssues.xml
+
+# Markdown Navigator plugin
+.idea/**/markdown-navigator.xml
+.idea/**/markdown-navigator-enh.xml
+.idea/**/markdown-navigator/
+
+# Cache file creation bug
+# See https://youtrack.jetbrains.com/issue/JBR-2257
+.idea/$CACHE_FILE$
+
+### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
+*.rsuser
*.suo
*.user
*.userosscache
@@ -10,6 +122,9 @@
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
+# Mono auto generated files
+mono_crash.*
+
# Build results
[Dd]ebug/
[Dd]ebugPublic/
@@ -17,41 +132,58 @@
[Rr]eleases/
x64/
x86/
-build/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
+[Ll]og/
+[Ll]ogs/
-# Visual Studio 2015 cache/options directory
+# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
-# NUNIT
+# NUnit
*.VisualState.xml
TestResult.xml
+nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
-# DNX
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
project.lock.json
+project.fragment.lock.json
artifacts/
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
*_i.c
*_p.c
-*_i.h
+*_h.h
*.ilk
*.meta
*.obj
+*.iobj
*.pch
*.pdb
+*.ipdb
*.pgc
*.pgd
*.rsp
@@ -61,6 +193,7 @@ artifacts/
*.tlh
*.tmp
*.tmp_proj
+*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
@@ -76,14 +209,21 @@ _Chutzpah*
ipch/
*.aps
*.ncb
+*.opendb
*.opensdf
*.sdf
*.cachefile
+*.VC.db
+*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
# TFS 2012 Local Workspace
$tf/
@@ -96,15 +236,23 @@ _ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
-# JustCode is a .NET coding add-in
-.JustCode
-
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*[.json, .xml, .info]
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
# NCrunch
_NCrunch_*
.*crunch*.local.xml
@@ -136,45 +284,72 @@ publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
-# TODO: Comment the next line if you want to checkin your web deploy settings
+# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
# NuGet Packages
*.nupkg
+# NuGet Symbol Packages
+*.snupkg
# The packages folder can be ignored because of Package Restore
-**/packages/*
+**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
-!**/packages/build/
+!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
-#!**/packages/repositories.config
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
-# Windows Azure Build Output
+# Microsoft Azure Build Output
csx/
*.build.csdef
-# Windows Store app package directory
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
-!*.[Cc]ache/
+!?*.[Cc]ache/
# Others
ClientBin/
-[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
+*.jfm
*.pfx
*.publishsettings
-node_modules/
orleans.codegen.cs
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
# RIA/Silverlight projects
Generated_Code/
@@ -185,21 +360,32 @@ _UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
+*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
+node_modules/
# Visual Studio 6 build log
*.plg
@@ -207,6 +393,9 @@ FakesAssemblies/
# Visual Studio 6 workspace options file
*.opt
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
@@ -214,3 +403,62 @@ FakesAssemblies/
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# End of https://www.toptal.com/developers/gitignore/api/visualstudio,dotnetcore,jetbrains
diff --git a/TextmagicRest.Examples/App.config b/TextmagicRest.Examples/App.config
deleted file mode 100644
index 9c05822..0000000
--- a/TextmagicRest.Examples/App.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/TextmagicRest.Examples/Program.cs b/TextmagicRest.Examples/Program.cs
index 746454b..a32fce9 100644
--- a/TextmagicRest.Examples/Program.cs
+++ b/TextmagicRest.Examples/Program.cs
@@ -1,22 +1,19 @@
using System;
-using System.Collections.Generic;
-using TextmagicRest;
-using TextmagicRest.Model;
-namespace textmagicsample
+namespace TextmagicRest.Examples
{
- class Program
+ public class Program
{
- public static void Main(string[] args)
+ public static void Main()
{
- sendMessage();
+ SendMessage();
Console.WriteLine("Check your phone ;-)");
Console.WriteLine("Press any key to continue . . . ");
Console.ReadKey(true);
}
- public static void sendMessage()
+ public static void SendMessage()
{
var client = new Client("replace-with-username", "replace-with-user-api-key");
var link = client.SendMessage("Hello from TextMagic API C# Wrapper demo application", "replace-with-phoneNumber-WithInternationalPrefix");
diff --git a/TextmagicRest.Examples/Properties/AssemblyInfo.cs b/TextmagicRest.Examples/Properties/AssemblyInfo.cs
deleted file mode 100644
index 2b0cde9..0000000
--- a/TextmagicRest.Examples/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("TextmagicRest.Examples")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("TextmagicRest.Examples")]
-[assembly: AssemblyCopyright("Copyright © 2015")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("9d899328-bb7e-4513-84fa-b8b1bf65f945")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/TextmagicRest.Examples/TextmagicRest.Examples.csproj b/TextmagicRest.Examples/TextmagicRest.Examples.csproj
index ab961bf..506c291 100644
--- a/TextmagicRest.Examples/TextmagicRest.Examples.csproj
+++ b/TextmagicRest.Examples/TextmagicRest.Examples.csproj
@@ -1,65 +1,12 @@
-
-
-
+
+
- Debug
- AnyCPU
- {2072E259-422B-4F76-A874-01A50079CF67}
Exe
- Properties
- TextmagicRest.Examples
- TextmagicRest.Examples
- v4.5.1
- 512
- true
+ netcoreapp3.1
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
- {2aa7cf5d-8e4c-4c6d-8871-26afbe6c078f}
- TextmagicRest
-
+
-
-
-
\ No newline at end of file
+
+
diff --git a/TextmagicRest.Tests/Common.cs b/TextmagicRest.Tests/Common.cs
index d1a8720..a007695 100644
--- a/TextmagicRest.Tests/Common.cs
+++ b/TextmagicRest.Tests/Common.cs
@@ -1,12 +1,7 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using RestSharp;
-using System.Net;
+using System.Net;
using Moq;
-using RestSharp.Deserializers;
+using RestSharp;
+using RestSharp.Serialization.Json;
namespace TextmagicRest.Tests
{
@@ -15,13 +10,14 @@ public static class Common
public static string Username = "csharp-test-username";
public static string Token = "csharp-test-token";
- public static IRestClient CreateClient(string json, ResponseStatus? responseStatus, HttpStatusCode? statusCode) where T: new()
+ public static IRestClient CreateClient(string json, ResponseStatus? responseStatus,
+ HttpStatusCode? statusCode) where T : new()
{
- var resp = new RestResponse()
+ var resp = new RestResponse
{
ContentType = "application/json",
- ResponseStatus = responseStatus.HasValue? (ResponseStatus)responseStatus: RestSharp.ResponseStatus.Completed,
- StatusCode = statusCode.HasValue? (HttpStatusCode)statusCode: HttpStatusCode.OK,
+ ResponseStatus = responseStatus.HasValue ? (ResponseStatus) responseStatus : ResponseStatus.Completed,
+ StatusCode = statusCode.HasValue ? (HttpStatusCode) statusCode : HttpStatusCode.OK,
Content = json
};
@@ -35,4 +31,4 @@ public static class Common
return mock.Object;
}
}
-}
+}
\ No newline at end of file
diff --git a/TextmagicRest.Tests/ContactsTests.cs b/TextmagicRest.Tests/ContactsTests.cs
index 703f94e..7233f81 100644
--- a/TextmagicRest.Tests/ContactsTests.cs
+++ b/TextmagicRest.Tests/ContactsTests.cs
@@ -1,17 +1,22 @@
using System;
using System.Collections.Generic;
-using TextmagicRest.Model;
using Moq;
using NUnit.Framework;
using RestSharp;
-using System.Text;
-using RestSharp.Deserializers;
+using TextmagicRest.Model;
namespace TextmagicRest.Tests
{
[TestFixture]
public class ContactsTests
{
+ [SetUp]
+ public void Setup()
+ {
+ mockClient = new Mock(Common.Username, Common.Token);
+ mockClient.CallBase = true;
+ }
+
private Mock mockClient;
private const int contactId = 31337;
@@ -25,56 +30,140 @@ public class ContactsTests
private const string customFieldName = "Secure ID";
private const string customFieldValue = "ABC";
private const string contactCompanyName = "JohnCo";
- private DateTime customFieldValueCreatedAt = new DateTime(2007, 12, 27, 13, 04, 20, DateTimeKind.Utc);
- private int[] listIds = { 123, 456 };
+ private readonly DateTime customFieldValueCreatedAt = new DateTime(2007, 12, 27, 13, 04, 20, DateTimeKind.Utc);
+ private readonly int[] listIds = {123, 456};
- [SetUp]
- public void Setup()
+ [Test]
+ public void ShouldCreateContact()
{
- mockClient = new Mock(Common.Username, Common.Token);
- mockClient.CallBase = true;
+ IRestRequest savedRequest = null;
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new LinkResult());
+ var client = mockClient.Object;
+
+ client.CreateContact(contactPhone, listIds, contactFirstName, contactLastName, contactCompanyName,
+ contactEmail);
+
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ Assert.IsNotNull(savedRequest);
+ Assert.AreEqual("contacts", savedRequest.Resource);
+ Assert.AreEqual(Method.POST, savedRequest.Method);
+ Assert.AreEqual(6, savedRequest.Parameters.Count);
+ Assert.AreEqual(contactFirstName, savedRequest.Parameters.Find(x => x.Name == "firstName").Value);
+ Assert.AreEqual(contactLastName, savedRequest.Parameters.Find(x => x.Name == "lastName").Value);
+ Assert.AreEqual(contactPhone, savedRequest.Parameters.Find(x => x.Name == "phone").Value);
+ Assert.AreEqual(contactEmail, savedRequest.Parameters.Find(x => x.Name == "email").Value);
+ Assert.AreEqual(contactCompanyName, savedRequest.Parameters.Find(x => x.Name == "companyName").Value);
+ Assert.AreEqual(string.Join(",", listIds), savedRequest.Parameters.Find(x => x.Name == "lists").Value);
+
+ var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/contacts/31337\"}";
+
+ var testClient = Common.CreateClient(content, null, null);
+ client = new Client(testClient);
+
+ var link = client.CreateContact(contactPhone, listIds, contactFirstName, contactLastName,
+ contactCompanyName, contactEmail);
+
+ Assert.IsTrue(link.Success);
+ Assert.AreEqual(31337, link.Id);
+ Assert.AreEqual("/api/v2/contacts/31337", link.Href);
}
[Test]
- public void ShouldGetSingleContact()
+ public void ShouldCreateCustomField()
{
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new Contact());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new LinkResult());
var client = mockClient.Object;
- client.GetContact(contactId);
+ client.CreateCustomField(customFieldName);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ Assert.IsNotNull(savedRequest);
+ Assert.AreEqual("customfields", savedRequest.Resource);
+ Assert.AreEqual(Method.POST, savedRequest.Method);
+ Assert.AreEqual(1, savedRequest.Parameters.Count);
+ Assert.AreEqual(customFieldName, savedRequest.Parameters.Find(x => x.Name == "name").Value);
+
+ var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/contacts/31337\"}";
+
+ var testClient = Common.CreateClient(content, null, null);
+ client = new Client(testClient);
+
+ var link = client.CreateCustomField(customFieldName);
+
+ Assert.IsTrue(link.Success);
+ Assert.AreEqual(31337, link.Id);
+ Assert.AreEqual("/api/v2/contacts/31337", link.Href);
+ }
+
+ [Test]
+ public void ShouldDeleteContact()
+ {
+ IRestRequest savedRequest = null;
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new DeleteResult());
+ var client = mockClient.Object;
+
+ var contact = new Contact
+ {
+ Id = contactId
+ };
+
+ client.DeleteContact(contact);
+
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
Assert.AreEqual("contacts/{id}", savedRequest.Resource);
- Assert.AreEqual(Method.GET, savedRequest.Method);
+ Assert.AreEqual(Method.DELETE, savedRequest.Method);
Assert.AreEqual(1, savedRequest.Parameters.Count);
+ Assert.AreEqual(contactId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
- var content = "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }";
+ var content = "{}";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var contact = client.GetContact(contactId);
+ var result = client.DeleteContact(contact);
- Assert.IsTrue(contact.Success);
- Assert.AreEqual(contactId, contact.Id);
- Assert.AreEqual(contactFirstName, contact.FirstName);
- Assert.AreEqual(contactLastName, contact.LastName);
- Assert.AreEqual(contactPhone, contact.Phone);
- Assert.IsNull(contact.CompanyName);
- Assert.AreEqual(contactEmail, contact.Email);
- Assert.AreEqual(countryId, contact.Country.Id);
- Assert.AreEqual(countryName, contact.Country.Name);
- Assert.Greater(contact.CustomFields.Count, 0);
- Assert.AreEqual(customFieldId, contact.CustomFields[0].Id);
- Assert.AreEqual(customFieldName, contact.CustomFields[0].Name);
- Assert.AreEqual(customFieldValue, contact.CustomFields[0].Value);
- Assert.AreEqual(customFieldValueCreatedAt.ToLocalTime(), contact.CustomFields[0].CreatedAt);
+ Assert.IsTrue(result.Success);
+ }
+
+ [Test]
+ public void ShouldDeleteCustomField()
+ {
+ IRestRequest savedRequest = null;
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new DeleteResult());
+ var client = mockClient.Object;
+
+ var customField = new CustomField
+ {
+ Id = customFieldId
+ };
+
+ client.DeleteCustomField(customField);
+
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ Assert.IsNotNull(savedRequest);
+ Assert.AreEqual("customfields/{id}", savedRequest.Resource);
+ Assert.AreEqual(Method.DELETE, savedRequest.Method);
+ Assert.AreEqual(1, savedRequest.Parameters.Count);
+ Assert.AreEqual(customFieldId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
+
+ var content = "{}";
+
+ var testClient = Common.CreateClient(content, null, null);
+ client = new Client(testClient);
+
+ var result = client.DeleteCustomField(customField);
+
+ Assert.IsTrue(result.Success);
}
[Test]
@@ -85,7 +174,7 @@ public void ShouldGetAllContacts()
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
.Returns(new ContactsResult());
var client = mockClient.Object;
@@ -100,14 +189,13 @@ public void ShouldGetAllContacts()
Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 3, \"resources\": ["
- + "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
-
- + "{ \"id\": \"31338\", \"first_name\": \"Jack\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123457\", \"email\": \"jack@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ ] }"
- + "] }";
+ + "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
+ + "{ \"id\": \"31338\", \"first_name\": \"Jack\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123457\", \"email\": \"jack@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ ] }"
+ + "] }";
var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
@@ -130,7 +218,7 @@ public void ShouldGetAllContactsWithDefaultParameters()
{
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
.Returns(new ContactsResult());
var client = mockClient.Object;
@@ -143,14 +231,13 @@ public void ShouldGetAllContactsWithDefaultParameters()
Assert.AreEqual(0, savedRequest.Parameters.Count);
var content = "{ \"page\": 1, \"limit\": 10, \"pageCount\": 3, \"resources\": ["
- + "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
-
- + "{ \"id\": \"31338\", \"first_name\": \"Jack\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123457\", \"email\": \"jack@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ ] }"
- + "] }";
+ + "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
+ + "{ \"id\": \"31338\", \"first_name\": \"Jack\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123457\", \"email\": \"jack@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ ] }"
+ + "] }";
var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
@@ -177,7 +264,7 @@ public void ShouldGetAllContactsWithSharedIncluded()
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
.Returns(new ContactsResult());
var client = mockClient.Object;
@@ -190,17 +277,17 @@ public void ShouldGetAllContactsWithSharedIncluded()
Assert.AreEqual(3, savedRequest.Parameters.Count);
Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
- Assert.AreEqual(Convert.ToInt32(shared).ToString(), savedRequest.Parameters.Find(x => x.Name == "shared").Value);
+ Assert.AreEqual(Convert.ToInt32(shared).ToString(),
+ savedRequest.Parameters.Find(x => x.Name == "shared").Value);
var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 3, \"resources\": ["
- + "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
-
- + "{ \"id\": \"31338\", \"first_name\": \"Jack\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123457\", \"email\": \"jack@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ ] }"
- + "] }";
+ + "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
+ + "{ \"id\": \"31338\", \"first_name\": \"Jack\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123457\", \"email\": \"jack@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ ] }"
+ + "] }";
var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
@@ -219,331 +306,322 @@ public void ShouldGetAllContactsWithSharedIncluded()
}
[Test]
- public void ShouldUpdateContact()
+ public void ShouldGetAllCustomFields()
{
+ var page = 2;
+ var limit = 3;
+
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new LinkResult());
- mockClient.Setup(trc => trc.SetCustomFieldValue(It.IsAny(), It.IsAny(), It.IsAny()))
- .Returns(new LinkResult());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new CustomFieldsResult());
var client = mockClient.Object;
- var contact = new Contact()
- {
- Id = contactId,
- Phone = contactPhone,
- FirstName = contactFirstName,
- LastName = contactLastName,
- CompanyName = contactCompanyName,
- Country = new Country() { Id = countryId, Name = countryName },
- Email = contactEmail
- };
-
- CustomField testCustomField = new CustomField() { Id = 1, Name = "Id1", Value = "StringId1" };
- contact.CustomFields = new List();
- contact.CustomFields.Add(testCustomField);
-
- client.UpdateContact(contact, listIds);
+ client.GetCustomFields(page, limit);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
- mockClient.Verify(trc => trc.SetCustomFieldValue(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("contacts/{id}", savedRequest.Resource);
- Assert.AreEqual(Method.PUT, savedRequest.Method);
- Assert.AreEqual(7, savedRequest.Parameters.Count);
- Assert.AreEqual(contactId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
- Assert.AreEqual(contactPhone, savedRequest.Parameters.Find(x => x.Name == "phone").Value);
- Assert.AreEqual(string.Join(",", listIds), savedRequest.Parameters.Find(x => x.Name == "lists").Value);
- Assert.AreEqual(contactFirstName, savedRequest.Parameters.Find(x => x.Name == "firstName").Value);
- Assert.AreEqual(contactLastName, savedRequest.Parameters.Find(x => x.Name == "lastName").Value);
- Assert.AreEqual(contactEmail, savedRequest.Parameters.Find(x => x.Name == "email").Value);
- Assert.AreEqual(contactCompanyName, savedRequest.Parameters.Find(x => x.Name == "companyName").Value);
+ Assert.AreEqual("customfields", savedRequest.Resource);
+ Assert.AreEqual(Method.GET, savedRequest.Method);
+ Assert.AreEqual(2, savedRequest.Parameters.Count);
+ Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
+ Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
- var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/contacts/31337\"}";
+ var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 1, \"resources\": ["
+ + "{ \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" },"
+ + "{ \"id\": 589, \"name\": \"Secure ID2\", \"value\": \"ABCD\", \"createdAt\": \"2007-12-27T13:04:20+0000\" }"
+ + "] }";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var link = client.UpdateContact(contact, listIds);
+ var results = client.GetCustomFields(page, limit);
- Assert.IsTrue(link.Success);
- Assert.AreEqual(31337, link.Id);
- Assert.AreEqual("/api/v2/contacts/31337", link.Href);
+ Assert.IsTrue(results.CustomFields[0].Success);
+ Assert.AreEqual(73, results.CustomFields[0].Id);
+ Assert.AreEqual("Secure ID", results.CustomFields[0].Name);
+ Assert.AreEqual("ABC", results.CustomFields[0].Value);
+ Assert.IsNotNull(results.CustomFields[0].CreatedAt);
+
+ Assert.IsTrue(results.CustomFields[1].Success);
+ Assert.AreEqual(589, results.CustomFields[1].Id);
+ Assert.AreEqual("Secure ID2", results.CustomFields[1].Name);
+ Assert.AreEqual("ABCD", results.CustomFields[1].Value);
+ Assert.IsNotNull(results.CustomFields[1].CreatedAt);
}
[Test]
- public void ShouldCreateContact()
+ public void ShouldGetAllUnsubscribedContacts()
{
+ var page = 2;
+ var limit = 3;
+
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new LinkResult());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new UnsubscribedContactsResult());
var client = mockClient.Object;
- client.CreateContact(contactPhone, listIds, contactFirstName, contactLastName, contactCompanyName, contactEmail);
+ client.GetUnsubscribedContacts(page, limit);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("contacts", savedRequest.Resource);
- Assert.AreEqual(Method.POST, savedRequest.Method);
- Assert.AreEqual(6, savedRequest.Parameters.Count);
- Assert.AreEqual(contactFirstName, savedRequest.Parameters.Find(x => x.Name == "firstName").Value);
- Assert.AreEqual(contactLastName, savedRequest.Parameters.Find(x => x.Name == "lastName").Value);
- Assert.AreEqual(contactPhone, savedRequest.Parameters.Find(x => x.Name == "phone").Value);
- Assert.AreEqual(contactEmail, savedRequest.Parameters.Find(x => x.Name == "email").Value);
- Assert.AreEqual(contactCompanyName, savedRequest.Parameters.Find(x => x.Name == "companyName").Value);
- Assert.AreEqual(string.Join(",", listIds), savedRequest.Parameters.Find(x => x.Name == "lists").Value);
+ Assert.AreEqual("unsubscribers", savedRequest.Resource);
+ Assert.AreEqual(Method.GET, savedRequest.Method);
+ Assert.AreEqual(2, savedRequest.Parameters.Count);
+ Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
+ Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
- var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/contacts/31337\"}";
+ var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 1, \"resources\": ["
+ + "{ \"id\": \"276\", \"firstName\": \"John\", \"lastName\": \"Doe\","
+ + "\"phone\": \"999123456\", \"unsubscribeTime\": \"2007-12-27T13:04:20+0000\" } ] }";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var link = client.CreateContact(contactPhone, listIds, contactFirstName, contactLastName, contactCompanyName, contactEmail);
+ var results = client.GetUnsubscribedContacts(page, limit);
- Assert.IsTrue(link.Success);
- Assert.AreEqual(31337, link.Id);
- Assert.AreEqual("/api/v2/contacts/31337", link.Href);
+ Assert.IsTrue(results.UnsubscribedContacts[0].Success);
+ Assert.AreEqual(276, results.UnsubscribedContacts[0].Id);
+ Assert.AreEqual("John", results.UnsubscribedContacts[0].FirstName);
+ Assert.AreEqual("Doe", results.UnsubscribedContacts[0].LastName);
+ Assert.AreEqual("999123456", results.UnsubscribedContacts[0].Phone);
+ Assert.IsNotNull(results.UnsubscribedContacts[0].UnsubscribedAt);
}
[Test]
- public void ShouldDeleteContact()
+ public void ShouldGetListsWhichContactBelongsTo()
{
+ var page = 2;
+ var limit = 3;
+
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new DeleteResult());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new ContactListsResult());
var client = mockClient.Object;
- var contact = new Contact()
- {
- Id = contactId
- };
-
- client.DeleteContact(contact);
+ client.GetListsWhichContactBelongsTo(contactId, page, limit);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("contacts/{id}", savedRequest.Resource);
- Assert.AreEqual(Method.DELETE, savedRequest.Method);
- Assert.AreEqual(1, savedRequest.Parameters.Count);
+ Assert.AreEqual("contacts/{id}/lists", savedRequest.Resource);
+ Assert.AreEqual(Method.GET, savedRequest.Method);
+ Assert.AreEqual(3, savedRequest.Parameters.Count);
Assert.AreEqual(contactId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
+ Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
+ Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
- var content = "{}";
+ var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 1, \"resources\": ["
+ + "{ \"id\": \"31337\", \"name\": \"Partners\", \"description\": \"\","
+ + "\"membersCount\": 1, \"shared\": false } ] }";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var result = client.DeleteContact(contact);
+ var results = client.GetListsWhichContactBelongsTo(contactId, page, limit);
- Assert.IsTrue(result.Success);
+ Assert.IsTrue(results.Success);
+ Assert.AreEqual(contactId, results.ContactLists[0].Id);
+ Assert.AreEqual("Partners", results.ContactLists[0].Name);
+ Assert.AreEqual("", results.ContactLists[0].Description);
+ Assert.AreEqual(1, results.ContactLists[0].MembersCount);
+ Assert.AreEqual(false, results.ContactLists[0].Shared);
}
[Test]
- public void ShouldGetSingleUnsubscribedContact()
+ public void ShouldGetSingleContact()
{
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new UnsubscribedContact());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new Contact());
var client = mockClient.Object;
- client.GetUnsubscribedContact(contactId);
+ client.GetContact(contactId);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("unsubscribers/{id}", savedRequest.Resource);
+ Assert.AreEqual("contacts/{id}", savedRequest.Resource);
Assert.AreEqual(Method.GET, savedRequest.Method);
Assert.AreEqual(1, savedRequest.Parameters.Count);
- var content = "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\","
- + "\"phone\": \"999123456\", \"unsubscribeTime\": \"2007-12-27T13:04:20+0000\" } ] }";
+ var content = "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var contact = client.GetUnsubscribedContact(contactId);
+ var contact = client.GetContact(contactId);
Assert.IsTrue(contact.Success);
Assert.AreEqual(contactId, contact.Id);
Assert.AreEqual(contactFirstName, contact.FirstName);
Assert.AreEqual(contactLastName, contact.LastName);
Assert.AreEqual(contactPhone, contact.Phone);
- Assert.AreEqual(customFieldValueCreatedAt.ToLocalTime(), contact.UnsubscribedAt);
+ Assert.IsNull(contact.CompanyName);
+ Assert.AreEqual(contactEmail, contact.Email);
+ Assert.AreEqual(countryId, contact.Country.Id);
+ Assert.AreEqual(countryName, contact.Country.Name);
+ Assert.Greater(contact.CustomFields.Count, 0);
+ Assert.AreEqual(customFieldId, contact.CustomFields[0].Id);
+ Assert.AreEqual(customFieldName, contact.CustomFields[0].Name);
+ Assert.AreEqual(customFieldValue, contact.CustomFields[0].Value);
+ Assert.AreEqual(customFieldValueCreatedAt.ToLocalTime(), contact.CustomFields[0].CreatedAt);
}
[Test]
- public void ShouldGetAllUnsubscribedContacts()
+ public void ShouldGetSingleCustomField()
{
- var page = 2;
- var limit = 3;
-
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new UnsubscribedContactsResult());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new CustomField());
var client = mockClient.Object;
- client.GetUnsubscribedContacts(page, limit);
+ client.GetCustomField(customFieldId);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("unsubscribers", savedRequest.Resource);
+ Assert.AreEqual("customfields/{id}", savedRequest.Resource);
Assert.AreEqual(Method.GET, savedRequest.Method);
- Assert.AreEqual(2, savedRequest.Parameters.Count);
- Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
- Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
-
- var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 1, \"resources\": ["
- + "{ \"id\": \"276\", \"firstName\": \"John\", \"lastName\": \"Doe\","
- + "\"phone\": \"999123456\", \"unsubscribeTime\": \"2007-12-27T13:04:20+0000\" } ] }";
-
- var testClient = Common.CreateClient(content, null, null);
- client = new Client(testClient);
-
- var results = client.GetUnsubscribedContacts(page, limit);
-
- Assert.IsTrue(results.UnsubscribedContacts[0].Success);
- Assert.AreEqual(276, results.UnsubscribedContacts[0].Id);
- Assert.AreEqual("John", results.UnsubscribedContacts[0].FirstName);
- Assert.AreEqual("Doe", results.UnsubscribedContacts[0].LastName);
- Assert.AreEqual("999123456", results.UnsubscribedContacts[0].Phone);
- Assert.IsNotNull(results.UnsubscribedContacts[0].UnsubscribedAt);
- }
-
- [Test]
- public void ShouldUnsubscribeContact()
- {
- IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new LinkResult());
- var client = mockClient.Object;
-
- var contact = new Contact() { Phone = contactPhone };
- client.UnsubscribeContact(contact);
-
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
- Assert.IsNotNull(savedRequest);
- Assert.AreEqual("unsubscribers", savedRequest.Resource);
- Assert.AreEqual(Method.POST, savedRequest.Method);
Assert.AreEqual(1, savedRequest.Parameters.Count);
- Assert.AreEqual(contactPhone, savedRequest.Parameters.Find(x => x.Name == "phone").Value);
+ Assert.AreEqual(customFieldId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
- var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/contacts/31337\"}";
+ var content =
+ "{ \"id\": \"31337\", \"name\": \"customfieldname\", \"createdAt\": \"2007-12-27T13:04:20+0000\"}";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var link = client.UnsubscribeContact(contact);
+ var link = client.GetCustomField(customFieldId);
Assert.IsTrue(link.Success);
Assert.AreEqual(31337, link.Id);
- Assert.AreEqual("/api/v2/contacts/31337", link.Href);
+ Assert.AreEqual("customfieldname", link.Name);
+ Assert.IsNotNull(link.CreatedAt);
+ Assert.IsNull(link.Value);
}
[Test]
- public void ShouldGetSingleCustomField()
+ public void ShouldGetSingleUnsubscribedContact()
{
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new CustomField());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new UnsubscribedContact());
var client = mockClient.Object;
- client.GetCustomField(customFieldId);
+ client.GetUnsubscribedContact(contactId);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("customfields/{id}", savedRequest.Resource);
+ Assert.AreEqual("unsubscribers/{id}", savedRequest.Resource);
Assert.AreEqual(Method.GET, savedRequest.Method);
Assert.AreEqual(1, savedRequest.Parameters.Count);
- Assert.AreEqual(customFieldId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
- var content = "{ \"id\": \"31337\", \"name\": \"customfieldname\", \"createdAt\": \"2007-12-27T13:04:20+0000\"}";
+ var content = "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\","
+ + "\"phone\": \"999123456\", \"unsubscribeTime\": \"2007-12-27T13:04:20+0000\" } ] }";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var link = client.GetCustomField(customFieldId);
+ var contact = client.GetUnsubscribedContact(contactId);
- Assert.IsTrue(link.Success);
- Assert.AreEqual(31337, link.Id);
- Assert.AreEqual("customfieldname", link.Name);
- Assert.IsNotNull(link.CreatedAt);
- Assert.IsNull(link.Value);
+ Assert.IsTrue(contact.Success);
+ Assert.AreEqual(contactId, contact.Id);
+ Assert.AreEqual(contactFirstName, contact.FirstName);
+ Assert.AreEqual(contactLastName, contact.LastName);
+ Assert.AreEqual(contactPhone, contact.Phone);
+ Assert.AreEqual(customFieldValueCreatedAt.ToLocalTime(), contact.UnsubscribedAt);
}
[Test]
- public void ShouldGetAllCustomFields()
+ public void ShouldSearchContacts()
{
var page = 2;
var limit = 3;
+ var shared = false;
+ int[] ids = {276};
+ var listId = 123;
+ var query = "my_query";
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new CustomFieldsResult());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new ContactsResult());
var client = mockClient.Object;
- client.GetCustomFields(page, limit);
+ client.SearchContacts(page, limit, shared, ids, listId, query);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("customfields", savedRequest.Resource);
+ Assert.AreEqual("contacts/search", savedRequest.Resource);
Assert.AreEqual(Method.GET, savedRequest.Method);
- Assert.AreEqual(2, savedRequest.Parameters.Count);
+ Assert.AreEqual(6, savedRequest.Parameters.Count);
Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
+ Assert.AreEqual(Convert.ToInt32(shared).ToString(),
+ savedRequest.Parameters.Find(x => x.Name == "shared").Value);
+ Assert.AreEqual(ids[0].ToString(), savedRequest.Parameters.Find(x => x.Name == "ids").Value);
+ Assert.AreEqual(listId.ToString(), savedRequest.Parameters.Find(x => x.Name == "listId").Value);
+ Assert.AreEqual(query, savedRequest.Parameters.Find(x => x.Name == "query").Value);
var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 1, \"resources\": ["
- + "{ \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" },"
- + "{ \"id\": 589, \"name\": \"Secure ID2\", \"value\": \"ABCD\", \"createdAt\": \"2007-12-27T13:04:20+0000\" }"
+ + "{ \"id\": \"276\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
+ "] }";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var results = client.GetCustomFields(page, limit);
-
- Assert.IsTrue(results.CustomFields[0].Success);
- Assert.AreEqual(73, results.CustomFields[0].Id);
- Assert.AreEqual("Secure ID", results.CustomFields[0].Name);
- Assert.AreEqual("ABC", results.CustomFields[0].Value);
- Assert.IsNotNull(results.CustomFields[0].CreatedAt);
+ var contacts = client.SearchContacts(page, limit, shared, ids, listId, query);
- Assert.IsTrue(results.CustomFields[1].Success);
- Assert.AreEqual(589, results.CustomFields[1].Id);
- Assert.AreEqual("Secure ID2", results.CustomFields[1].Name);
- Assert.AreEqual("ABCD", results.CustomFields[1].Value);
- Assert.IsNotNull(results.CustomFields[1].CreatedAt);
+ Assert.IsTrue(contacts.Success);
+ Assert.NotNull(contacts.Contacts);
+ Assert.AreEqual("John", contacts.Contacts[0].FirstName);
+ Assert.AreEqual("Doe", contacts.Contacts[0].LastName);
+ Assert.AreEqual("john@example.com", contacts.Contacts[0].Email);
+ Assert.AreEqual("999123456", contacts.Contacts[0].Phone);
+ Assert.AreEqual(null, contacts.Contacts[0].CompanyName);
+ Assert.AreEqual(ids[0], contacts.Contacts[0].Id);
+ Assert.AreEqual("GB", contacts.Contacts[0].Country.Id);
+ Assert.AreEqual("United Kingdom", contacts.Contacts[0].Country.Name);
+ Assert.AreEqual(1, contacts.Contacts.Count);
+ Assert.AreEqual(page, contacts.Page);
+ Assert.AreEqual(limit, contacts.Limit);
+ Assert.AreEqual(1, contacts.PageCount);
+ Assert.IsNotNull(contacts.Contacts[0].CustomFields);
+ Assert.AreEqual(1, contacts.Contacts[0].CustomFields.Count);
}
[Test]
- public void ShouldCreateCustomField()
+ public void ShouldUnsubscribeContact()
{
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
.Returns(new LinkResult());
var client = mockClient.Object;
- client.CreateCustomField(customFieldName);
+ var contact = new Contact {Phone = contactPhone};
+ client.UnsubscribeContact(contact);
mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("customfields", savedRequest.Resource);
+ Assert.AreEqual("unsubscribers", savedRequest.Resource);
Assert.AreEqual(Method.POST, savedRequest.Method);
Assert.AreEqual(1, savedRequest.Parameters.Count);
- Assert.AreEqual(customFieldName, savedRequest.Parameters.Find(x => x.Name == "name").Value);
+ Assert.AreEqual(contactPhone, savedRequest.Parameters.Find(x => x.Name == "phone").Value);
var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/contacts/31337\"}";
var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var link = client.CreateCustomField(customFieldName);
+ var link = client.UnsubscribeContact(contact);
Assert.IsTrue(link.Success);
Assert.AreEqual(31337, link.Id);
@@ -551,35 +629,54 @@ public void ShouldCreateCustomField()
}
[Test]
- public void ShouldUpdateCustomField()
+ public void ShouldUpdateContact()
{
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
+ .Returns(new LinkResult());
+ mockClient.Setup(trc => trc.SetCustomFieldValue(It.IsAny(), It.IsAny(), It.IsAny()))
.Returns(new LinkResult());
var client = mockClient.Object;
- var cf = new CustomField()
+ var contact = new Contact
{
- Id = customFieldId,
- Name = customFieldName
+ Id = contactId,
+ Phone = contactPhone,
+ FirstName = contactFirstName,
+ LastName = contactLastName,
+ CompanyName = contactCompanyName,
+ Country = new Country {Id = countryId, Name = countryName},
+ Email = contactEmail
};
- client.UpdateCustomField(cf);
+
+ var testCustomField = new CustomField {Id = 1, Name = "Id1", Value = "StringId1"};
+ contact.CustomFields = new List();
+ contact.CustomFields.Add(testCustomField);
+
+ client.UpdateContact(contact, listIds);
mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.SetCustomFieldValue(It.IsAny(), It.IsAny(), It.IsAny()),
+ Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("customfields/{id}", savedRequest.Resource);
+ Assert.AreEqual("contacts/{id}", savedRequest.Resource);
Assert.AreEqual(Method.PUT, savedRequest.Method);
- Assert.AreEqual(2, savedRequest.Parameters.Count);
- Assert.AreEqual(customFieldId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
- Assert.AreEqual(customFieldName, savedRequest.Parameters.Find(x => x.Name == "name").Value);
+ Assert.AreEqual(7, savedRequest.Parameters.Count);
+ Assert.AreEqual(contactId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
+ Assert.AreEqual(contactPhone, savedRequest.Parameters.Find(x => x.Name == "phone").Value);
+ Assert.AreEqual(string.Join(",", listIds), savedRequest.Parameters.Find(x => x.Name == "lists").Value);
+ Assert.AreEqual(contactFirstName, savedRequest.Parameters.Find(x => x.Name == "firstName").Value);
+ Assert.AreEqual(contactLastName, savedRequest.Parameters.Find(x => x.Name == "lastName").Value);
+ Assert.AreEqual(contactEmail, savedRequest.Parameters.Find(x => x.Name == "email").Value);
+ Assert.AreEqual(contactCompanyName, savedRequest.Parameters.Find(x => x.Name == "companyName").Value);
var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/contacts/31337\"}";
var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var link = client.UpdateCustomField(cf);
+ var link = client.UpdateContact(contact, listIds);
Assert.IsTrue(link.Success);
Assert.AreEqual(31337, link.Id);
@@ -587,95 +684,39 @@ public void ShouldUpdateCustomField()
}
[Test]
- public void ShouldDeleteCustomField()
+ public void ShouldUpdateCustomField()
{
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new DeleteResult());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new LinkResult());
var client = mockClient.Object;
- var customField = new CustomField()
+ var cf = new CustomField
{
- Id = customFieldId
+ Id = customFieldId,
+ Name = customFieldName
};
+ client.UpdateCustomField(cf);
- client.DeleteCustomField(customField);
-
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
Assert.AreEqual("customfields/{id}", savedRequest.Resource);
- Assert.AreEqual(Method.DELETE, savedRequest.Method);
- Assert.AreEqual(1, savedRequest.Parameters.Count);
+ Assert.AreEqual(Method.PUT, savedRequest.Method);
+ Assert.AreEqual(2, savedRequest.Parameters.Count);
Assert.AreEqual(customFieldId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
-
- var content = "{}";
-
- var testClient = Common.CreateClient(content, null, null);
- client = new Client(testClient);
-
- var result = client.DeleteCustomField(customField);
-
- Assert.IsTrue(result.Success);
- }
-
- [Test]
- public void ShouldSearchContacts()
- {
- var page = 2;
- var limit = 3;
- var shared = false;
- int[] ids = {276};
- int listId = 123;
- string query = "my_query";
-
- IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new ContactsResult());
- var client = mockClient.Object;
-
- client.SearchContacts(page, limit, shared, ids, listId, query);
-
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
- Assert.IsNotNull(savedRequest);
- Assert.AreEqual("contacts/search", savedRequest.Resource);
- Assert.AreEqual(Method.GET, savedRequest.Method);
- Assert.AreEqual(6, savedRequest.Parameters.Count);
- Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
- Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
- Assert.AreEqual(Convert.ToInt32(shared).ToString(), savedRequest.Parameters.Find(x => x.Name == "shared").Value);
- Assert.AreEqual(ids[0].ToString(), savedRequest.Parameters.Find(x => x.Name == "ids").Value);
- Assert.AreEqual(listId.ToString(), savedRequest.Parameters.Find(x => x.Name == "listId").Value);
- Assert.AreEqual(query.ToString(), savedRequest.Parameters.Find(x => x.Name == "query").Value);
+ Assert.AreEqual(customFieldName, savedRequest.Parameters.Find(x => x.Name == "name").Value);
- var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 1, \"resources\": ["
- + "{ \"id\": \"276\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
- + "] }";
+ var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/contacts/31337\"}";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var contacts = client.SearchContacts(page, limit, shared, ids, listId, query);
+ var link = client.UpdateCustomField(cf);
- Assert.IsTrue(contacts.Success);
- Assert.NotNull(contacts.Contacts);
- Assert.AreEqual("John", contacts.Contacts[0].FirstName);
- Assert.AreEqual("Doe", contacts.Contacts[0].LastName);
- Assert.AreEqual("john@example.com", contacts.Contacts[0].Email);
- Assert.AreEqual("999123456", contacts.Contacts[0].Phone);
- Assert.AreEqual(null, contacts.Contacts[0].CompanyName);
- Assert.AreEqual(ids[0], contacts.Contacts[0].Id);
- Assert.AreEqual("GB", contacts.Contacts[0].Country.Id);
- Assert.AreEqual("United Kingdom", contacts.Contacts[0].Country.Name);
- Assert.AreEqual(1, contacts.Contacts.Count);
- Assert.AreEqual(page, contacts.Page);
- Assert.AreEqual(limit, contacts.Limit);
- Assert.AreEqual(1, contacts.PageCount);
- Assert.IsNotNull(contacts.Contacts[0].CustomFields);
- Assert.AreEqual(1, contacts.Contacts[0].CustomFields.Count);
+ Assert.IsTrue(link.Success);
+ Assert.AreEqual(31337, link.Id);
+ Assert.AreEqual("/api/v2/contacts/31337", link.Href);
}
[Test]
@@ -683,7 +724,7 @@ public void ShouldUpdateSetCustomFieldValue()
{
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
.Returns(new LinkResult());
var client = mockClient.Object;
@@ -709,45 +750,5 @@ public void ShouldUpdateSetCustomFieldValue()
Assert.AreEqual(31337, link.Id);
Assert.AreEqual("/api/v2/contacts/31337", link.Href);
}
-
- [Test]
- public void ShouldGetListsWhichContactBelongsTo()
- {
- var page = 2;
- var limit = 3;
-
- IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new ContactListsResult());
- var client = mockClient.Object;
-
- client.GetListsWhichContactBelongsTo(contactId, page, limit);
-
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
- Assert.IsNotNull(savedRequest);
- Assert.AreEqual("contacts/{id}/lists", savedRequest.Resource);
- Assert.AreEqual(Method.GET, savedRequest.Method);
- Assert.AreEqual(3, savedRequest.Parameters.Count);
- Assert.AreEqual(contactId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
- Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
- Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
-
- var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 1, \"resources\": ["
- + "{ \"id\": \"31337\", \"name\": \"Partners\", \"description\": \"\","
- + "\"membersCount\": 1, \"shared\": false } ] }";
-
- var testClient = Common.CreateClient(content, null, null);
- client = new Client(testClient);
-
- var results = client.GetListsWhichContactBelongsTo(contactId, page, limit);
-
- Assert.IsTrue(results.Success);
- Assert.AreEqual(contactId, results.ContactLists[0].Id);
- Assert.AreEqual("Partners", results.ContactLists[0].Name);
- Assert.AreEqual("", results.ContactLists[0].Description);
- Assert.AreEqual(1, results.ContactLists[0].MembersCount);
- Assert.AreEqual(false, results.ContactLists[0].Shared);
- }
}
-}
+}
\ No newline at end of file
diff --git a/TextmagicRest.Tests/ListsTests.cs b/TextmagicRest.Tests/ListsTests.cs
index 458f27c..cc60fa4 100644
--- a/TextmagicRest.Tests/ListsTests.cs
+++ b/TextmagicRest.Tests/ListsTests.cs
@@ -1,24 +1,14 @@
-using System;
-using TextmagicRest.Model;
+using System.Collections.Generic;
using Moq;
using NUnit.Framework;
using RestSharp;
-using System.Text;
-using RestSharp.Deserializers;
+using TextmagicRest.Model;
namespace TextmagicRest.Tests
{
[TestFixture]
public class ListsTests
{
- private Mock mockClient;
-
- private const int listId = 106847;
- private const string listName = "apitestlist";
- private const string listDescription = "apitestlist description";
- private const int listMembersCount = 1;
- private const bool listIsShared = false;
-
[SetUp]
public void Setup()
{
@@ -26,85 +16,54 @@ public void Setup()
mockClient.CallBase = true;
}
- [Test]
- public void ShouldGetSingleList()
- {
- IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new ContactList());
- var client = mockClient.Object;
-
- client.GetList(listId);
-
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
- Assert.IsNotNull(savedRequest);
- Assert.AreEqual("lists/{id}", savedRequest.Resource);
- Assert.AreEqual(Method.GET, savedRequest.Method);
- Assert.AreEqual(1, savedRequest.Parameters.Count);
- Assert.AreEqual(listId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
-
- var content = "{ \"id\": \"106847\", \"name\": \"apitestlist\", \"description\": \"apitestlist description\", \"membersCount\": 1, \"shared\": false }";
-
- var testClient = Common.CreateClient(content, null, null);
- client = new Client(testClient);
-
- var list = client.GetList(listId);
+ private Mock mockClient;
- Assert.IsTrue(list.Success);
- Assert.AreEqual(listId, list.Id);
- Assert.AreEqual(listName, list.Name);
- Assert.AreEqual(listDescription, list.Description);
- Assert.AreEqual(listMembersCount, list.MembersCount);
- Assert.AreEqual(listIsShared, list.Shared);
- }
+ private const int listId = 106847;
+ private const string listName = "apitestlist";
+ private const string listDescription = "apitestlist description";
+ private const int listMembersCount = 1;
+ private const bool listIsShared = false;
[Test]
- public void ShouldGetAllLists()
+ public void ShouldAddContactsToList()
{
- var page = 2;
- var limit = 3;
+ var contactId1 = 12345;
+ var contactId2 = 23456;
+ var contactId3 = 34567;
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new ContactListsResult());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new LinkResult());
var client = mockClient.Object;
- client.GetLists(page, limit);
+ var contact1 = new Contact {Id = contactId1};
+ var contact2 = new Contact {Id = contactId2};
+ var contact3 = new Contact {Id = contactId3};
+ int[] contactIds = {contactId1, contactId2, contactId3};
+ var contacts = new List {contact1, contact2, contact3};
+ var list = new ContactList {Id = listId};
+ client.AddContactsToList(list, contacts);
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("lists", savedRequest.Resource);
- Assert.AreEqual(Method.GET, savedRequest.Method);
+ Assert.AreEqual("lists/{id}/contacts", savedRequest.Resource);
+ Assert.AreEqual(Method.PUT, savedRequest.Method);
Assert.AreEqual(2, savedRequest.Parameters.Count);
- Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
- Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
+ Assert.AreEqual(listId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
+ Assert.AreEqual(string.Join(",", contactIds),
+ savedRequest.Parameters.Find(x => x.Name == "contacts").Value);
- var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 3, \"resources\": ["
- + "{ \"id\": \"106847\", \"name\": \"apitestlist\", \"description\": \"apitestlist description\", \"membersCount\": 1, \"shared\": false }"
- + "{ \"id\": \"106848\", \"name\": \"apitestlist 2\", \"description\": \"apitestlist description 2\", \"membersCount\": 10, \"shared\": true }"
- + "{ \"id\": \"106849\", \"name\": \"apitestlist 3\", \"description\": \"apitestlist description 3\", \"membersCount\": 31, \"shared\": true }"
- + "] }";
+ var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/lists/31337/contacts\"}";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var lists = client.GetLists(page, limit);
+ var link = client.AddContactsToList(list, contacts);
- Assert.IsTrue(lists.Success);
- Assert.NotNull(lists.ContactLists);
- Assert.AreEqual(3, lists.ContactLists.Count);
- Assert.AreEqual(page, lists.Page);
- Assert.AreEqual(limit, lists.Limit);
- Assert.AreEqual(3, lists.PageCount);
- Assert.AreEqual(106848, lists.ContactLists[1].Id);
- Assert.AreEqual("apitestlist 2", lists.ContactLists[1].Name);
- Assert.AreEqual("apitestlist description 2", lists.ContactLists[1].Description);
- Assert.AreEqual(10, lists.ContactLists[1].MembersCount);
- Assert.IsTrue(lists.ContactLists[1].Shared);
- Assert.IsTrue(lists.ContactLists[2].Shared);
- Assert.IsFalse(lists.ContactLists[0].Shared);
+ Assert.IsTrue(link.Success);
+ Assert.AreEqual(31337, link.Id);
+ Assert.AreEqual("/api/v2/lists/31337/contacts", link.Href);
}
[Test]
@@ -112,7 +71,7 @@ public void ShouldCreateList()
{
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
.Returns(new LinkResult());
var client = mockClient.Object;
@@ -139,43 +98,44 @@ public void ShouldCreateList()
}
[Test]
- public void ShouldUpdateList()
+ public void ShouldDeleteContactsFromList()
{
+ var contactId1 = 12345;
+ var contactId2 = 23456;
+ var contactId3 = 34567;
+
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new LinkResult());
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new DeleteResult());
var client = mockClient.Object;
- var list = new ContactList()
- {
- Id = listId,
- Name = listName,
- Description = listDescription,
- MembersCount = listMembersCount,
- Shared = listIsShared,
- };
- client.UpdateList(list);
+ var contact1 = new Contact {Id = contactId1};
+ var contact2 = new Contact {Id = contactId2};
+ var contact3 = new Contact {Id = contactId3};
+ int[] contactIds = {contactId1, contactId2, contactId3};
+ var contacts = new List {contact1, contact2, contact3};
+ var list = new ContactList {Id = listId};
- mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ client.DeleteContactsFromList(list, contacts);
+
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
Assert.IsNotNull(savedRequest);
- Assert.AreEqual("lists/{id}", savedRequest.Resource);
- Assert.AreEqual(Method.PUT, savedRequest.Method);
- Assert.AreEqual(3, savedRequest.Parameters.Count);
+ Assert.AreEqual("lists/{id}/contacts", savedRequest.Resource);
+ Assert.AreEqual(Method.DELETE, savedRequest.Method);
+ Assert.AreEqual(2, savedRequest.Parameters.Count);
Assert.AreEqual(listId.ToString(), savedRequest.Parameters.Find(x => x.Name == "id").Value);
- Assert.AreEqual(listName, savedRequest.Parameters.Find(x => x.Name == "name").Value);
- Assert.AreEqual("0", savedRequest.Parameters.Find(x => x.Name == "shared").Value);
+ Assert.AreEqual(string.Join(",", contactIds),
+ savedRequest.Parameters.Find(x => x.Name == "contacts").Value);
- var content = "{ \"id\": \"31337\", \"href\": \"/api/v2/lists/31337\"}";
+ var content = "{}";
- var testClient = Common.CreateClient(content, null, null);
+ var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
- var link = client.UpdateList(list);
+ var link = client.DeleteContactsFromList(list, contacts);
Assert.IsTrue(link.Success);
- Assert.AreEqual(31337, link.Id);
- Assert.AreEqual("/api/v2/lists/31337", link.Href);
}
[Test]
@@ -183,11 +143,11 @@ public void ShouldDeleteList()
{
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
.Returns(new DeleteResult());
var client = mockClient.Object;
- var list = new ContactList() { Id = listId };
+ var list = new ContactList {Id = listId};
client.DeleteList(list);
@@ -208,16 +168,64 @@ public void ShouldDeleteList()
Assert.IsTrue(link.Success);
}
+ [Test]
+ public void ShouldGetAllLists()
+ {
+ var page = 2;
+ var limit = 3;
+
+ IRestRequest savedRequest = null;
+ mockClient.Setup(trc => trc.Execute(It.IsAny()))
+ .Callback(request => savedRequest = request)
+ .Returns(new ContactListsResult());
+ var client = mockClient.Object;
+
+ client.GetLists(page, limit);
+
+ mockClient.Verify(trc => trc.Execute(It.IsAny()), Times.Once);
+ Assert.IsNotNull(savedRequest);
+ Assert.AreEqual("lists", savedRequest.Resource);
+ Assert.AreEqual(Method.GET, savedRequest.Method);
+ Assert.AreEqual(2, savedRequest.Parameters.Count);
+ Assert.AreEqual(page.ToString(), savedRequest.Parameters.Find(x => x.Name == "page").Value);
+ Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
+
+ var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 3, \"resources\": ["
+ + "{ \"id\": \"106847\", \"name\": \"apitestlist\", \"description\": \"apitestlist description\", \"membersCount\": 1, \"shared\": false }"
+ + "{ \"id\": \"106848\", \"name\": \"apitestlist 2\", \"description\": \"apitestlist description 2\", \"membersCount\": 10, \"shared\": true }"
+ + "{ \"id\": \"106849\", \"name\": \"apitestlist 3\", \"description\": \"apitestlist description 3\", \"membersCount\": 31, \"shared\": true }"
+ + "] }";
+
+ var testClient = Common.CreateClient(content, null, null);
+ client = new Client(testClient);
+
+ var lists = client.GetLists(page, limit);
+
+ Assert.IsTrue(lists.Success);
+ Assert.NotNull(lists.ContactLists);
+ Assert.AreEqual(3, lists.ContactLists.Count);
+ Assert.AreEqual(page, lists.Page);
+ Assert.AreEqual(limit, lists.Limit);
+ Assert.AreEqual(3, lists.PageCount);
+ Assert.AreEqual(106848, lists.ContactLists[1].Id);
+ Assert.AreEqual("apitestlist 2", lists.ContactLists[1].Name);
+ Assert.AreEqual("apitestlist description 2", lists.ContactLists[1].Description);
+ Assert.AreEqual(10, lists.ContactLists[1].MembersCount);
+ Assert.IsTrue(lists.ContactLists[1].Shared);
+ Assert.IsTrue(lists.ContactLists[2].Shared);
+ Assert.IsFalse(lists.ContactLists[0].Shared);
+ }
+
[Test]
public void ShouldGetContactsInList()
{
var page = 2;
var limit = 3;
- var list = new ContactList() { Id = listId };
+ var list = new ContactList {Id = listId};
IRestRequest savedRequest = null;
mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
+ .Callback(request => savedRequest = request)
.Returns(new ContactsResult());
var client = mockClient.Object;
@@ -233,14 +241,13 @@ public void ShouldGetContactsInList()
Assert.AreEqual(limit.ToString(), savedRequest.Parameters.Find(x => x.Name == "limit").Value);
var content = "{ \"page\": 2, \"limit\": 3, \"pageCount\": 3, \"resources\": ["
- + "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
-
- + "{ \"id\": \"31338\", \"first_name\": \"Jack\", \"lastName\": \"Doe\", \"companyName\": null,"
- + "\"phone\": \"999123457\", \"email\": \"jack@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
- + "\"customFields\": [ ] }"
- + "] }";
+ + "{ \"id\": \"31337\", \"firstName\": \"John\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123456\", \"email\": \"john@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ { \"id\": 73, \"name\": \"Secure ID\", \"value\": \"ABC\", \"createdAt\": \"2007-12-27T13:04:20+0000\" } ] }"
+ + "{ \"id\": \"31338\", \"first_name\": \"Jack\", \"lastName\": \"Doe\", \"companyName\": null,"
+ + "\"phone\": \"999123457\", \"email\": \"jack@example.com\", \"country\": { \"id\": \"GB\", \"name\": \"United Kingdom\" },"
+ + "\"customFields\": [ ] }"
+ + "] }";
var testClient = Common.CreateClient(content, null, null);
client = new Client(testClient);
@@ -259,84 +266,37 @@ public void ShouldGetContactsInList()
}
[Test]
- public void ShouldAddContactsToList()
+ public void ShouldGetSingleList()
{
- var contactId1 = 12345;
- var contactId2 = 23456;
- var contactId3 = 34567;
-
IRestRequest savedRequest = null;
- mockClient.Setup(trc => trc.Execute(It.IsAny()))
- .Callback((request) => savedRequest = request)
- .Returns(new LinkResult());
+ mockClient.Setup(trc => trc.Execute