/// <inheritdoc />
        public async Task <UserLunch> CreateAsync(UserLunch userLunch)
        {
            //Pre processing
            userLunch.Id        = Guid.NewGuid();
            userLunch.CreatedOn = DateTime.Now;

            //Pre Conditions
            var lastLunch = await _dbContext.UserLunches.FirstOrDefaultAsync(a => a.LunchId == userLunch.LunchId && a.UserId == userLunch.UserId);

            if (lastLunch != null)
            {
                throw new ValidationException("User Lunch already exists");
            }

            var requestedLunch = await _dbContext.Lunches.FirstOrDefaultAsync(a => a.Id == userLunch.LunchId);

            if (requestedLunch == null)
            {
                throw new NotFoundException($"Lunch with id {userLunch.LunchId} does not exist");
            }

            ValidateExpiration(requestedLunch);

            //Actual Action
            await _dbContext.UserLunches.AddAsync(userLunch);

            await _dbContext.SaveChangesAsync();

            return(userLunch);
        }
        public async Task <Lunch> CreateAsync(Lunch lunch)
        {
            lunch.CreatedOn = DateTime.Now;
            _dbContext.Lunches
            .Add(lunch);
            await _dbContext.SaveChangesAsync();

            return(lunch);
        }
Esempio n. 3
0
        /// <inheritdoc />
        public async Task <Meal> CreateAsync(Meal meal)
        {
            // Fill needed data
            meal.Id        = Guid.NewGuid();
            meal.CreatedOn = DateTime.Now;

            // Add and save
            var result = _dbContext.Meals.Add(meal);
            await _dbContext.SaveChangesAsync();

            return(result.Entity);
        }
Esempio n. 4
0
        public async void UpdateAsync_ReturnsLunchModified_WhenIdExist()
        {
            var lunch         = GetADefaultLunch();
            var lunchModified = new Lunch
            {
                Id        = lunch.Id,
                Date      = DateTime.Today.AddDays(-1),
                MealId    = Guid.NewGuid(),
                UpdatedBy = "updater"
            };

            using (var context = new MSLunchesContext(GetDbOptions("UpdateAsync_ReturnsLunchModified_WhenIdExist")))
            {
                await context.Lunches.AddAsync(lunch);

                await context.SaveChangesAsync();
            }

            Lunch result = null;

            using (var context = new MSLunchesContext(GetDbOptions("UpdateAsync_ReturnsLunchModified_WhenIdExist")))
            {
                var classUnderTest = new LunchService(context);
                result = await classUnderTest.UpdateAsync(lunchModified);
            }

            Assert.NotNull(result);
            Assert.Equal(lunchModified.Id, result.Id);
            Assert.NotEqual(lunchModified.UpdatedOn, result.UpdatedOn);
            Assert.Equal(lunchModified.UpdatedBy, result.UpdatedBy);
            Assert.Equal(lunchModified.MealId, result.MealId);
            Assert.Equal(lunchModified.Date, result.Date);
        }
        public async Task GetAsync_ReturnsUserLunches()
        {
            var userId     = "09123091823";
            var userLunch1 = GetUserLunch(Guid.NewGuid(), Guid.NewGuid(), userId);
            var userLunch2 = GetUserLunch(Guid.NewGuid(), Guid.NewGuid(), userId);
            var userLunch3 = GetUserLunch();

            var dbOptions = GetDbOptions("GetAsync_ReturnsLunches");

            using (var context = new MSLunchesContext(dbOptions))
            {
                await context.UserLunches.AddAsync(userLunch1);

                await context.UserLunches.AddAsync(userLunch2);

                await context.UserLunches.AddAsync(userLunch3);

                await context.SaveChangesAsync();
            }

            IEnumerable <UserLunch> result = null;

            using (var context = new MSLunchesContext(dbOptions))
            {
                var classUnderTest = new UserLunchService(context);
                result = await classUnderTest.GetAsync(userId);
            }

            Assert.NotNull(result);
            Assert.Contains(result, lunch => Equals(lunch, userLunch1));
            Assert.Contains(result, lunch => Equals(lunch, userLunch2));
            Assert.DoesNotContain(result, lunch => Equals(lunch, userLunch3));
        }
        public async void UpdateAsync_ReturnsMealModified_WhenIdExist()
        {
            var meal         = GetADefaultMeal();
            var mealModified = new Meal
            {
                Id        = meal.Id,
                Name      = "newName",
                TypeId    = meal.TypeId + 1,
                UpdatedBy = "updater"
            };

            using (var context = new MSLunchesContext(GetDbOptions("UpdateAsync_ReturnsMealModified_WhenIdExist")))
            {
                await context.Meals.AddAsync(meal);

                await context.SaveChangesAsync();
            }

            Meal result = null;

            using (var context = new MSLunchesContext(GetDbOptions("UpdateAsync_ReturnsMealModified_WhenIdExist")))
            {
                var classUnderTest = new MealService(context);
                result = await classUnderTest.UpdateAsync(mealModified);
            }

            Assert.NotNull(result);
            Assert.Equal(mealModified.Id, result.Id);
            Assert.NotEqual(mealModified.UpdatedOn, result.UpdatedOn);
            Assert.Equal(mealModified.UpdatedBy, result.UpdatedBy);
            Assert.Equal(mealModified.TypeId, result.TypeId);
            Assert.Equal(mealModified.Name, result.Name);
        }
