Пример #1
0
        public async Task Update_WhenDataValid_ShouldReturnSuccessCode()
        {
            // Arrange
            var productsDbOld = await Helper.GetAllProductsFromDatabase();

            if (productsDbOld.Length == 0)
            {
                throw new Exception("Don't have data to do this test");
            }

            var random             = new Random();
            var productDaoToUpdate = productsDbOld[0];
            var updateProductData  = new UpdateProductCommand
            {
                Id    = productDaoToUpdate.Id,
                Name  = random.Next(1, 1000000).ToString(),
                Price = random.Next(1, 1000000),
            };

            var client = _factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(TestConstants.TestToken);

            // Act
            var response = await client.PutAsync($"{TestConstants.ProductApiBaseUrl}/{updateProductData.Id}", updateProductData.SerializeToStringContent());

            // Assert
            response.EnsureSuccessStatusCode();             // Status Code 200-299

            var productsDbNew = await Helper.GetAllProductsFromDatabase();

            Assert.Equal(productsDbNew.Length, productsDbOld.Length);

            var productOld = productsDbOld.First(p => p.Id == updateProductData.Id);

            Helper.ConfirmProductUpdated(
                productsDbNew: productsDbNew,
                id: updateProductData.Id,
                name: updateProductData.Name,
                price: updateProductData.Price,
                createdBy: productOld.CreatedBy,
                createdDate: productOld.CreatedDate,
                lastModifyDate: productOld.LastModifyDate);

            Helper.ConfirmProductsListNotChange(
                productsDbNew: productsDbNew,
                productsDbOld: productsDbOld,
                ignoreIds: updateProductData.Id);
        }
Пример #2
0
        public async Task Update_WhenDataInValid_ShouldReturnBadRequestStatusCodeAndErrorObject()
        {
            // Arrange
            var updateProductData = new UpdateProductCommand
            {
                Id    = Guid.NewGuid(),
                Name  = "",
                Price = 0
            };

            var client = _factory.CreateClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(TestConstants.TestToken);

            // Act
            var response = await client.PutAsync($"{TestConstants.ProductApiBaseUrl}/{updateProductData.Id}", updateProductData.SerializeToStringContent());

            var errors = await response.DeserializeResponseContent <Dictionary <string, string[]> >();

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.NotEmpty(errors["Name"][0]);
            Assert.NotEmpty(errors["Price"][0]);
        }
Пример #3
0
        public async Task Update_WhenDoesntHaveAuthenticationToken_ShouldReturn401Code()
        {
            // Arrange
            var updateProductData = new UpdateProductCommand
            {
                Id    = Guid.NewGuid(),
                Name  = "",
                Price = 0
            };
            var client = _factory.CreateClient();

            // Act
            var response = await client.PutAsync($"{TestConstants.ProductApiBaseUrl}/{updateProductData.Id}", updateProductData.SerializeToStringContent());

            // Assert
            Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
        }