public void SenderToJson() { var item = new Sender(); item.Name = "John Citizen"; item.Lines = new string[] { "1 Main Street" }; item.Suburb = "MELBOURNE"; item.State = State.Victoria; item.Postcode = "3000"; item.Phone = "0401234567"; item.Email = "*****@*****.**"; var expected = @" { ""name"": ""John Citizen"", ""lines"": [ ""1 Main Street"" ], ""suburb"": ""MELBOURNE"", ""state"": ""VIC"", ""postcode"": ""3000"", ""phone"": ""0401234567"", ""email"": ""*****@*****.**"" }".Trim(); var serializer = new ApiSerializer(); var result = serializer.ToJson(item); Assert.AreEqual(expected, result); }
public void RecipientToJson() { var item = new Recipient(); item.Name = "Jane Smith"; item.BusinessName = "Smith Pty Ltd"; item.Lines = new string[] { "123 Centre Road" }; item.Suburb = "Sydney"; item.State = State.NSW; item.Postcode = "2000"; item.Phone = "0412345678"; item.Email = "*****@*****.**"; var expected = @" { ""name"": ""Jane Smith"", ""business_name"": ""Smith Pty Ltd"", ""lines"": [ ""123 Centre Road"" ], ""suburb"": ""Sydney"", ""state"": ""NSW"", ""postcode"": ""2000"", ""phone"": ""0412345678"", ""email"": ""*****@*****.**"" }".Trim(); var serializer = new ApiSerializer(); var result = serializer.ToJson(item); Assert.AreEqual(expected, result); }
/// <summary> /// Initialises a new <see cref="ApiClient"/> using a user-set <see cref="ApiSerializer"/> /// </summary> public ApiClient(ApiSerializer serializer) { Headers = new HeaderCollection(this); Serializer = new SerializerResolver(serializer); _lock = new AsyncReaderWriterLock(); RequestClientReset(true); }
public void ItemToJson() { var item = new Item(); item.ItemReference = "SKU-1"; item.ProductID = "7E55"; item.Length = 10; item.Width = 10; item.Height = 10; item.Weight = 1; item.AuthorityToLeave = false; item.AllowPartialDelivery = true; item.Features.Add("TRANSIT_COVER", new ItemFeature()); item.Features["TRANSIT_COVER"].Attributes.CoverAmount = 500; var expected = @" { ""item_reference"": ""SKU-1"", ""product_id"": ""7E55"", ""length"": 10.0, ""width"": 10.0, ""height"": 10.0, ""weight"": 1.0, ""authority_to_leave"": false, ""allow_partial_delivery"": true, ""features"": { ""TRANSIT_COVER"": { ""attributes"": { ""cover_amount"": 500.0 } } } }".Trim(); var serializer = new ApiSerializer(); var result = serializer.ToJson(item); Assert.AreEqual(expected, result); }
public void ShipmentToJson() { var shipment = new Shipment(); shipment.ShipmentReference = "XYZ-001-01"; shipment.CustomerReference1 = "Order 001"; shipment.CustomerReference2 = "SKU-1, SKU-2, SKU-3"; shipment.EmailTrackingEnabled = true; shipment.From.Name = "John Citizen"; shipment.From.Lines = new string[] { "1 Main Street" }; shipment.From.Suburb = "MELBOURNE"; shipment.From.State = State.Victoria; shipment.From.Postcode = "3000"; shipment.From.Phone = "0401234567"; shipment.From.Email = "*****@*****.**"; shipment.To.Name = "Jane Smith"; shipment.To.BusinessName = "Smith Pty Ltd"; shipment.To.Lines = new string[] { "123 Centre Road" }; shipment.To.Suburb = "Sydney"; shipment.To.State = State.NSW; shipment.To.Postcode = "2000"; shipment.To.Phone = "0412345678"; shipment.To.Email = "*****@*****.**"; var item1 = new Item(); item1.ItemReference = "SKU-1"; item1.ProductID = "7E55"; item1.Length = 10; item1.Width = 10; item1.Height = 10; item1.Weight = 1; item1.AuthorityToLeave = false; item1.AllowPartialDelivery = true; item1.Features.Add("TRANSIT_COVER", new ItemFeature()); item1.Features["TRANSIT_COVER"].Attributes.CoverAmount = 500; shipment.Items.Add(item1); var item2 = new Item(); item2.ItemReference = "SKU-2"; item2.ProductID = "7E55"; item2.Length = 10; item2.Width = 10; item2.Height = 10; item2.Weight = 1; item2.AuthorityToLeave = false; item2.AllowPartialDelivery = true; shipment.Items.Add(item2); var item3 = new Item(); item3.ItemReference = "SKU-3"; item3.ProductID = "7E55"; item3.Length = 10; item3.Width = 10; item3.Height = 10; item3.Weight = 1; item3.AuthorityToLeave = false; item3.AllowPartialDelivery = true; shipment.Items.Add(item3); string expected = @" { ""shipment_reference"": ""XYZ-001-01"", ""customer_reference_1"": ""Order 001"", ""customer_reference_2"": ""SKU-1, SKU-2, SKU-3"", ""email_tracking_enabled"": true, ""from"": { ""name"": ""John Citizen"", ""lines"": [ ""1 Main Street"" ], ""suburb"": ""MELBOURNE"", ""state"": ""VIC"", ""postcode"": ""3000"", ""phone"": ""0401234567"", ""email"": ""*****@*****.**"" }, ""to"": { ""name"": ""Jane Smith"", ""business_name"": ""Smith Pty Ltd"", ""lines"": [ ""123 Centre Road"" ], ""suburb"": ""Sydney"", ""state"": ""NSW"", ""postcode"": ""2000"", ""phone"": ""0412345678"", ""email"": ""*****@*****.**"" }, ""items"": [ { ""item_reference"": ""SKU-1"", ""product_id"": ""7E55"", ""length"": 10.0, ""width"": 10.0, ""height"": 10.0, ""weight"": 1.0, ""authority_to_leave"": false, ""allow_partial_delivery"": true, ""features"": { ""TRANSIT_COVER"": { ""attributes"": { ""cover_amount"": 500.0 } } } }, { ""item_reference"": ""SKU-2"", ""product_id"": ""7E55"", ""length"": 10.0, ""width"": 10.0, ""height"": 10.0, ""weight"": 1.0, ""authority_to_leave"": false, ""allow_partial_delivery"": true }, { ""item_reference"": ""SKU-3"", ""product_id"": ""7E55"", ""length"": 10.0, ""width"": 10.0, ""height"": 10.0, ""weight"": 1.0, ""authority_to_leave"": false, ""allow_partial_delivery"": true } ] }".Trim(); var serializer = new ApiSerializer(); var result = serializer.ToJson(shipment); Assert.AreEqual(expected, result); }
public void ShipmentInformationFromJson() { var json = @" { ""shipment_id"": ""9lesEAOvOm4AAAFI3swaDRYB"", ""shipment_reference"": ""XYZ-001-01"", ""shipment_creation_date"": ""2014-08-27T15:48:09+10:00"", ""customer_reference_1"": ""Order 001"", ""customer_reference_2"": ""SKU-1, SKU-2, SKU-3"", ""sender_references"": [ ""Order 001"", ""SKU-1, SKU-2, SKU-3"" ], ""email_tracking_enabled"": true, ""items"": [ { ""item_id"": ""LDCsEAOvU_oAAAFI6MwaDRYB"", ""item_reference"": ""SKU-1"", ""tracking_details"": { ""article_id"": ""ABC000128B4C5"", ""consignment_id"": ""ABC000128"" }, ""product_id"": ""7E55"", ""item_summary"": { ""total_cost"": 5, ""total_gst"": 0.45, ""status"": ""Created"" } }, { ""item_id"": ""ynesEAOvnlAAAAFI88waDRYB"", ""item_reference"": ""SKU-3"", ""tracking_details"": { ""article_id"": ""ABC000128B4C6"", ""consignment_id"": ""ABC000128"" }, ""product_id"": ""7E55"", ""item_summary"": { ""total_cost"": 4, ""total_gst"": 0.36, ""status"": ""Created"" } }, { ""item_id"": ""TkGsEAOv9.4AAAFI8MwaDRYB"", ""item_reference"": ""SKU-2"", ""tracking_details"": { ""article_id"": ""ABC000128B4C7"", ""consignment_id"": ""ABC000128"" }, ""product_id"": ""7E55"", ""item_summary"": { ""total_cost"": 4, ""total_gst"": 0.36, ""status"": ""Created"" } } ], ""shipment_summary"": { ""total_cost"": 13, ""total_gst"": 1.18, ""status"": ""Created"", ""number_of_items"": 3, ""tracking_summary"": { ""Initiated"": 3 }, } }".Trim(); var serializer = new ApiSerializer(); var item = serializer.FromJson <ShipmentInformation>(json); Assert.AreEqual("9lesEAOvOm4AAAFI3swaDRYB", item.ShipmentID); Assert.AreEqual("XYZ-001-01", item.ShipmentReference); Assert.AreEqual(new DateTime(2014, 8, 27, 15, 48, 9), item.ShipmentCreationDate); // TODO: Are these part of the spec? //Assert.AreEqual("Order 001", item.CustomerReference1); //Assert.AreEqual("SKU-1, SKU-2, SKU-3", item.CustomerReference2); //Assert.AreEqual(2, item.SenderReferences.Count); //Assert.AreEqual("Order 001", item.SenderReferences[0]); //Assert.AreEqual("SKU-1, SKU-2, SKU-3", item.SenderReferences[1]); Assert.AreEqual(true, item.EmailTrackingEnabled); Assert.AreEqual(3, item.Items.Count); Assert.AreEqual("LDCsEAOvU_oAAAFI6MwaDRYB", item.Items[0].ItemID); Assert.AreEqual("SKU-1", item.Items[0].ItemReference); Assert.IsNotNull(item.Items[0].TrackingDetails); Assert.AreEqual("ABC000128B4C5", item.Items[0].TrackingDetails.ArticleID); Assert.AreEqual("ABC000128", item.Items[0].TrackingDetails.ConsignmentID); Assert.AreEqual("7E55", item.Items[0].ProductID); Assert.IsNotNull(item.Items[0].ItemSummary); Assert.AreEqual(5, item.Items[0].ItemSummary.TotalCost); Assert.AreEqual(0.45m, item.Items[0].ItemSummary.TotalGst); Assert.AreEqual("Created", item.Items[0].ItemSummary.Status); Assert.AreEqual("ynesEAOvnlAAAAFI88waDRYB", item.Items[1].ItemID); Assert.AreEqual("SKU-3", item.Items[1].ItemReference); Assert.IsNotNull(item.Items[1].TrackingDetails); Assert.AreEqual("ABC000128B4C6", item.Items[1].TrackingDetails.ArticleID); Assert.AreEqual("ABC000128", item.Items[1].TrackingDetails.ConsignmentID); Assert.AreEqual("7E55", item.Items[1].ProductID); Assert.IsNotNull(item.Items[1].ItemSummary); Assert.AreEqual(4, item.Items[1].ItemSummary.TotalCost); Assert.AreEqual(0.36m, item.Items[1].ItemSummary.TotalGst); Assert.AreEqual("Created", item.Items[1].ItemSummary.Status); Assert.AreEqual("TkGsEAOv9.4AAAFI8MwaDRYB", item.Items[2].ItemID); Assert.AreEqual("SKU-2", item.Items[2].ItemReference); Assert.IsNotNull(item.Items[2].TrackingDetails); Assert.AreEqual("ABC000128B4C7", item.Items[2].TrackingDetails.ArticleID); Assert.AreEqual("ABC000128", item.Items[2].TrackingDetails.ConsignmentID); Assert.AreEqual("7E55", item.Items[2].ProductID); Assert.IsNotNull(item.Items[2].ItemSummary); Assert.AreEqual(4, item.Items[2].ItemSummary.TotalCost); Assert.AreEqual(0.36m, item.Items[2].ItemSummary.TotalGst); Assert.AreEqual("Created", item.Items[2].ItemSummary.Status); Assert.IsNotNull(item.ShipmentSummary); Assert.AreEqual(13, item.ShipmentSummary.TotalCost); Assert.AreEqual(1.18m, item.ShipmentSummary.TotalGst); Assert.AreEqual("Created", item.ShipmentSummary.Status); Assert.AreEqual(3, item.ShipmentSummary.NumberOfItems); Assert.AreEqual(1, item.ShipmentSummary.TrackingSummary.Count); Assert.AreEqual(3, item.ShipmentSummary.TrackingSummary["Initiated"]); }