/// <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); }
/// <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); }
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); }
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)); }
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); }