Esempio n. 1
0
        public void Update_beer_quantity_without_error()
        {
            Mock <Beer> beerMock = new Mock <Beer>();

            beerMock.SetupGet(x => x.Id).Returns(1);
            beerMock.SetupGet(x => x.Name).Returns(BeerName.Create("Leffe blonde").Value);

            Mock <BeerProvider> beerProviderMock = new Mock <BeerProvider>();

            beerProviderMock.SetupGet(x => x.Beer).Returns(beerMock.Object);
            beerProviderMock.SetupGet(x => x.BeerProviderQuantity).Returns(BeerProviderQuantity.Create(10).Value);

            Mock <Provider> providerMock = new Mock <Provider>();

            providerMock.SetupGet(x => x.BeerProviders).Returns(new List <BeerProvider>()
            {
                beerProviderMock.Object
            });

            Result <BeerProvider> beerProviderResult =
                providerMock.Object.UpdateBeerQuantity(beerMock.Object, BeerProviderQuantity.Create(20).Value);

            beerProviderResult.IsFailure.ShouldBeFalse();

            beerProviderResult.Value.BeerProviderQuantity.Value.ShouldBeEqualTo(20);
        }
Esempio n. 2
0
        public IActionResult Create([FromBody] CreateBeerDto beer)
        {
            Brewery brewery = breweryRepository.GetById(beer.BreweryId);

            if (brewery == null)
            {
                return(BadRequest($"Brewery with id {beer.BreweryId} does not exists"));
            }

            Result <BeerName>          beerNameResult          = BeerName.Create(beer.Name);
            Result <BeerPrice>         beerPriceResult         = BeerPrice.Create(beer.Price);
            Result <BeerAlcoholDegree> beerAlcoholDegreeResult = BeerAlcoholDegree.Create(beer.AlcoholDegree);
            Result result = Result.Combine(beerNameResult, beerPriceResult, beerAlcoholDegreeResult);

            if (result.IsFailure)
            {
                return(BadRequest(beerNameResult.Error));
            }

            Result <Brewery> breweryResult = brewery.AddBeer(beerNameResult.Value, beerPriceResult.Value, beerAlcoholDegreeResult.Value);

            if (breweryResult.IsFailure)
            {
                return(BadRequest(breweryResult.Error));
            }

            return(Ok(breweryResult.Value));
        }
Esempio n. 3
0
        public void Create_beer_name_with_too_long_string_value_should_return_an_error()
        {
            Result <BeerName> beerNameResult = BeerName.Create("Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe-Leffe");

            beerNameResult.IsFailure.ShouldBeTrue();

            beerNameResult.Error.ShouldNotBeEmpty();
        }
Esempio n. 4
0
        public void Create_beer_with_null_beer_brewery_should_raise_an_exception()
        {
            var brewery = new Brewery(BreweryName.Create("Abbaye de Leffe").Value);

            var beer = new Beer(BeerName.Create("Leffe Blonde").Value,
                                BeerPrice.Create(2.55m).Value,
                                BeerAlcoholDegree.Create(5.5m).Value,
                                null);
        }
Esempio n. 5
0
        public void Create_beer_name_without_error()
        {
            Result <BeerName> beerNameResult = BeerName.Create("Leffe");

            beerNameResult.IsFailure.ShouldBeFalse();

            BeerName beerName = beerNameResult.Value;

            beerName.Value.ShouldBeEqualTo("Leffe");
        }
Esempio n. 6
0
        public void Add_beer_without_error()
        {
            var brewery = new Brewery(BreweryName.Create("Abbaye de Leffe").Value);

            Result <Brewery> breweryResult = brewery.AddBeer(BeerName.Create("Leffe Blonde").Value,
                                                             BeerPrice.Create(2.55m).Value,
                                                             BeerAlcoholDegree.Create(5.5m).Value);

            breweryResult.IsFailure.ShouldBeFalse();
        }
Esempio n. 7
0
        public Result <Brewery> AddBeer(BeerName beerName, BeerPrice beerPrice, BeerAlcoholDegree beerAlcoholDegree)
        {
            if (beers.Any(x => x.Name == beerName))
            {
                return(Result.Failure <Brewery>($"Beer {beerName.Value} with same name already exists in this brewery"));
            }

            beers.Add(new Beer(beerName, beerPrice, beerAlcoholDegree, this));

            return(Result.Ok(this));
        }
Esempio n. 8
0
        public void Create_beer_without_error()
        {
            var brewery = new Brewery(BreweryName.Create("Abbaye de Leffe").Value);

            var beer = new Beer(BeerName.Create("Leffe Blonde").Value,
                                BeerPrice.Create(2.55m).Value,
                                BeerAlcoholDegree.Create(5.5m).Value,
                                brewery);

            beer.ShouldNotBeNull();
        }
Esempio n. 9
0
        public void Create_beer_provider_with_null_beer_provider_quantity_should_raise_an_exception()
        {
            var brewery = new Brewery(BreweryName.Create("Abbaye de Leffe").Value);

            var beer = new Beer(BeerName.Create("Leffe Blonde").Value,
                                BeerPrice.Create(2.55m).Value,
                                BeerAlcoholDegree.Create(5.5m).Value,
                                brewery);

            var provider     = new Provider(ProviderName.Create("GeneDrinks").Value);
            var beerProvider = new BeerProvider(null, beer, provider);
        }
