示例#1
0
        /// <summary>
        /// Deletes specified record of brewery
        /// </summary>
        /// <param name="id">Id of record</param>
        /// <returns>Bool</returns>
        public async Task <bool> DeleteAsync(int?id)
        {
            try
            {
                var brewery = await _context.Breweries.Include(b => b.Beers).FirstAsync(b => b.ID == id)
                              ?? throw new ArgumentNullException("Brewery not found.");

                brewery.IsDeleted = true;
                brewery.DeletedOn = brewery.ModifiedOn = DateTime.UtcNow;

                foreach (var beer in brewery.Beers)
                {
                    var newBeerService = new BeerService(this._context);
                    await newBeerService.DeleteAsync(beer.ID);
                }
                _context.Breweries.Update(brewery);
                _context.SaveChanges();

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        public void GetAllUsersShould_ReturnCorrectUser()
        {
            //Arrange
            var options = InMemory.GetOptions("GetAllUsersShould_ReturnCorrectUser");

            using (var context = new BOContext(options))
            {
                var cut = new User()
                {
                    Id          = 1,
                    Name        = "SuperMan",
                    Password    = "******",
                    ReviewList  = new List <Review>(),
                    CommentList = new List <Comment>(),
                    DrankLists  = new List <DrankList>(),
                    WishLists   = new List <WishList>(),
                };
                context.Users.Add(cut);
                context.SaveChanges();
            }
            using (var context = new BOContext(options))
            {
                //Act
                var sut    = new UsersService(context);
                var result = sut.GetAllUsers().Result.ToList();
                //Assert
                Assert.AreEqual(result.Count, 1);
                Assert.AreEqual(result[0].Name, "SuperMan");
            }
        }
        public void DeleteUserShould_ReturnFalse_whenNotDeletedUser()
        {
            //Arrange
            var options = InMemory.GetOptions("DeleteUserShould_ReturnFalse_whenNotDeletedUser");

            using (var context = new BOContext(options))
            {
                var cut = new User()
                {
                    Id       = 1,
                    Name     = "SuperMan",
                    Password = "******",
                };

                context.Users.Add(cut);
                context.SaveChanges();
            }

            using (var context = new BOContext(options))
            {
                //Act
                var sut    = new UsersService(context);
                var result = sut.DeleteUser(55).Result;
                //Assert
                var deletedUsers = context.Users.Where(u => u.IsDeleted == true).Count();
                var activeUsers  = context.Users.Where(u => u.IsDeleted == false).Count();
                Assert.IsFalse(result);
                Assert.AreEqual(0, deletedUsers);
                Assert.AreEqual(1, activeUsers);
            }
        }
        public void RateShould_WriteRating_WhenValid()
        {
            //Arrange
            var options = InMemory.GetOptions("RateShould_WriteRating_WhenValid");

            using (var context = new BOContext(options))
            {
                var user = new User()
                {
                    Id       = 1,
                    IDOld    = 1,
                    Name     = "SuperMan",
                    Password = "******",
                };

                var beer = new Beer()
                {
                    ID      = 1,
                    ABV     = 4.5f,
                    Name    = "Carlsberg",
                    Country = new Country()
                    {
                        Name = "Germany"
                    },
                    Style = new BeerStyle()
                    {
                        Name = "Ale"
                    }
                };

                context.Users.Add(user);
                context.Beers.Add(beer);
                context.SaveChanges();
            }

            using (var context = new BOContext(options))
            {
                //Act
                var sut               = new UsersService(context);
                var result            = sut.Rate(1, 1, 5).Result;
                var beerWithNewRating = context.Beers.Find(1);
                //Assert
                Assert.AreEqual(5, beerWithNewRating.Rating);
            }
        }
        public void UpdateUserAsyncShould_ReturnCorrectUser()
        {
            //Arrange
            var options = InMemory.GetOptions("UpdateUserAsyncShould_ReturnCorrectUser");

            using (var context = new BOContext(options))
            {
                var cut = new User()
                {
                    Id          = 1,
                    Name        = "SuperMan",
                    Password    = "******",
                    ReviewList  = new List <Review>(),
                    CommentList = new List <Comment>(),
                    DrankLists  = new List <DrankList>(),
                    WishLists   = new List <WishList>(),
                };
                context.Users.Add(cut);
                context.SaveChanges();
            }
            var updatedUser = new UserDTO()
            {
                Name     = "Batman",
                Password = "******",
            };

            using (var context = new BOContext(options))
            {
                //Act
                var sut    = new UsersService(context);
                var result = sut.UpdateUserAsync(1, updatedUser).Result;
                //Assert
                Assert.AreEqual(updatedUser.Name, result.Name);
                Assert.AreEqual(updatedUser.Password, result.Password);
                //Assert.IsNotNull(result.ModifiedOn);
            }
        }