public async Task ReturnCorrectQueryParameterString() { await Task.Run(() => { var CategoryOfmCollectionResourceParameters = new CategoryOfmCollectionResourceParameters() { SearchQuery = "Chest", OrderBy = "", Ids = "1-5,8,10-12", PageNumber = 2, PageSize = 10, Fields = "Id, Name" }; var queryParameterString = CategoryOfmCollectionResourceParameters.ToQueryParameterString(); // Assert var actualQueryParameterString = queryParameterString; var expectedOfmQueryResult = "?SearchQuery=Chest&Ids=1-5,8,10-12&PageNumber=2&PageSize=10&Fields=Id, Name"; Assert.AreEqual(actualQueryParameterString, expectedOfmQueryResult); }); }
public async Task ReturnOfmQueryResultWithErrorMessasges_UsingGetCollection() { 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 returnedOfmCollectionQueryResult = new Dictionary <string, object>() { { "categories", new List <string>() { "Some error message", "Some other error message" } } }; var resourceParameters = new CategoryOfmCollectionResourceParameters(); var uri = new Uri(testAppConfiguration.Instance.GetValue <string>("FittifyApiBaseUrl") + "api/categories" + resourceParameters.ToQueryParameterString()); var httpResponse = new HttpResponseMessage(); httpResponse.Content = new StringContent(JsonConvert.SerializeObject(returnedOfmCollectionQueryResult)); httpResponse.StatusCode = HttpStatusCode.BadRequest; httpRequestHandlerMock.Setup(s => s.GetCollection(uri, testAppConfiguration.Instance, httpContextAccessorMock.Object)).ReturnsAsync(httpResponse); // ACT var ofmQueryResult = await genericAsyncGppdOfm.GetCollection(resourceParameters); // Assert var actualOfmQueryResult = JsonConvert.SerializeObject(ofmQueryResult, new JsonSerializerSettings() { Formatting = Newtonsoft.Json.Formatting.Indented }).MinifyJson().PrettifyJson(); var expectedOfmQueryResult = @" { ""OfmForGetCollection"": null, ""HttpStatusCode"": 400, ""HttpResponseHeaders"": [], ""ErrorMessagesPresented"": { ""categories"": [ ""Some error message"", ""Some other error message"" ] } } ".MinifyJson().PrettifyJson(); Assert.AreEqual(actualOfmQueryResult, expectedOfmQueryResult); } }); }
public async Task <IActionResult> GetCollection(CategoryOfmCollectionResourceParameters collectionResourceParameters) { var stringGuid = User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value; if (String.IsNullOrWhiteSpace(stringGuid)) { return(Unauthorized()); } var ownerGuid = new Guid(stringGuid); var ofmForGetCollectionQueryResult = await _asyncOfmRepository.GetCollection(collectionResourceParameters, ownerGuid); if (!_controllerGuardClause.ValidateGetCollection(ofmForGetCollectionQueryResult, out ObjectResult objectResult)) { return(objectResult); } var expandableOfmForGetCollection = ofmForGetCollectionQueryResult.ReturnedTOfmForGetCollection.OfmForGets.ToExpandableOfmForGets(); if (_incomingHeaders.IncludeHateoas) { expandableOfmForGetCollection = expandableOfmForGetCollection.CreateHateoasForExpandableOfmForGets <CategoryOfmForGet, int>(_urlHelper, nameof(CategoryApiController), collectionResourceParameters.Fields).ToList(); // Todo Improve! The data is only superficially shaped AFTER a full query was run against the database } expandableOfmForGetCollection = expandableOfmForGetCollection.Shape(collectionResourceParameters.Fields, _incomingHeaders.IncludeHateoas).ToList(); this.AddPaginationMetadata <int, CategoryOfmForGet>(ofmForGetCollectionQueryResult, _incomingHeaders, collectionResourceParameters.AsDictionary().RemoveNullValues(), _urlHelper, nameof(CategoryApiController)); if (!_incomingHeaders.IncludeHateoas) { return(Ok(expandableOfmForGetCollection)); } dynamic result = new { value = expandableOfmForGetCollection, links = _hateoasLinkFactory.CreateLinksForOfmGetGeneric(collectionResourceParameters.AsDictionary().RemoveNullValues(), ofmForGetCollectionQueryResult.HasPrevious, ofmForGetCollectionQueryResult.HasNext).ToList() }; return(Ok(result)); }