public async Task Update_Single_Media() { // For the sake of sanity I'll use request object and convert it to JSON before calling API. // Always set token first. Config.Client.SetToken(this.token); // Make some changes so we can correct it later with update command. var wrongRequest = ExampleRequest_BreakingBad(); wrongRequest.Name += " ~some wrong text~"; wrongRequest.Parts.ToArray()[0].Name += " ~some wrong text~"; // Add wrong data. HttpResponseMessage response = await Config.Client.PostAsync(Common.ApiRoutes.Media.Add, new StringContent( JsonSerializer.Serialize(wrongRequest), Encoding.UTF8, Config.HttpMediaTypeJson)); var responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); Common.Api.Response.MediaHeader responseHeader = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseHeader); // Change request data, with correct values. Common.Api.Request.MediaHeader correctedRequestHeader = ResponseToRequest(responseHeader); correctedRequestHeader.Name = "Breaking Bad (2008)"; correctedRequestHeader.Parts.ToArray()[0].Name = "Pilot"; // Update. Structures must have id's. response = await Config.Client.PostAsync(Common.ApiRoutes.Media.Update, new StringContent( JsonSerializer.Serialize(correctedRequestHeader), Encoding.UTF8, Config.HttpMediaTypeJson)); responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); responseHeader = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseHeader); // Header Assert.AreEqual("Breaking Bad (2008)", responseHeader.Name); Assert.IsNotNull(responseHeader.Description); Assert.IsTrue(responseHeader.Description.Length > 0); // Parts Assert.AreEqual(2, responseHeader.Parts.Count); Assert.AreEqual("Pilot", responseHeader.Parts.ToArray()[0].Name); Assert.AreEqual("Cat's in the Bag...", responseHeader.Parts.ToArray()[1].Name); // Part[0] / Versions Assert.AreEqual(1, responseHeader.Parts.ToArray()[0].Versions.Count); Assert.AreEqual(2, responseHeader.Parts.ToArray()[0].Versions.ToArray()[0].Links.Count); // Part[1] / Versions Assert.AreEqual(1, responseHeader.Parts.ToArray()[1].Versions.Count); Assert.AreEqual(2, responseHeader.Parts.ToArray()[1].Versions.ToArray()[0].Links.Count); }
public async Task Add_Two_Medias() { // Add "Breaking Bad" Series var requestMedia = ExampleRequest_BreakingBad(); HttpResponseMessage response = await Config.Client.PostAsync(Common.ApiRoutes.Media.Add, new StringContent( JsonSerializer.Serialize(requestMedia), Encoding.UTF8, Config.HttpMediaTypeJson)); var responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); Common.Api.Response.MediaHeader responseMedia = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseMedia); CompareRequestAndResponse(requestMedia, responseMedia); // Add "American Beauty" movie. requestMedia = ExampleRequest_AmericanBeauty(); response = await Config.Client.PostAsync(Common.ApiRoutes.Media.Add, new StringContent( JsonSerializer.Serialize(requestMedia), Encoding.UTF8, Config.HttpMediaTypeJson)); responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); responseMedia = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseMedia); CompareRequestAndResponse(requestMedia, responseMedia); }
public async Task Get_Single() { // Add something to update in second step. var requestHeader = ExampleRequest_BreakingBad(); HttpResponseMessage response = await Config.Client.PostAsync(Common.ApiRoutes.Media.Add, new StringContent( JsonSerializer.Serialize(requestHeader), Encoding.UTF8, Config.HttpMediaTypeJson)); var responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); Common.Api.Response.MediaHeader responseHeader = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseHeader); // Get by id. response = await Config.Client.GetAsync(Common.ApiRoutes.Media.GetId(responseHeader.MediaHeaderId)); responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); responseHeader = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseHeader); CompareRequestAndResponse(requestHeader, responseHeader); }
public static void MapResponseMedia(this Dal.Model.MediaHeader media, ref Common.Api.Response.MediaHeader responseHeader) { responseHeader.MediaHeaderId = media.MediaHeaderId; responseHeader.Name = media.Name; responseHeader.Year = media.Year; responseHeader.Description = media.Description; responseHeader.ReferenceLink = media.ReferenceLink != null ? media.ReferenceLink.AbsoluteUri : string.Empty; responseHeader.User = media.User.MapReponseUser(); }
public async Task Add_Single_Media_And_Check_All_Content() { // For the sake of simplicity I'll use request object and convert it to JSON before calling API. var requestMedia = ExampleRequest_BreakingBad(); HttpResponseMessage response = await Config.Client.PostAsync(Common.ApiRoutes.Media.Add, new StringContent(JsonSerializer.Serialize(requestMedia), Encoding.UTF8, Config.HttpMediaTypeJson)); var responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); Common.Api.Response.MediaHeader responseMedia = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseMedia); CompareRequestAndResponse(requestMedia, responseMedia); }
private static Common.Api.Request.MediaHeader ResponseToRequest(Common.Api.Response.MediaHeader responseHeader) { return(new() { MediaHeaderId = responseHeader.MediaHeaderId, Name = responseHeader.Name, Description = responseHeader.Description, ReferenceLink = responseHeader.ReferenceLink, Parts = responseHeader.Parts.Select(p => new Common.Api.Request.MediaPart { MediaPartId = p.MediaPartId, Season = p.Season, Episode = p.Episode, Name = p.Name, Description = p.Description, ReferenceLink = p.ReferenceLink, Version = new Common.Api.Request.MediaVersion { MediaVersionId = p.Versions.FirstOrDefault().MediaVersionId, VersionComment = p.Versions.FirstOrDefault().VersionComment, Links = p.Versions.FirstOrDefault().Links.Select(l => new Common.Api.Request.MediaLink { MediaLinkId = l.MediaLinkId, LinkOrderId = l.LinkOrderId, Link = l.Link }).ToList(), Tags = p.Versions.FirstOrDefault().Tags.Select(t => new Common.Api.Request.MediaTag { Name = t.Name }).ToList() }, Tags = p.Tags.Select(t => new Common.Api.Request.MediaTag { Name = t.Name }).ToList() }).ToList(), Tags = responseHeader.Tags.Select(t => new Common.Api.Request.MediaTag { Name = t.Name }).ToList() }); }
public async Task Remove_One_Part_Tag() { // For the sake of sanity I'll use request object and convert it to JSON before calling API. // Add wrong data. HttpResponseMessage response = await Config.Client.PostAsync(Common.ApiRoutes.Media.Add, new StringContent( JsonSerializer.Serialize(ExampleRequest_BreakingBad()), Encoding.UTF8, Config.HttpMediaTypeJson)); var responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); Common.Api.Response.MediaHeader responseHeader = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseHeader); // Delete one tag from first part. Common.Api.Request.MediaHeader updatedRequest = ResponseToRequest(responseHeader); var part1Tags = ((List <Common.Api.Request.MediaTag>)((List <Common.Api.Request.MediaPart>)updatedRequest.Parts).First().Tags); var oldPart1TagCount = part1Tags.Count; part1Tags.Remove(part1Tags.LastOrDefault()); // Update. Structures must have id's. response = await Config.Client.PostAsync(Common.ApiRoutes.Media.Update, new StringContent( JsonSerializer.Serialize(updatedRequest), Encoding.UTF8, Config.HttpMediaTypeJson)); responseMessage = await response.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, responseMessage); responseHeader = JsonSerializer.Deserialize <Common.Api.Response.MediaHeader>(responseMessage); Assert.IsNotNull(responseHeader); Assert.AreEqual(--oldPart1TagCount, ((IList <Common.Api.Response.MediaTag>)((IList <Common.Api.Response.MediaPart>)responseHeader.Parts).First().Tags).Count); }
private static void CompareRequestAndResponse(Common.Api.Request.MediaHeader requestMedia, Common.Api.Response.MediaHeader responseMedia) { // Header Assert.AreEqual(requestMedia.Name, responseMedia.Name); Assert.AreEqual(requestMedia.Year, responseMedia.Year); Assert.AreEqual(requestMedia.Description, responseMedia.Description); Assert.AreEqual(requestMedia.ReferenceLink, responseMedia.ReferenceLink); if (requestMedia.Tags != null) { Assert.AreEqual(requestMedia.Tags.Count, responseMedia.Tags.Count); foreach (var requestTag in requestMedia.Tags) { Assert.IsTrue((responseMedia.Tags as IList <Common.Api.Response.MediaTag>).Any(responseTag => responseTag.Name == requestTag.Name)); } } // Parts if (requestMedia.Parts != null) { Assert.AreEqual(requestMedia.Parts.Count, responseMedia.Parts.Count); foreach (var requestPart in requestMedia.Parts) { var responsePart = responseMedia.Parts.SingleOrDefault(p => p.Season == requestPart.Season && p.Episode == requestPart.Episode); Assert.IsNotNull(responsePart, "Can't find response part."); if (requestPart.Name != null) { Assert.AreEqual(requestPart.Name, responsePart.Name); } if (requestPart.Description != null) { Assert.AreEqual(requestPart.Description, responsePart.Description); } if (requestPart.ReferenceLink != null) { Assert.AreEqual(requestPart.ReferenceLink, responsePart.ReferenceLink); } // Part Tags if (requestPart.Tags != null) { Assert.AreEqual(requestPart.Tags.Count, responsePart.Tags.Count); foreach (var requestTag in requestPart.Tags) { Assert.IsTrue((responsePart.Tags as IList <Common.Api.Response.MediaTag>).Any(responseTag => responseTag.Name == requestTag.Name)); } } // Version Assert.AreEqual(requestPart.Version.VersionComment, responsePart.Versions.FirstOrDefault().VersionComment); // Version Tags if (requestPart.Version.Tags != null) { Assert.AreEqual(requestPart.Version.Tags.Count, responsePart.Versions.FirstOrDefault().Tags.Count); foreach (var requestTag in requestPart.Version.Tags) { Assert.IsTrue((responsePart.Versions.FirstOrDefault().Tags as IList <Common.Api.Response.MediaTag>).Any(responseTag => responseTag.Name == requestTag.Name)); } } // Links Assert.AreEqual(requestPart.Version.Links.Count, responsePart.Versions.FirstOrDefault().Links.Count); foreach (var requestLink in requestPart.Version.Links) { var responseLink = responsePart.Versions.FirstOrDefault().Links.SingleOrDefault(l => l.LinkOrderId == requestLink.LinkOrderId); Assert.IsNotNull(responseLink); Assert.AreEqual(requestLink.Link, responseLink.Link); } } } }