public void ReadFromStreamAsync_Deserializes_Properties_Correctly() { // Arrange Car car = new Car(); string inputString = "{\"class\":[],\"properties\":{\"colour\":\"Black\",\"numberOfWheels\":5},\"entities\":[]}"; // Act using (MemoryStream stream = new MemoryStream(System.Text.Encoding.Default.GetBytes(inputString))) { var content = new StreamContent(stream); var task = formatter.ReadFromStreamAsync(typeof(Car), stream, content, null); car = task.Result as Car; } // Assert Assert.AreEqual("Black", car.Colour); Assert.AreEqual(5, car.NumberOfWheels); }
public void WriteToStreamAsync_Serializes_Class_Correctly() { // Arrange Car myCar = new Car(); myCar.Class.Add("Car Class"); // Act IEntity entityAfter = GetIEntityResultsFromWriteToStreamAsync(myCar); // Assert - Have properties Assert.IsTrue(entityAfter.Class.Contains("Car Class")); }
public void WriteToStreamAsync_Serializes_SubEntities_Of_SubEntitiess_Correctly() { // Arrange Car myCar = new Car(); Wheel myWheel = new Wheel(); WheelNut myNut = new WheelNut(); myNut.IsLockNut = true; myNut.AddClass("WheelNut"); myNut.AddRel("/rels/wheelnut"); // Add the subentity to the subentity myWheel.AddSubEntity(myNut); myWheel.id = 1; myWheel.Size = "124x55x18"; myWheel.Title = "My Car Wheel"; myWheel.AddRel("/rels/car/wheel"); myWheel.AddClass("Wheel") .AddAction(new WebApiContrib.MediaType.Hypermedia.Action("Inflate", "Inflate the wheel", HTTP_Method.PUT, new Uri("https://api.test.com/wheel/inflate"))) .AddLink(new SelfLink(new Uri("https://api.test.com/wheel/1"))); myCar.Entities.Add(myWheel); // Act IEntity entityAfter = GetIEntityResultsFromWriteToStreamAsync(myCar); // Assert - Have properties string entityString = entityAfter.Entities[0].ToString(); string expectedString = @"{ ""class"": [ ""Wheel"" ], ""title"": ""My Car Wheel"", ""rel"": [ ""/rels/car/wheel"" ], ""properties"": { ""id"": 1, ""size"": ""124x55x18"" }, ""entities"": [ { ""class"": [ ""WheelNut"" ], ""rel"": [ ""/rels/wheelnut"" ], ""properties"": { ""id"": 0, ""isLockNut"": true }, ""entities"": [] } ], ""actions"": [ { ""name"": ""Inflate"", ""class"": [ ""Inflate"" ], ""method"": ""PUT"", ""href"": ""https://api.test.com/wheel/inflate"", ""title"": ""Inflate the wheel"", ""type"": ""application/json"", ""fields"": [] } ], ""links"": [ { ""rel"": [ ""self"" ], ""href"": ""https://api.test.com/wheel/1"", ""title"": null, ""type"": null } ] }"; // Assert - Match Assert.AreEqual(expectedString, entityString); }
public void WriteToStreamAsync_Serializes_Actions_Correctly() { // Arrange Car myCar = new Car(); Uri actionUri = new Uri("https://api.test.com/car/start"); myCar.Actions.Add(new WebApiContrib.MediaType.Hypermedia.Action("Start", "Start the car", HTTP_Method.POST, actionUri)); // Act string entityAfter = GetStringResultsFromWriteToStreamAsync(myCar); // Assert - Have properties string expectedEntity = @"{""class"":[],""properties"":{""numberOfWheels"":0},""entities"":[],""actions"":[{""name"":""Start"",""class"":[""Start""],""method"":""POST"",""href"":""https://api.test.com/car/start"",""title"":""Start the car"",""type"":""application/json"",""fields"":[]}]}"; // Assert - Match Assert.AreEqual(expectedEntity, entityAfter); }