Exemplo n.º 1
0
        public async Task ReturnSuccessfulOfmQueryResult_UsingPatch()
        {
            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 returnedCategoryOfmForGet = new CategoryOfmForGet()
                    {
                        Id   = 1,
                        Name = "UpdatedCategoryName"
                    };

                    var patchDocument = new JsonPatchDocument()
                    {
                        Operations =
                        {
                            new Operation <CategoryOfmForPatch>("replace", "/Name", null, "UpdatedCategoryName")
                        }
                    };

                    var uri                 = new Uri(testAppConfiguration.Instance.GetValue <string>("FittifyApiBaseUrl") + "api/categories/1");
                    var httpResponse        = new HttpResponseMessage();
                    httpResponse.Content    = new StringContent(JsonConvert.SerializeObject(returnedCategoryOfmForGet));
                    httpResponse.StatusCode = HttpStatusCode.OK;
                    httpRequestHandlerMock.Setup(s => s.Patch(uri, patchDocument, testAppConfiguration.Instance, httpContextAccessorMock.Object)).ReturnsAsync(httpResponse);


                    // ACT
                    var ofmQueryResult = await genericAsyncGppdOfm.Patch(1, patchDocument);

                    // Assert
                    var actualOfmQueryResult = JsonConvert.SerializeObject(ofmQueryResult, new JsonSerializerSettings()
                    {
                        Formatting = Newtonsoft.Json.Formatting.Indented
                    }).MinifyJson().PrettifyJson();
                    var expectedOfmQueryResult =
                        @"
                            {
                              ""OfmForGet"": {
                                ""Id"": 1,
                                ""Name"": ""UpdatedCategoryName""
                              },
                              ""HttpStatusCode"": 200,
                              ""HttpResponseHeaders"": [],
                              ""ErrorMessagesPresented"": null
                            }
                        ".MinifyJson().PrettifyJson();


                    Assert.AreEqual(actualOfmQueryResult, expectedOfmQueryResult);
                }
            });
        }
Exemplo n.º 2
0
        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);
                }
            });
        }