public void PicksUpOrdersLinkFromCustomers() { var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), new[] { new Customer { Id = 42 } }); var target = new ExplicitXmlMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <IEnumerable <Customer> >(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); const string expected = "<Customers>" + " <Customer Id='42'>" + " <link href='/customer/42/contacts' rel='customer.contacts' type='application/vnd.contact+xml' />" + " <link href='/customer/42/orders' rel='customer.orders' type='application/vnd.list.order+xml' xmlns='' />" + " <link href='/customer/42' rel='self' type='application/vnd.customer+xml' xmlns='' />" + " </Customer>" + "</Customers>"; XElement.Parse(actual).ShouldEqual(expected); }
/// <summary> /// Creates the Blob from a <see cref="StringBuilder"/>. /// </summary> /// <param name="repository">The repository.</param> /// <param name="content">The content.</param> /// <returns>New newly created Blob.</returns> internal static Blob CreateBlob(this IRepository repository, StringBuilder content) { using (var stream = new StringBuilderStream(content)) { return(repository.ObjectDatabase.CreateBlob(stream)); } }
public void PicksUpOrdersLinkFromCustomers() { var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), new[] { new Customer { Id = 42 } }); var target = new DataContractXmlMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <IEnumerable <Customer> >(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); const string expected = "<?xml version='1.0' encoding='utf-8'?>" + "<Customers>" + " <Customer xmlns='http://schemas.datacontract.org/2004/07/Simple.Web.TestHelpers.Sample'" + " xmlns:i='http://www.w3.org/2001/XMLSchema-instance'>" + " <Id>42</Id>" + " <Orders i:nil='true' />" + " <link href='/customer/42/contacts' rel='customer.contacts' type='application/vnd.contact+xml' xmlns='' />" + " <link href='/customer/42/orders' rel='customer.orders' type='application/vnd.list.order+xml' xmlns='' />" + " <link href='/customer/42' rel='self' type='application/vnd.customer+xml' xmlns='' />" + " </Customer>" + "</Customers>"; XElement.Parse(actual).ShouldEqual(expected); }
public void PicksUpOrdersLinkFromCustomers() { const string idProperty = @"""Id"":42"; const string ordersLink = @"{""Title"":null,""Href"":""/customer/42/orders"",""Rel"":""customer.orders"",""Type"":""application/vnd.list.order+json""}"; const string selfLink = @"{""Title"":null,""Href"":""/customer/42"",""Rel"":""self"",""Type"":""application/vnd.customer+json""}"; var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), new[] { new Customer { Id = 42 } }); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <IEnumerable <Customer> >(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); Assert.Contains(idProperty, actual); Assert.Contains(ordersLink, actual); Assert.Contains(selfLink, actual); }
public void SerializesOrder() { var content = new Content(new Uri("http://test.com/order/42"), new OrderHandler(), new Order { Id = 54, CustomerId = 42 }); var target = new DataContractXmlMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <Order>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); const string expected = "<Order xmlns='http://schemas.datacontract.org/2004/07/Simple.Web.TestHelpers.Sample'" + " xmlns:i='http://www.w3.org/2001/XMLSchema-instance'>" + " <CustomerId>42</CustomerId>" + " <Id>54</Id>" + " <link href='/order/54' rel='self' type='application/vnd.order+xml' xmlns='' />" + "</Order>"; XElement.Parse(actual).ShouldEqual(expected); }
public void PicksUpOrdersLinkFromCustomer() { const string idProperty = @"""id"":42"; const string ordersLink = @"{""title"":null,""href"":""/customer/42/orders"",""rel"":""customer.orders"",""type"":""application/vnd.list.order+json""}"; const string selfLink = @"{""title"":null,""href"":""/customer/42"",""rel"":""self"",""type"":""application/vnd.customer+json""}"; var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), new Customer { Id = 42 }); var target = new JsonMediaTypeHandler { JsonLinksFormatter = new SimpleJsonLinksFormatter() }; string json; using (var stream = new StringBuilderStream()) { target.Write <Customer>(content, stream).Wait(); json = stream.StringValue; } var jobj = JObject.Parse(json); var links = jobj["_links"] as JObject; Assert.NotNull(links); Assert.Equal(links["customer.orders"].ToString(), "/customer/42/orders"); Assert.Equal(links["self"].ToString(), "/customer/42"); }
public void PicksUpPathFromThing() { const string thingLink = @"{""title"":null,""href"":""/things?path=%2Ffoo%2Fbar"",""rel"":""self"",""type"":""application/json""}"; var content = new Content(new Uri("http://test.com/foo/bar"), new ThingHandler(), new Thing { Path = "/foo/bar" }); var target = new JsonMediaTypeHandler { JsonLinksFormatter = new SimpleJsonLinksFormatter() }; string json; using (var stream = new StringBuilderStream()) { target.Write <Thing>(content, stream).Wait(); json = stream.StringValue; } var jobj = JObject.Parse(json); var links = jobj["_links"] as JObject; Assert.NotNull(links); Assert.Equal(links["self"].ToString(), "/things?path=%2Ffoo%2Fbar"); }
public void PicksUpOrdersLinkFromCustomer() { const string idProperty = @"""id"":42"; const string ordersLink = @"{""title"":null,""href"":""/customer/42/orders"",""rel"":""customer.orders"",""type"":""application/vnd.list.order+json""}"; const string selfLink = @"{""title"":null,""href"":""/customer/42"",""rel"":""self"",""type"":""application/vnd.customer+json""}"; var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), new Customer {Id = 42}); var target = new JsonMediaTypeHandler { JsonLinksFormatter = new SimpleJsonLinksFormatter() }; string json; using (var stream = new StringBuilderStream()) { target.Write<Customer>(content, stream).Wait(); json = stream.StringValue; } var jobj = JObject.Parse(json); var links = jobj["_links"] as JObject; Assert.NotNull(links); Assert.Equal(links["customer.orders"].ToString(), "/customer/42/orders"); Assert.Equal(links["self"].ToString(), "/customer/42"); }
private static void TestWriteMultiple(IMediaTypeHandler handler) { string actual; using (var stream = new StringBuilderStream()) { handler.Write <IEnumerable <Customer> >(TestData.MultipleContent, stream).Wait(); actual = stream.StringValue; } if (actual == null) { throw new Exception("No Output!"); } }
public void SerializesCyrillicText() { const string russian = "Мыа алиё лаборамюз ед, ведят промпта элыктрам квюо ты."; var content = new Content(new Uri("http://test.com/customer/42"), new ThingHandler(), new Thing {Path = russian}); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write<Thing>(content, stream).Wait(); actual = stream.StringValue; } Assert.Contains(russian, actual); }
public void SerializingListToJsonHasExpectedData() { const string expectedString = "{\"Customers\":[{\"Id\":42,\"Orders\":null}]}"; var content = new Content(new Uri("http://test.com/customer/42"), new CustomersListHandler(), new CustomerList() { Customers = new List<Customer>() { new Customer { Id = 42 } } }); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write<CustomerList>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); Assert.Equal(expectedString, actual); }
public void WritesJsonWithEnum() { var content = new Content(new Uri("http://test.com/EnumCustomer/42"), new EnumCustomerHandler(), new[] {new EnumCustomer() {AnEnum = MyEnum.Ian}}); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write<EnumCustomer>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); }
public void PicksUpContactsLinkFromCustomer() { const string contactsLink = @"{""title"":null,""href"":""/customer/42/contacts"",""rel"":""customer.contacts"",""type"":""application/vnd.contact+json""}"; var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), new Customer {Id = 42}); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write<Customer>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); Assert.Contains(contactsLink, actual); }
public void SerializesCyrillicText() { const string russian = "Мыа алиё лаборамюз ед, ведят промпта элыктрам квюо ты."; var content = new Content(new Uri("http://test.com/customer/42"), new ThingHandler(), new Thing { Path = russian }); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <Thing>(content, stream).Wait(); actual = stream.StringValue; } Assert.Contains(russian, actual); }
public void WritesJsonWithEnum() { var content = new Content(new Uri("http://test.com/EnumCustomer/42"), new EnumCustomerHandler(), new[] { new EnumCustomer() { AnEnum = MyEnum.Ian } }); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <EnumCustomer>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); }
public void PicksUpPathFromThing() { const string thingLink = @"{""title"":null,""href"":""/things?path=%2Ffoo%2Fbar"",""rel"":""self"",""type"":""application/json""}"; var content = new Content(new Uri("http://test.com/foo/bar"), new ThingHandler(), new Thing { Path = "/foo/bar" }); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <Thing>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); Assert.Contains(thingLink, actual); }
public void PicksUpContactsLinkFromCustomer() { const string contactsLink = @"{""title"":null,""href"":""/customer/42/contacts"",""rel"":""customer.contacts"",""type"":""application/vnd.contact+json""}"; var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), new Customer { Id = 42 }); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <Customer>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); Assert.Contains(contactsLink, actual); }
public void PicksUpPathFromThing() { const string thingLink = @"{""title"":null,""href"":""/things?path=%2Ffoo%2Fbar"",""rel"":""self"",""type"":""application/json""}"; var content = new Content(new Uri("http://test.com/foo/bar"), new ThingHandler(), new Thing {Path = "/foo/bar"}); var target = new JsonMediaTypeHandler { JsonLinksFormatter = new SimpleJsonLinksFormatter() }; string json; using (var stream = new StringBuilderStream()) { target.Write<Thing>(content, stream).Wait(); json = stream.StringValue; } var jobj = JObject.Parse(json); var links = jobj["_links"] as JObject; Assert.NotNull(links); Assert.Equal(links["self"].ToString(), "/things?path=%2Ffoo%2Fbar"); }
public void PicksUpOrdersLinkFromCustomers() { const string idProperty = @"""Id"":42"; const string ordersLink = @"{""Title"":null,""Href"":""/customer/42/orders"",""Rel"":""customer.orders"",""Type"":""application/vnd.list.order+json""}"; const string selfLink = @"{""Title"":null,""Href"":""/customer/42"",""Rel"":""self"",""Type"":""application/vnd.customer+json""}"; var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), new[] {new Customer {Id = 42}}); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write<IEnumerable<Customer>>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); Assert.Contains(idProperty, actual); Assert.Contains(ordersLink, actual); Assert.Contains(selfLink, actual); }
public void SerializesOrder() { var content = new Content(new Uri("http://test.com/order/42"), new OrderHandler(), new Order { Id = 54, CustomerId = 42 }); var target = new ExplicitXmlMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <Order>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); const string expected = "<Order Id='54' CustomerId='42'>" + " <link href='/order/54' rel='self' type='application/vnd.order+xml' />" + "</Order>"; XElement.Parse(actual).ShouldEqual(expected); }
public void ReadToEnd(StringBuilder stringBuilder) { // Act string result; StringBuilderStream sut = null; try { sut = new StringBuilderStream(stringBuilder); using (var reader = new StreamReader(sut, Encoding.Default, true, 1024, true)) { result = reader.ReadToEnd(); } } finally { sut?.Dispose(); } // Assert Assert.That(result, Is.EqualTo(stringBuilder.ToString())); }
public void AddsSelfLinkToChildCollectionItems() { var customer = new Customer { Id = 42, Orders = new List <Order> { new Order { CustomerId = 42, Id = 54 } } }; var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), customer); var target = new JsonMediaTypeHandlerWithDeepLinks(); string actual; using (var stream = new StringBuilderStream()) { target.Write <Customer>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); var jobj = JObject.Parse(actual); var orders = jobj["orders"] as JArray; Assert.NotNull(orders); var order = orders[0] as JObject; Assert.NotNull(order); var links = order["links"] as JArray; Assert.NotNull(links); var self = links.FirstOrDefault(jt => jt["rel"].Value <string>() == "self"); Assert.NotNull(self); Assert.Equal("/order/54", self["href"].Value <string>()); Assert.Equal("application/vnd.order+json", self["type"].Value <string>()); }
public void SerializingListToJsonHasExpectedData() { const string expectedString = "{\"Customers\":[{\"Id\":42,\"Orders\":null}]}"; var content = new Content(new Uri("http://test.com/customer/42"), new CustomersListHandler(), new CustomerList() { Customers = new List <Customer>() { new Customer { Id = 42 } } }); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write <CustomerList>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); Assert.Equal(expectedString, actual); }
public void AddsSelfLinkToChildCollectionItems() { var customer = new Customer { Id = 42, Orders = new List<Order> {new Order {CustomerId = 42, Id = 54}} }; var content = new Content(new Uri("http://test.com/customer/42"), new CustomerHandler(), customer); var target = new JsonMediaTypeHandlerWithDeepLinks(); string actual; using (var stream = new StringBuilderStream()) { target.Write<Customer>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); var jobj = JObject.Parse(actual); var orders = jobj["orders"] as JArray; Assert.NotNull(orders); var order = orders[0] as JObject; Assert.NotNull(order); var links = order["links"] as JArray; Assert.NotNull(links); var self = links.FirstOrDefault(jt => jt["rel"].Value<string>() == "self"); Assert.NotNull(self); Assert.Equal("/order/54", self["href"].Value<string>()); Assert.Equal("application/vnd.order+json", self["type"].Value<string>()); }
public void PicksUpPathFromThing() { const string thingLink = @"{""title"":null,""href"":""/things?path=%2Ffoo%2Fbar"",""rel"":""self"",""type"":""application/json""}"; var content = new Content(new Uri("http://test.com/foo/bar"), new ThingHandler(), new Thing {Path = "/foo/bar"}); var target = new JsonMediaTypeHandler(); string actual; using (var stream = new StringBuilderStream()) { target.Write<Thing>(content, stream).Wait(); actual = stream.StringValue; } Assert.NotNull(actual); Assert.Contains(thingLink, actual); }
public void UnsupportedMembers(StringBuilder stringBuilder) { using (var sut = new StringBuilderStream(stringBuilder)) { Assert.Throws <NotSupportedException>(() => sut.Seek(default, default));