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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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"]);
        }