示例#1
0
        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);
                }
            });
        }
示例#2
0
        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);
            });
        }
示例#3
0
        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);
        }
示例#5
0
        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);
            });
        }