Esempio n. 10
0
        public void Add_beer_that_already_exists_should_return_an_error()
        {
            var brewery = new Brewery(BreweryName.Create("Abbaye de Leffe").Value);

            brewery.AddBeer(BeerName.Create("Leffe Blonde").Value,
                            BeerPrice.Create(2.55m).Value,
                            BeerAlcoholDegree.Create(5.5m).Value);

            Result <Brewery> breweryResult = brewery.AddBeer(BeerName.Create("Leffe Blonde").Value,
                                                             BeerPrice.Create(2.55m).Value,
                                                             BeerAlcoholDegree.Create(5.5m).Value);

            breweryResult.IsFailure.ShouldBeTrue();
        }
Esempio n. 11
0
        public void Create_beer_provider_without_error()
        {
            var brewery = new Brewery(BreweryName.Create("Abbaye de Leffe").Value);

            var beer = new Beer(BeerName.Create("Leffe Blonde").Value,
                                BeerPrice.Create(2.55m).Value,
                                BeerAlcoholDegree.Create(5.5m).Value,
                                brewery);

            var provider = new Provider(ProviderName.Create("GeneDrinks").Value);

            BeerProvider beerProvider = new BeerProvider(BeerProviderQuantity.Create(10).Value, beer, provider);

            beerProvider.ShouldNotBeNull();
        }
Esempio n. 12
0
        public void Add_beer_without_error()
        {
            var provider = new Provider(ProviderName.Create("GeneDrinks").Value);

            var brewery = new Brewery(BreweryName.Create("Abbaye de Leffe").Value);

            var beer = new Beer(BeerName.Create("Leffe Blonde").Value,
                                BeerPrice.Create(2.55m).Value,
                                BeerAlcoholDegree.Create(5.5m).Value,
                                brewery);

            Result <Provider> providerResult = provider.ProvideBeer(beer, BeerProviderQuantity.Create(10).Value);

            providerResult.IsFailure.ShouldBeFalse();
        }
Esempio n. 13
0
        public void Add_beer_that_already_exists_should_return_an_error()
        {
            Mock <Beer> beerMock = new Mock <Beer>();

            beerMock.SetupGet(x => x.Id).Returns(1);
            beerMock.SetupGet(x => x.Name).Returns(BeerName.Create("Leffe blonde").Value);

            Mock <BeerProvider> beerProviderMock = new Mock <BeerProvider>();

            beerProviderMock.SetupGet(x => x.Beer).Returns(beerMock.Object);

            Mock <Provider> providerMock = new Mock <Provider>();

            providerMock.SetupGet(x => x.BeerProviders).Returns(new List <BeerProvider>()
            {
                beerProviderMock.Object
            });

            Result <Provider> providerResult = providerMock.Object.ProvideBeer(beerMock.Object, BeerProviderQuantity.Create(10).Value);

            providerResult.IsFailure.ShouldBeTrue();
        }
Esempio n. 14
0
 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
     modelBuilder.Entity <Beer>(x =>
     {
         x.ToTable("Beer").HasKey(k => k.Id);
         x.Property(p => p.Id).HasColumnName("Id");
         x.Property(p => p.Name)
         .HasConversion(p => p.Value, p => BeerName.Create(p).Value);
         x.Property(p => p.Price)
         .HasConversion(p => p.Value, p => BeerPrice.Create(p).Value);
         x.Property(p => p.AlcoholDegree)
         .HasConversion(p => p.Value, p => BeerAlcoholDegree.Create(p).Value);
         x.HasOne(p => p.Brewery).WithMany(p => p.Beers);
     });
     modelBuilder.Entity <Provider>(x =>
     {
         x.ToTable("Provider").HasKey(k => k.Id);
         x.Property(p => p.Id).HasColumnName("Id");
         x.Property(p => p.Name)
         .HasConversion(p => p.Value, p => ProviderName.Create(p).Value);
     });
     modelBuilder.Entity <BeerProvider>(x =>
     {
         x.ToTable("BeerProvider").HasKey(k => k.Id);
         x.Property(p => p.Id).HasColumnName("Id");
         x.Property(p => p.BeerProviderQuantity)
         .HasConversion(p => p.Value, p => BeerProviderQuantity.Create(p).Value).HasColumnName("AvailableQuantity");
         x.HasOne(bp => bp.Beer).WithMany(b => b.BeerProviders);
         x.HasOne(bp => bp.Provider).WithMany(p => p.BeerProviders);
     });
     modelBuilder.Entity <Brewery>(x =>
     {
         x.ToTable("Brewery").HasKey(k => k.Id);
         x.Property(p => p.Id).HasColumnName("Id");
         x.Property(p => p.Name)
         .HasConversion(p => p.Value, p => BreweryName.Create(p).Value);
     });
 }
Esempio n. 15
0
        public void Update_beer_quantity_with_beer_that_does_not_exists_for_this_provider_should_return_an_error()
        {
            Mock <Beer> beerMock = new Mock <Beer>();

            beerMock.SetupGet(x => x.Id).Returns(1);
            beerMock.SetupGet(x => x.Name).Returns(BeerName.Create("Leffe blonde").Value);

            Mock <BeerProvider> beerProviderMock = new Mock <BeerProvider>();

            beerProviderMock.SetupGet(x => x.Beer).Returns(beerMock.Object);
            beerProviderMock.SetupGet(x => x.BeerProviderQuantity).Returns(BeerProviderQuantity.Create(10).Value);

            Mock <Provider> providerMock = new Mock <Provider>();

            providerMock.SetupGet(x => x.BeerProviders).Returns(new List <BeerProvider>());

            Result <BeerProvider> beerProviderResult =
                providerMock.Object.UpdateBeerQuantity(beerMock.Object, BeerProviderQuantity.Create(20).Value);

            beerProviderResult.IsFailure.ShouldBeTrue();

            beerProviderResult.Error.ShouldNotBeEmpty();
        }