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 CreateAsync_ReturnsCreatedLunch()
        {
            var lunchId = Guid.NewGuid();

            using (var context = new MSLunchesContext(GetDbOptions("CreateAsync_ReturnsCreatedLunch")))
            {
                context.Lunches.Add(GetLunch(lunchId));
                context.SaveChanges();
            }

            var       lunch  = GetUserLunch(lunchId: lunchId);
            UserLunch result = null;

            using (var context = new MSLunchesContext(GetDbOptions("CreateAsync_ReturnsCreatedLunch")))
            {
                var classUnderTest = new UserLunchService(context);
                result = await classUnderTest.CreateAsync(lunch);
            }

            Assert.NotNull(result);
            Assert.NotEqual(Guid.Empty, result.Id);
            Assert.NotEqual(default(DateTime), result.CreatedOn);
            Assert.Equal(lunch.Approved, result.Approved);
            Assert.Equal(lunch.LunchId, result.LunchId);
            Assert.Equal(lunch.UserId, result.UserId);
        }
Ejemplo n.º 3
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_ReturnsMeals()
        {
            var meal1 = GetADefaultMeal(Guid.NewGuid());
            var meal2 = GetADefaultMeal(Guid.NewGuid());

            var dbOptions = GetDbOptions("GetAsync_ReturnsMeals");

            using (var context = new MSLunchesContext(dbOptions))
            {
                context.MealTypes.Add(GetSampleMealType());
                context.Meals.Add(meal1);
                context.Meals.Add(meal2);
                context.SaveChanges();
            }

            IEnumerable <Meal> result = null;

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

            Assert.NotNull(result);
            Assert.Contains(result, meal => Equals(meal, meal1));
            Assert.Contains(result, meal => Equals(meal, meal2));
        }
        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);
        }
Ejemplo n.º 6
0
        public async Task DeleteByIdAsync_ReturnsZero_WhenIdNotExist()
        {
            var result = 0;

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

            Assert.True(result == 0);
        }
Ejemplo n.º 7
0
        public async void UpdateAsync_ReturnsNull_WhenIdNotExist()
        {
            var lunchModified = GetADefaultLunch();

            Lunch result = null;

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

            Assert.Null(result);
        }
Ejemplo n.º 8
0
        public async void CreateAsync_ReturnsCreatedLunch()
        {
            var   lunch  = GetADefaultLunch();
            Lunch result = null;

            using (var context = new MSLunchesContext(GetDbOptions("CreateAsync_ReturnsCreatedLunch")))
            {
                var classUnderTest = new LunchService(context);
                result = await classUnderTest.CreateAsync(lunch);
            }

            Assert.NotNull(result);
            Assert.NotEqual(Guid.Empty, result.Id);
            Assert.NotEqual(default(DateTime), result.CreatedOn);
            Assert.Equal(lunch.MealId, result.MealId);
            Assert.Equal(lunch.Date, result.Date);
        }
        public async void CreateAsync_ReturnsCreatedMeal()
        {
            var  meal   = GetADefaultMeal();
            Meal result = null;

            using (var context = new MSLunchesContext(GetDbOptions("CreateAsync_ReturnsCreatedMeal")))
            {
                var classUnderTest = new MealService(context);
                result = await classUnderTest.CreateAsync(meal);
            }

            Assert.NotNull(result);
            Assert.NotEqual(Guid.Empty, result.Id);
            Assert.NotEqual(default(DateTime), result.CreatedOn);
            Assert.Equal(meal.TypeId, result.TypeId);
            Assert.Equal(meal.Name, result.Name);
        }
Ejemplo n.º 10
0
        public async Task GetByIdAsync_ReturnsNull_WhenIdNotExist()
        {
            var dbOptions = GetDbOptions("GetByIdAsync_ReturnsLunch_WhenIdExist");

            using (var context = new MSLunchesContext(dbOptions))
            {
                context.Lunches.Add(GetADefaultLunch());
                context.SaveChanges();
            }

            Lunch result = null;

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

            Assert.Null(result);
        }
        public async Task GetById_RetunsAMealType()
        {
            var mealType = GetSampleMealType(1);

            using (var context = new MSLunchesContext(GetDbOptions("GetById_RetunsAMealType")))
            {
                context.MealTypes.Add(mealType);
                context.SaveChanges();
            }

            MealType result;

            using (var context = new MSLunchesContext(GetDbOptions("GetById_RetunsAMealType")))
            {
                var classUnderTest = new MealTypeService(context);
                result = await classUnderTest.GetByIdAsync(mealType.Id);
            }

            Assert.Equal(mealType.Id, result.Id);
        }
Ejemplo n.º 12
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));
        }