Esempio n. 7
0
        public async Task GetAsync_ReturnsLunches()
        {
            var mealType = new MealType
            {
                Id           = 1,
                Description  = "desc",
                IsSelectable = true
            };

            var meal = GetADefaultMeal(Guid.NewGuid(), mealType.Id);

            var lunch1 = GetADefaultLunch(Guid.NewGuid(), meal.Id);
            var lunch2 = GetADefaultLunch(Guid.NewGuid(), meal.Id);

            var dbOptions = GetDbOptions("GetAsync_ReturnsLunches");

            using (var context = new MSLunchesContext(dbOptions))
            {
                await context.MealTypes.AddAsync(mealType);

                await context.Meals.AddAsync(meal);

                await context.Lunches.AddAsync(lunch1);

                await context.Lunches.AddAsync(lunch2);

                await context.SaveChangesAsync();
            }

            IEnumerable <Lunch> result = null;

            using (var context = new MSLunchesContext(dbOptions))
            {
                var classUnderTest = new LunchService(context);
                result = await classUnderTest.GetAsync();
            }

            Assert.NotNull(result);
            Assert.Contains(result, lunch => Equals(lunch, lunch1));
            Assert.Contains(result, lunch => Equals(lunch, lunch2));
        }
Esempio n. 8
0
        public async Task DeleteByIdAsync_ReturnsCountOfChanges_WhenIdExist()
        {
            var lunch = GetADefaultLunch();

            using (var context = new MSLunchesContext(GetDbOptions("DeleteByIdAsync_ReturnsCountOfChanges_WhenIdExist")))
            {
                await context.Lunches.AddAsync(lunch);

                await context.SaveChangesAsync();
            }

            var result = 0;

            using (var context = new MSLunchesContext(GetDbOptions("DeleteByIdAsync_ReturnsCountOfChanges_WhenIdExist")))
            {
                var classUnderTest = new LunchService(context);
                result = await classUnderTest.DeleteByIdAsync(lunch.Id);
            }

            Assert.True(result > 0);
        }
        public async void UpdateAsync_ReturnsLunchModified_WhenIdExist()
        {
            var lunchId           = Guid.NewGuid();
            var userLunch         = GetUserLunch();
            var userLunchModified = new UserLunch
            {
                Id        = userLunch.Id,
                Approved  = !userLunch.Approved,
                LunchId   = lunchId,
                UserId    = "newUserId1",
                UpdatedBy = "updater"
            };

            using (var context = new MSLunchesContext(GetDbOptions("UpdateAsync_ReturnsLunchModified_WhenIdExist")))
            {
                await context.Lunches.AddAsync(GetLunch(lunchId));

                await context.UserLunches.AddAsync(userLunch);

                await context.SaveChangesAsync();
            }

            UserLunch result = null;

            using (var context = new MSLunchesContext(GetDbOptions("UpdateAsync_ReturnsLunchModified_WhenIdExist")))
            {
                var classUnderTest = new UserLunchService(context);
                result = await classUnderTest.UpdateAsync(userLunchModified);
            }

            Assert.NotNull(result);
            Assert.Equal(userLunchModified.Id, result.Id);
            Assert.NotEqual(userLunchModified.UpdatedOn, result.UpdatedOn);
            Assert.Equal(userLunchModified.UpdatedBy, result.UpdatedBy);
            Assert.Equal(userLunchModified.Approved, result.Approved);
            Assert.Equal(userLunchModified.UserId, result.UserId);
            Assert.Equal(userLunchModified.LunchId, result.LunchId);
        }