コード例 #1
0
        public async Task ValidateBeer_GivenABeerWithAnInvalidBreweryId_ShouldThrowAHttpExceptionWithCorrectMessage()
        {
            //Arrange
            var beer = new Beer
            {
                Name    = "Test name",
                Brewery = new Brewery
                {
                    Id = Guid.NewGuid()
                }
            };

            var expectedValidationMessage = "A beer must always be linked to an existing brewery";

            var mockedBrandDataAccess = new Mock <IBrandDataAccess>();

            mockedBrandDataAccess.Setup(dataAccess => dataAccess.GetBrewery(It.IsAny <Guid>()))
            .ReturnsAsync((BreweryEntity)null);

            var brandValidation = new BrandValidation(mockedBrandDataAccess.Object);

            //Act
            try
            {
                await brandValidation.ValidateBeer(beer);
            }
            catch (HttpException e)
            {
                //Assert
                Assert.Equal(HttpStatusCode.BadRequest, e.StatusCode);
                Assert.Equal(expectedValidationMessage, e.Message);
            }
        }
コード例 #2
0
        public async Task ValidateBeer_GivenABeerWithAnEmptyBreweryId_ShouldThrowAHttpExceptionWithCorrectMessage()
        {
            //Arrange
            var beer = new Beer
            {
                Name    = "Test name",
                Brewery = new Brewery
                {
                    Id = Guid.Empty
                }
            };

            var expectedValidationMessage = "A beer must always have a brewery";

            var brandValidation = new BrandValidation(null);

            //Act
            try
            {
                await brandValidation.ValidateBeer(beer);
            }
            catch (HttpException e)
            {
                //Assert
                Assert.Equal(HttpStatusCode.BadRequest, e.StatusCode);
                Assert.Equal(expectedValidationMessage, e.Message);
            }
        }
コード例 #3
0
        public async Task ValidateBeer_GivenAValidBeer_ShouldNotThrowAnyException()
        {
            //Arrange
            var beer = new Beer
            {
                Name    = "Test name",
                Brewery = new Brewery
                {
                    Id = Guid.NewGuid()
                }
            };

            var mockedBrandDataAccess = new Mock <IBrandDataAccess>();

            mockedBrandDataAccess.Setup(dataAccess => dataAccess.GetBrewery(It.IsAny <Guid>()))
            .ReturnsAsync(new BreweryEntity());

            var brandValidation = new BrandValidation(mockedBrandDataAccess.Object);

            //Act
            await brandValidation.ValidateBeer(beer);

            //Assert
            mockedBrandDataAccess.Verify(dataAccess => dataAccess.GetBrewery(It.IsAny <Guid>()), Times.Once);
        }
コード例 #4
0
        public async Task ValidateBeerExists_GivenANonExisting_ShouldThrowAHttpExceptionWithCorrectMessage()
        {
            //Arrange
            var beerId = Guid.NewGuid();

            var expectedValidationMessage = "The beer does not exist";

            var mockedBrandDataAccess = new Mock <IBrandDataAccess>();

            mockedBrandDataAccess.Setup(dataAccess => dataAccess.GetBeer(It.IsAny <Guid>()))
            .ReturnsAsync((BeerEntity)null);

            var brandValidation = new BrandValidation(mockedBrandDataAccess.Object);

            //Act
            try
            {
                await brandValidation.ValidateBeerExists(beerId);
            }
            catch (HttpException e)
            {
                //Assert
                Assert.Equal(HttpStatusCode.BadRequest, e.StatusCode);
                Assert.Equal(expectedValidationMessage, e.Message);
            }
        }
コード例 #5
0
        public async Task BeerExists_GivenAnNonExistingBeerId_ShouldReturnFalse()
        {
            //Arrange
            var guid = Guid.NewGuid();

            var mockedBrandQuery = new Mock <IBrandQuery>();

            mockedBrandQuery.Setup(query => query.GetBeer(It.IsAny <Guid>()))
            .ReturnsAsync((Beer)null);

            var brandValidation = new BrandValidation(mockedBrandQuery.Object);

            //Act
            var result = await brandValidation.BeerExists(guid);

            //Assert
            Assert.False(result);
        }
コード例 #6
0
        public async Task ValidateBeer_GivenNoBreweryId_ShouldReturnAValidationResultWithExpectedErrorMessage()
        {
            //Arrange
            var guid = Guid.NewGuid();
            var beer = new Beer
            {
                BreweryId = Guid.Empty
            };

            var expectedErrorMessage = "A beer must always be linked to a brewery";

            var brandValidation = new BrandValidation(null);

            //Act
            var results = await brandValidation.ValidateBeer(beer);

            //Assert
            Assert.Contains(results, result => result.ErrorMessage.Equals(expectedErrorMessage));
        }
コード例 #7
0
        public async Task ValidateBeer_GivenValidBreweryId_ShouldReturnAllValidationResultsSuccessful()
        {
            //Arrange
            var guid = Guid.NewGuid();
            var beer = new Beer
            {
                BreweryId = guid
            };

            var mockedBrandQuery = new Mock <IBrandQuery>();

            mockedBrandQuery.Setup(query => query.GetBrewery(It.IsAny <Guid>()))
            .ReturnsAsync(new Brewery());

            var brandValidation = new BrandValidation(mockedBrandQuery.Object);

            //Act
            var results = await brandValidation.ValidateBeer(beer);

            //Assert
            Assert.True(results.All(result => result == ValidationResult.Success));
        }
コード例 #8
0
        public async Task ValidateBeer_GivenAnInvalidBreweryId_ShouldReturnAValidationResultWithExpectedErrorMessage()
        {
            //Arrange
            var guid = Guid.NewGuid();
            var beer = new Beer
            {
                BreweryId = guid
            };

            var expectedErrorMessage = "A beer must always be linked to an existing brewery";

            var mockedBrandQuery = new Mock <IBrandQuery>();

            mockedBrandQuery.Setup(query => query.GetBrewery(It.IsAny <Guid>()))
            .ReturnsAsync((Brewery)null);

            var brandValidation = new BrandValidation(mockedBrandQuery.Object);

            //Act
            var results = await brandValidation.ValidateBeer(beer);

            //Assert
            Assert.Contains(results, result => result.ErrorMessage.Equals(expectedErrorMessage));
        }