Ejemplo n.º 13
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 Task DeleteByIdAsync_ThrowsNotFoundException_WhenIdNotExist()
        {
            Exception exception = null;

            using (var context = new MSLunchesContext(GetDbOptions("DeleteByIdAsync_ThrowsNotFoundException_WhenIdNotExist")))
            {
                var classUnderTest = new UserLunchService(context);
                try
                {
                    await classUnderTest.DeleteByIdAsync(Guid.NewGuid());
                }
                catch (Exception ex)
                {
                    exception = ex;
                }
            }

            var result = Assert.IsType <NotFoundException>(exception);

            Assert.False(string.IsNullOrEmpty(result.Message));
        }
        public async void UpdateAsync_ReturnsNull_WhenIdNotExist()
        {
            var       lunchModified = GetUserLunch();
            Exception exception     = null;

            using (var context = new MSLunchesContext(GetDbOptions("UpdateAsync_ReturnsNull_WhenIdNotExist")))
            {
                var classUnderTest = new UserLunchService(context);
                try
                {
                    await classUnderTest.UpdateAsync(lunchModified);
                }
                catch (Exception ex)
                {
                    exception = ex;
                }
            }

            var notFoundException = Assert.IsType <NotFoundException>(exception);

            Assert.False(string.IsNullOrEmpty(notFoundException.Message));
        }
        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);
        }
        public async Task GetByIdAsync_ReturnsMeal_WhenIdExist()
        {
            var meal = GetADefaultMeal(Guid.NewGuid());

            var dbOptions = GetDbOptions("GetByIdAsync_ReturnsMeal_WhenIdExist");

            using (var context = new MSLunchesContext(dbOptions))
            {
                context.Meals.Add(meal);
                context.SaveChanges();
            }

            Meal result = null;

            using (var context = new MSLunchesContext(dbOptions))
            {
                var classUnderTest = new MealService(context);
                result = await classUnderTest.GetByIdAsync(meal.Id);
            }

            Assert.NotNull(result);
            Assert.True(Equals(meal, result));
        }
        public async Task GetByIdAsync_ReturnsLunch_WhenIdExist()
        {
            var userLunch = GetUserLunch(Guid.NewGuid());

            var dbOptions = GetDbOptions("GetByIdAsync_ReturnsLunch_WhenIdExist");

            using (var context = new MSLunchesContext(dbOptions))
            {
                context.UserLunches.Add(userLunch);
                context.SaveChanges();
            }

            UserLunch result = null;

            using (var context = new MSLunchesContext(dbOptions))
            {
                var classUnderTest = new UserLunchService(context);
                result = await classUnderTest.GetByIdAsync(userLunch.Id);
            }

            Assert.NotNull(result);
            Assert.True(Equals(userLunch, result));
        }
        public async Task Get_ReturnsAListOfMealTypes()
        {
            var mealType1 = GetSampleMealType(1);
            var mealType2 = GetSampleMealType(2);

            using (var context = new MSLunchesContext(GetDbOptions("Get_ReturnsAListOfMealTypes")))
            {
                context.MealTypes.Add(mealType1);
                context.MealTypes.Add(mealType2);
                context.Meals.Add(GetSampleMeal(1));
                context.SaveChanges();
            }

            IEnumerable <MealType> result;

            using (var context = new MSLunchesContext(GetDbOptions("Get_ReturnsAListOfMealTypes")))
            {
                var classUnderTest = new MealTypeService(context);
                result = await classUnderTest.GetAsync();
            }

            Assert.Contains(result, a => a.Id == mealType1.Id);
            Assert.Contains(result, a => a.Id == mealType2.Id);
        }
Ejemplo n.º 20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MealService"/> class.
 /// </summary>
 /// <param name="dbContext"><see cref="MSLunchesContext"/> instance required to access database </param>
 public MealService(MSLunchesContext dbContext)
 {
     _dbContext = dbContext;
 }
Ejemplo n.º 21
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, MSLunchesContext dbContext)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseMiddleware(typeof(ErrorHandlingMiddleware));
            app.UseMiddleware(typeof(AuthorizationMiddleware));

            //Enable swagger midleware
            app.UseSwagger();

            // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), specifying the Swagger JSON endpoint.
            app.UseSwaggerUI(c =>
            {
                //Sets swagger UI route on root, "GET {baseUrl}/ "
                c.RoutePrefix = string.Empty;
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApiCoreMSLunches V1");
            });

            //TODO : Add a list of supported origins on a config
            app.UseCors("AllowAllOrigins");
            app.UseAuthentication();
            app.UseMvc();
            DatabaseMSLunches.Initialize(dbContext);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="UserLunchService"/> class.
 /// </summary>
 /// <param name="dbContext"><see cref="MSLunchesContext"/> instance required to access database </param>
 public UserLunchService(MSLunchesContext dbContext)
 {
     _dbContext = dbContext;
 }