public async Task ReturnSuccessfulOfmQueryResult_UsingPost() { await Task.Run(async() => { // Arrange using (var testAppConfiguration = new AppConfigurationMock(File.ReadAllText(Path.GetDirectoryName(typeof(Startup).GetTypeInfo().Assembly.Location) + "\\appsettings.json"))) { // ARRANGE var httpContextAccessorMock = new Mock <IHttpContextAccessor>(); var httpRequestHandlerMock = new Mock <IHttpRequestExecuter>(); var genericAsyncGppdOfm = new CategoryApiModelRepository( testAppConfiguration.Instance, httpContextAccessorMock.Object, httpRequestHandlerMock.Object); var categoryOfmForPost = new CategoryOfmForPost() { Name = "MockCategoryName" }; var returnedCategoryOfmForGet = new CategoryOfmForGet() { Id = 1, Name = "MockCategoryName" }; var uri = new Uri(testAppConfiguration.Instance.GetValue <string>("FittifyApiBaseUrl") + "api/categories"); var httpResponse = new HttpResponseMessage(); httpResponse.Content = new StringContent(JsonConvert.SerializeObject(returnedCategoryOfmForGet)); httpResponse.StatusCode = HttpStatusCode.OK; httpRequestHandlerMock.Setup(s => s.Post(uri, categoryOfmForPost, testAppConfiguration.Instance, httpContextAccessorMock.Object)).ReturnsAsync(httpResponse); // ACT var ofmQueryResult = await genericAsyncGppdOfm.Post(categoryOfmForPost); // Assert var actualOfmQueryResult = JsonConvert.SerializeObject(ofmQueryResult, new JsonSerializerSettings() { Formatting = Newtonsoft.Json.Formatting.Indented }).MinifyJson().PrettifyJson(); var expectedOfmQueryResult = @" { ""OfmForGet"": { ""Id"": 1, ""Name"": ""MockCategoryName"" }, ""HttpStatusCode"": 200, ""HttpResponseHeaders"": [], ""ErrorMessagesPresented"": null } ".MinifyJson().PrettifyJson(); Assert.AreEqual(actualOfmQueryResult, expectedOfmQueryResult); } }); }
public async Task ReturnSuccessfulOfmQueryResult_UsingPost() { await Task.Run(async() => { // ARRANGE var categoryApiModelRepository = new Mock <IApiModelRepository <int, CategoryOfmForGet, CategoryOfmForPost, CategoryOfmCollectionResourceParameters> >(); var returnedOfmQueryResult = new OfmQueryResult <CategoryOfmForGet>() { OfmForGet = new CategoryOfmForGet() { Id = 1, Name = "CategoryMock" }, HttpStatusCode = HttpStatusCode.Created }; var categoryOfmForPost = new CategoryOfmForPost() { Name = "CategoryMock" }; categoryApiModelRepository.Setup(s => s.Post(categoryOfmForPost)).ReturnsAsync(returnedOfmQueryResult); var categoryViewModelRepository = new CategoryViewModelRepository(categoryApiModelRepository.Object); // ACT var ofmQueryResult = await categoryViewModelRepository.Create(categoryOfmForPost); // Assert var actualOfmQueryResult = JsonConvert.SerializeObject(ofmQueryResult, new JsonSerializerSettings() { Formatting = Newtonsoft.Json.Formatting.Indented }).MinifyJson() .PrettifyJson(); var expectedOfmQueryResult = @" { ""ViewModel"": { ""Id"": 1, ""Name"": ""CategoryMock"" }, ""HttpStatusCode"": 201, ""HttpResponseHeaders"": null, ""ErrorMessagesPresented"": null } ".MinifyJson().PrettifyJson(); Assert.AreEqual(actualOfmQueryResult, expectedOfmQueryResult); }); }
public async Task CorrectlyCreateNewOfm() { // Arrange var asyncDataCrudMock = new Mock <IAsyncCrud <Category, int, CategoryResourceParameters> >(); asyncDataCrudMock .Setup(s => s.Create(It.IsAny <Category>(), It.IsAny <Guid>())).Returns(Task.FromResult(new Category() //// Todo: Can It.IsAny<> be made more concrete? { Id = 1, Name = "NewMockCategory", OwnerGuid = _ownerGuid })); var categoryOfmRepository = new CategoryOfmRepository(asyncDataCrudMock.Object, new PropertyMappingService(), new TypeHelperService()); var categoryOfmForPost = new CategoryOfmForPost() { Name = "NewMockCategory" }; // Act var categoryOfmResult = await categoryOfmRepository.Post(categoryOfmForPost, _ownerGuid); // Assert var actualOfmResult = JsonConvert.SerializeObject(categoryOfmResult, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, Formatting = Formatting.Indented }); var expectedOfmResult = JsonConvert.SerializeObject( new CategoryOfmForGet() { Id = 1, Name = "NewMockCategory" }, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, Formatting = Formatting.Indented }); Assert.AreEqual(expectedOfmResult, actualOfmResult); }
public async Task <IActionResult> Post([FromBody] CategoryOfmForPost ofmForPost) { var stringGuid = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value; if (String.IsNullOrWhiteSpace(stringGuid)) { return(Unauthorized()); } var ownerGuid = new Guid(stringGuid); if (!_controllerGuardClause.ValidatePost(ofmForPost, out ObjectResult objectResult)) { return(objectResult); } var ofmForGet = await _asyncOfmRepository.Post(ofmForPost, ownerGuid); var result = CreatedAtRoute(routeName: "GetCategoryById", routeValues: new { id = ofmForGet.Id }, value: ofmForGet); return(result); }
public async Task ReturnOfmQueryResultWithErrorMessges_UsingPartiallyUpdate() { await Task.Run(async() => { // ARRANGE var categoryApiModelRepository = new Mock <IApiModelRepository <int, CategoryOfmForGet, CategoryOfmForPost, CategoryOfmCollectionResourceParameters> >(); var returnedOfmQueryResult = new OfmQueryResult <CategoryOfmForGet>() { OfmForGet = null, ErrorMessagesPresented = new Dictionary <string, object>() { { "category", new List <string>() { "Some error message", "Some other error message" } } }, HttpStatusCode = HttpStatusCode.BadRequest }; var categoryOfmForPost = new CategoryOfmForPost() { Name = "CategoryMock" }; categoryApiModelRepository.Setup(s => s.Patch(1, It.IsAny <JsonPatchDocument>())).ReturnsAsync(returnedOfmQueryResult); var categoryViewModelRepository = new CategoryViewModelRepository(categoryApiModelRepository.Object); // ACT var ofmQueryResult = await categoryViewModelRepository.PartiallyUpdate(1, new JsonPatchDocument()); // Assert var actualOfmQueryResult = JsonConvert.SerializeObject(ofmQueryResult, new JsonSerializerSettings() { Formatting = Newtonsoft.Json.Formatting.Indented }).MinifyJson() .PrettifyJson(); var expectedOfmQueryResult = @" { ""ViewModel"": null, ""HttpStatusCode"": 400, ""HttpResponseHeaders"": null, ""ErrorMessagesPresented"": { ""category"": [ ""Some error message"", ""Some other error message"" ] } } ".MinifyJson().PrettifyJson(); Assert.AreEqual(actualOfmQueryResult, expectedOfmQueryResult); }); }