public void Product_Serialize()
        {
            // Arrange
            Guid randomName = Guid.NewGuid();

            Product newProduct = new Product()
            {
                name = randomName.ToString(),
                price_in_cents = 100,
                interval_unit = IntervalUnit.month,
                interval = 1
            };

            // Act
            string msg = string.Empty;
            var serializer = new DotNetXmlSerializer();
            msg = serializer.Serialize(newProduct);

            // Assert
            XDocument doc = XDocument.Parse(msg);
            XElement nameElement = doc.Root.Elements().FirstOrDefault(e => e.Name == "name");
            XElement priceElement = doc.Root.Elements().FirstOrDefault(e => e.Name == "price_in_cents");
            XElement intervalUnitElement = doc.Root.Elements().FirstOrDefault(e => e.Name == "interval_unit");
            XElement intervalElement = doc.Root.Elements().FirstOrDefault(e => e.Name == "interval");

            Assert.IsTrue(doc.Root.Elements().Count() == 4);
            Assert.IsFalse(string.IsNullOrEmpty(nameElement.Value));
            Assert.IsTrue(randomName.ToString() == nameElement.Value);
            Assert.IsNotNull(priceElement);
            Assert.IsTrue(int.Parse(priceElement.Value) > int.MinValue);
            Assert.AreEqual((int)newProduct.price_in_cents, int.Parse(priceElement.Value));
            Assert.IsFalse(string.IsNullOrEmpty(intervalUnitElement.Value));
            Assert.IsTrue((int)newProduct.interval_unit == (int)Enum.Parse(typeof(IntervalUnit), intervalUnitElement.Value));
        }
 public Product GetNewProduct()
 {
     Guid randomName = Guid.NewGuid();
     Product newProduct = new Product()
     {
         name = randomName.ToString(),
         price_in_cents = 100,
         interval_unit = IntervalUnit.month,
         interval = 1
     };
     return newProduct;
 }
 public static void Archive(this ProductService service, Product product)
 {
     throw new NotImplementedException();
 }
 public static Product Create(this ProductService service, int familyId, Product product)
 {
     string url = string.Format(format: "/{0}/{1}/{2}", arg0: ProductFamilyService.ProductFamilyKey, arg1: familyId, arg2: ProductService.ProductKey);
     return service.PostRequest<Product, Product>(product, url);
 }
 public static Task ArchiveAsync(this ProductService service, Product product)
 {
     throw new NotImplementedException();
 }
 public static async Task<Product> CreateAsync(this ProductService service, int familyId, Product product)
 {
     string url = string.Format(format: "/{0}/{1}/{2}", arg0: ProductFamilyService.ProductFamilyKey, arg1: familyId, arg2: ProductService.ProductKey);
     return await service.PostRequestAsync<Product, Product>(product, url);
 }