public async Task UpdateAsync_ShouldChangeNameOfStyleAndDescriptionAsync()
        {
            //Arrange
            var options = InMemory.GetOptions("UpdateAsync_ShouldChangeNameOfStyleAndDescriptionAsync");

            using (var context = new BOContext(options))
            {
                var style = new BeerStyle()
                {
                    Name        = "Ale",
                    Description = "This description"
                };
                context.BeerStyles.Add(style);
                await context.SaveChangesAsync();
            }

            using (var context = new BOContext(options))
            {
                var styleDTO = new BeerStyleDTO()
                {
                    Name        = "Ale2",
                    Description = "This description2"
                };
                //Act
                var sut = new BeerStylesService(context);
                await sut.UpdateAsync(1, styleDTO);

                var dbresult = await context.BeerStyles.FindAsync(1);

                //Assert
                Assert.AreEqual(dbresult.Name, "Ale2");
                Assert.AreEqual(dbresult.Description, "This description2");
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Updates the Style's Name and Description
        /// </summary>
        /// <param name="id">ID of the Style to be updated.</param>
        /// <param name="model">Input object with update information.</param>
        /// <returns>Returns the reevaluated input object</returns>
        public async Task <BeerStyleDTO> UpdateAsync(int?id, BeerStyleDTO model)
        {
            var beerStyle = await this._context.BeerStyles.FindAsync(id);

            if (beerStyle == null)
            {
                return(null);
            }
            beerStyle.Name        = model.Name;
            beerStyle.Description = model.Description;
            beerStyle.ModifiedOn  = DateTime.UtcNow;
            model.ID = id;

            this._context.Update(beerStyle);
            try
            {
                await this._context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!BeerStyleExists(id))
                {
                    return(null);
                }
            }
            return(model);
        }
        public async Task CreateAsync_ShouldReturnModifiedBeerStyleDTOAsync()
        {
            //Arrange
            var options = InMemory.GetOptions("CreateAsync_ShouldReturnModifiedBeerStyleDTOAsync");

            using (var context = new BOContext(options))
            {
            }

            using (var context = new BOContext(options))
            {
                var styleDTO = new BeerStyleDTO()
                {
                    Name        = "Ale",
                    Description = "This description"
                };
                //Act
                var sut    = new BeerStylesService(context);
                var result = await sut.CreateAsync(styleDTO);

                var dbresult = await context.BeerStyles.FirstOrDefaultAsync(c => c.Name == "Ale");

                //Assert
                Assert.AreEqual(result.ID, dbresult.ID);
                Assert.AreEqual(result.Name, dbresult.Name);
            }
        }
        public void MapDTOToStyle_ShouldReturnBeerStyle()
        {
            //Arrange
            var cut = new BeerStyleDTO();
            //Act
            var sut = cut.MapDTOToStyle();

            //Assert
            Assert.IsInstanceOfType(sut, typeof(BeerStyle));
        }
        public void MapDTOToStyle_ShouldReturnCorrectID()
        {
            //Arrange
            var cut = new BeerStyleDTO()
            {
                ID = 1
            };
            //Act
            var sut = cut.MapDTOToStyle();

            //Assert
            Assert.AreEqual(sut.ID, 1);
        }
        public async Task <IActionResult> PostAsync([FromBody] BeerStyleDTO model)
        {
            if (model == null)
            {
                return(BadRequest());
            }

            var theNewStyle = await this._service.CreateAsync(model);

            if (theNewStyle.ID == default)
            {
                return(BadRequest());
            }
            return(Created("Post", theNewStyle));
        }
        public async Task <IActionResult> PutAsync(int id, BeerStyleDTO model)
        {
            if (id <= 0 || model == null)
            {
                return(BadRequest());
            }

            var returnModel = await this._service.UpdateAsync(id, model);

            if (returnModel == null)
            {
                return(NotFound());
            }
            return(Ok(returnModel));
        }
        public void MapDTOToStyle_ShouldReturnCorrectNameAndDescription()
        {
            //Arrange
            var cut = new BeerStyleDTO()
            {
                Name        = "Ale",
                Description = "This Description"
            };
            //Act
            var sut = cut.MapDTOToStyle();

            //Assert
            Assert.AreEqual(sut.Name, "Ale");
            Assert.AreEqual(sut.Description, "This Description");
        }
Exemplo n.º 9
0
        /// <summary>
        /// Creates a style and writes it to the database.
        /// </summary>
        /// <param name="model">Input BeerStyleDTO object</param>
        /// <returns>Returns the re-evaluated input object</returns>
        public async Task <BeerStyleDTO> CreateAsync(BeerStyleDTO model)
        {
            var beerStyle = model.MapDTOToStyle();

            if (beerStyle.Name == null)
            {
                return(null);
            }
            #region Check if exists
            var theStyle = this._context.BeerStyles
                           .FirstOrDefault(b => b.Name == model.Name);

            if (theStyle == null)
            {
                beerStyle.CreatedOn = DateTime.UtcNow;
                await this._context.BeerStyles.AddAsync(beerStyle);

                await this._context.SaveChangesAsync();
            }
            else
            {
                theStyle.IsDeleted  = false;
                theStyle.DeletedOn  = null;
                theStyle.ModifiedOn = DateTime.UtcNow;
                _context.BeerStyles.Update(theStyle);
                var beersOfBeerStyle = await _context.Beers
                                       .Include(b => b.Country)
                                       .Include(b => b.Brewery)
                                       .Include(b => b.Style)
                                       .Include(b => b.Reviews)
                                       .Where(b => b.StyleID == theStyle.ID).
                                       Where(b => b.Brewery.IsDeleted == false).ToListAsync();

                foreach (var item in beersOfBeerStyle)
                {
                    await new BeerService(_context).CreateAsync(item.MapBeerToDTO());
                }
                await this._context.SaveChangesAsync();
            }
            #endregion
            var returnModel = await this._context.BeerStyles
                              .FirstOrDefaultAsync(b => b.Name == model.Name);

            model.ID = returnModel.ID;
            return(model);
        }
Exemplo n.º 10
0
 public static BeerStyle MapDTOToStyle(this BeerStyleDTO dto)
 {
     try
     {
         var style = new BeerStyle()
         {
             ID          = dto.ID,
             Name        = dto.Name,
             Description = dto.Description
         };
         return(style);
     }
     catch (Exception)
     {
         return(new BeerStyle());
     }
 }
Exemplo n.º 11
0
 public static BeerStyleDTO MapViewToDTO(this BeerStyleViewModel style)
 {
     try
     {
         //TODO: Test with actual list of brewery
         var styleDTO = new BeerStyleDTO()
         {
             ID          = style.ID == 0? 0:style.ID,
             Name        = style.Name,
             Description = style.Description
         };
         return(styleDTO);
     }
     catch (Exception)
     {
         return(new BeerStyleDTO());
     }
 }
Exemplo n.º 12
0
 public static BeerStyleViewModel MapDTOToView(this BeerStyleDTO styleDTO)
 {
     try
     {
         //TODO: Test with actual list of brewery
         var style = new BeerStyleViewModel()
         {
             ID          = styleDTO.ID,
             Name        = styleDTO.Name,
             Description = styleDTO.Description
         };
         return(style);
     }
     catch (Exception)
     {
         return(new BeerStyleViewModel());
     }
 }
        public async Task CreateAsync_ShouldUndeleteStyleRecordIfExist()
        {
            //Arrange
            var options = InMemory.GetOptions("CreateAsync_ShouldUndeleteStyleRecordIfExist");

            using (var context = new BOContext(options))
            {
                var style = new BeerStyle()
                {
                    Name        = "Ale",
                    Description = "This description",
                    DeletedOn   = DateTime.UtcNow,
                    IsDeleted   = true
                };
                context.BeerStyles.Add(style);
                await context.SaveChangesAsync();
            }

            using (var context = new BOContext(options))
            {
                var styleDTO = new BeerStyleDTO()
                {
                    Name        = "Ale",
                    Description = "This description"
                };
                //Act
                var sut = new BeerStylesService(context);
                await sut.CreateAsync(styleDTO);

                var dbresult = await context.BeerStyles.FirstOrDefaultAsync(c => c.Name == "Ale");

                //Assert
                Assert.AreEqual(dbresult.Name, "Ale");
                Assert.AreEqual(dbresult.DeletedOn, null);
                Assert.AreEqual(dbresult.IsDeleted, false);
            }
        }
        public async Task UpdateAsync_ShouldReturnNullIfStyleNonExistantAsync()
        {
            //Arrange
            var options = InMemory.GetOptions("UpdateAsync_ShouldReturnNullIfStyleNonExistantAsync");

            using (var context = new BOContext(options))
            {
            }

            using (var context = new BOContext(options))
            {
                var styleDTO = new BeerStyleDTO()
                {
                    Name        = "Ale",
                    Description = "This description"
                };
                //Act
                var sut    = new BeerStylesService(context);
                var result = await sut.UpdateAsync(1, styleDTO);

                //Assert
                Assert.AreEqual(result, null);
            }
        }
        public async Task CreateAsync_ShouldReturnBeerStyleDTOAsync()
        {
            //Arrange
            var options = InMemory.GetOptions("CreateAsync_ShouldReturnBeerStyleDTOAsync");

            using (var context = new BOContext(options))
            {
            }

            using (var context = new BOContext(options))
            {
                var styleDTO = new BeerStyleDTO()
                {
                    Name        = "Ale",
                    Description = "This description"
                };
                //Act
                var sut    = new BeerStylesService(context);
                var result = await sut.CreateAsync(styleDTO);

                //Assert
                Assert.IsInstanceOfType(result, typeof(BeerStyleDTO));
            }
        }
        public async Task CreateAsync_ShouldUndeleteBeerRecordIfExist()
        {
            //Arrange
            var options = InMemory.GetOptions("CreateAsync_ShouldUndeleteBeerRecordIfExist");

            using (var context = new BOContext(options))
            {
                var country = new Country()
                {
                    Name      = "Bulgaria",
                    Breweries = new List <Brewery>()
                    {
                        new Brewery()
                        {
                            Name = "Brewery",
                        }
                    }
                };
                context.Countries.Add(country);
                await context.SaveChangesAsync();

                var beer = new Beer()
                {
                    Name      = "Carlsberg",
                    ABV       = 5,
                    Country   = await context.Countries.FirstOrDefaultAsync(c => c.Name == "Bulgaria"),
                    Brewery   = await context.Breweries.FirstOrDefaultAsync(b => b.Name == "Brewery"),
                    DeletedOn = DateTime.UtcNow,
                    IsDeleted = true,
                    Style     = new BeerStyle()
                    {
                        Name        = "Ale",
                        Description = "Some description",
                        DeletedOn   = DateTime.UtcNow,
                        IsDeleted   = true
                    },
                    Rating = 5
                };
                context.Beers.Add(beer);
                await context.SaveChangesAsync();
            }

            using (var context = new BOContext(options))
            {
                var styleDTO = new BeerStyleDTO()
                {
                    Name        = "Ale",
                    Description = "This description"
                };
                //Act
                var sut = new BeerStylesService(context);
                await sut.CreateAsync(styleDTO);

                var dbresult = await context.BeerStyles.FirstOrDefaultAsync(c => c.Name == "Ale");

                var dbBeerResult = await context.Beers.FirstOrDefaultAsync(b => b.StyleID == dbresult.ID);

                //Assert
                Assert.AreEqual(dbresult.Name, "Ale");
                Assert.AreEqual(dbresult.DeletedOn, null);
                Assert.AreEqual(dbresult.IsDeleted, false);
                Assert.AreEqual(dbBeerResult.Name, "Carlsberg");
                Assert.AreEqual(dbBeerResult.DeletedOn, null);
                Assert.AreEqual(dbBeerResult.IsDeleted, false);
            }
        }