Exemple #1
0
        public async Task AddKitchenIngredient_ValidKitchenIngredient_ReturnsOkAndNewKitchenIngredient()
        {
            KitchenUser kitchenUser   = _userManager.TestUser.KitchenUser.FirstOrDefault();
            Ingredient  newIngredient = InMemoryDataGenerator.AddNewRandomIngredient(_context, _userManager.TestUser);

            if (kitchenUser == null || newIngredient == null)
            {
                throw new Exception("not setup for testing");
            }

            KitchenIngredientDto kitchenIngredient = new KitchenIngredientDto()
            {
                KitchenId            = kitchenUser.Kitchen.KitchenId,
                IngredientId         = newIngredient.IngredientId,
                AddedByKitchenUserId = kitchenUser.KitchenUserId
            };

            ActionResult <KitchenIngredientDto> actualResult = await _controller.AddKitchenIngredientAsync(kitchenIngredient);

            Assert.IsType <OkObjectResult>(actualResult.Result);

            var actualIngredientsInKitchen = (actualResult.Result as OkObjectResult).Value;

            Assert.IsType <KitchenIngredientDto>(actualIngredientsInKitchen);
        }
        public void DeleteKitchenUserByKitchenUserId_ValidKitchenUser_ReturnsDeletedUser()
        {
            KitchenUser myKitchenUser = _testUser.KitchenUser.Where(u => u.IsOwner).FirstOrDefault();

            if (myKitchenUser == null)
            {
                throw new Exception("kKitchenUser is not setup for testing");
            }

            var newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, myKitchenUser.Kitchen, _testUser);
            _kitchenUserService.AcceptInviteToKitchenByKitchenId(myKitchenUser.KitchenId, newUser);


            KitchenUser expectedUserToDelete = myKitchenUser.Kitchen.KitchenUser.Where(u => u.UserId == newUser.Id).FirstOrDefault();

            if (expectedUserToDelete == null)
            {
                throw new Exception("expectedUserToDelete is not setup for testing");
            }

            KitchenUser actualDeletedUser = _kitchenUserService.OwnerDeleteKitchenUserByKitchenUserId(expectedUserToDelete.KitchenUserId, _testUser);

            Assert.Equal(expectedUserToDelete, actualDeletedUser);
        }
        public KitchenUserServiceUnitTest()
        {
            _testUser = InMemoryDataGenerator.TestUser;
            _context  = InMemoryDataGenerator.CreateAndInitializeInMemoryDatabaseContext(Guid.NewGuid().ToString(), _testUser, insertIngredientData: false);

            _kitchenUserService = new KitchenUserService(_context);
        }
Exemple #4
0
        public async Task AddKitchenIngredient_DuplicateKitchenIngredient_Returns405Result()
        {
            KitchenUser kitchenUser   = _userManager.TestUser.KitchenUser.FirstOrDefault();
            Ingredient  newIngredient = InMemoryDataGenerator.AddNewRandomIngredient(_context, _userManager.TestUser);

            if (kitchenUser == null || newIngredient == null)
            {
                throw new Exception("not setup for testing");
            }

            KitchenIngredientDto kitchenIngredient = new KitchenIngredientDto()
            {
                KitchenId            = kitchenUser.Kitchen.KitchenId,
                IngredientId         = newIngredient.IngredientId,
                AddedByKitchenUserId = kitchenUser.KitchenUserId
            };

            // add it once
            await _controller.AddKitchenIngredientAsync(kitchenIngredient);

            // add it again
            ActionResult <KitchenIngredientDto> actualResult = await _controller.AddKitchenIngredientAsync(kitchenIngredient);


            Assert.IsType <ObjectResult>(actualResult.Result);
            Assert.Equal(StatusCodes.Status405MethodNotAllowed, (actualResult.Result as ObjectResult).StatusCode);
        }
        public async Task DeleteKitchenUserByKitchenUserId_ValidKitchenAndUser_ReturnsDeletedUser()
        {
            // generate test data to ensure atleast 1 user is in kitchen that can be removed
            InMemoryDataGenerator.AddNewRandomUsersToKitchens(_context, 1);

            Kitchen myKitchen = _userManager.TestUser.KitchenUser.Where(k => k.IsOwner).FirstOrDefault()?.Kitchen;

            // find a user in the kitchen to delete (that is not the test user)
            KitchenUser userToDelete = myKitchen?.KitchenUser.Where(k => k.UserId != _userManager.TestUser.Id && !k.IsOwner).FirstOrDefault();

            if (userToDelete == null)
            {
                throw new Exception("user not setup for testing");
            }


            int countBeforeDelete = myKitchen.KitchenUser.Count;

            ActionResult <KitchenUserDto> deleteResult = await _controller.DeleteKitchenUserByKitchenUserId(userToDelete.KitchenUserId);

            Assert.IsType <OkObjectResult>(deleteResult.Result);

            KitchenUserDto deletedKitchen = (deleteResult.Result as OkObjectResult).Value as KitchenUserDto;

            Assert.Equal(countBeforeDelete - 1, myKitchen.KitchenUser.Count);
            Assert.Equal(new KitchenUserDto(userToDelete).ToString(), deletedKitchen.ToString());
            Assert.Equal(new KitchenUserDto(userToDelete).UserId, deletedKitchen.UserId);
            Assert.Equal(new KitchenUserDto(userToDelete).KitchenId, deletedKitchen.KitchenId);
        }
        public void AcceptInviteToKitchen_InvalidKitchen_ThrowsKitchenNotFoundException()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            Assert.Throws <KitchenNotFoundException>(() =>
            {
                _kitchenUserService.AcceptInviteToKitchenByKitchenId(-5, newUser);
            });
        }
        public void InviteUserToKitchenByUsername_InvalidKitchenId_ThrowsKitchenNotFoundException()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            Assert.Throws <KitchenNotFoundException>(() =>
            {
                _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, -5, _testUser);
            });
        }
        public void InviteUserToKitchenByUsername_NullKitchen_ThrowsArgumentNullException()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            Assert.Throws <ArgumentNullException>(() =>
            {
                _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, null, _testUser);
            });
        }
 public KitchenServiceUnitTest()
 {
     _testUser = new PantryPlannerUser()
     {
         Id       = "Constructor123",
         UserName = "******",
         Email    = "*****@*****.**"
     };
     _context        = InMemoryDataGenerator.CreateAndInitializeInMemoryDatabaseContext(Guid.NewGuid().ToString(), _testUser, insertIngredientData: false);
     _kitchenService = new KitchenService(_context);
 }
        public void AcceptInviteToKitchen_NoKitchenInvite_ThrowsInviteNotFoundException()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            // get valid kitchen from test user
            Kitchen kitchen = _testUser.KitchenUser.FirstOrDefault()?.Kitchen;

            Assert.Throws <InviteNotFoundException>(() =>
            {
                _kitchenUserService.AcceptInviteToKitchen(kitchen, newUser);
            });
        }
        public void DenyInviteToKitchen_NoInviteExists_ThrowsInviteNotFoundException()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            Kitchen kitchenToJoin = _testUser.KitchenUser.FirstOrDefault().Kitchen;


            Assert.Throws <InviteNotFoundException>(() =>
            {
                _kitchenUserService.DenyInviteToKitchen(kitchenToJoin, newUser);
            });
        }
Exemple #12
0
        public async Task AddIngredientToKitchen_KitchenNotExists_ReturnsNotFound()
        {
            Ingredient newIngredient = InMemoryDataGenerator.AddNewRandomIngredient(_context, _userManager.TestUser);

            if (newIngredient == null)
            {
                throw new Exception("not setup for testing");
            }

            ActionResult <KitchenIngredientDto> actualResult = await _controller.AddIngredientToKitchenAsync(-5, newIngredient.IngredientId);

            Assert.IsType <NotFoundObjectResult>(actualResult.Result);
        }
        public AccountServiceUnitTests()
        {
            _testUser    = InMemoryDataGenerator.TestUser;
            _context     = InMemoryDataGenerator.CreateAndInitializeInMemoryDatabaseContext(Guid.NewGuid().ToString(), _testUser, insertIngredientData: false);
            _userManager = UserManagerMock.MockUserManager <PantryPlannerUser>().Object;

            _signInManager = new SignInManager <PantryPlannerUser>(_userManager
                                                                   , new Mock <IHttpContextAccessor>().Object
                                                                   , new Mock <IUserClaimsPrincipalFactory <PantryPlannerUser> >().Object
                                                                   , new Mock <IOptions <IdentityOptions> >().Object
                                                                   , new Mock <ILogger <SignInManager <PantryPlannerUser> > >().Object
                                                                   , new Mock <IAuthenticationSchemeProvider>().Object);

            _service = new AccountService(_userManager, _signInManager, null);
        }
        public void InviteUserToKitchenByUsername_ValidUserName_ReturnsTrue()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            Kitchen kitchen = _testUser.KitchenUser.FirstOrDefault()?.Kitchen;

            if (kitchen == null)
            {
                throw new Exception("kitchen is not setup for testing");
            }

            bool actualResult = _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, kitchen, _testUser);

            Assert.True(actualResult);
        }
Exemple #15
0
        public static void Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();

            using (var scope = host.Services.CreateScope())
            {
                //find service layer in the scope
                var services = scope.ServiceProvider;
                //get the instance of DBContext service layers
                var context = services.GetRequiredService <EdlizContext>();
                //initialise data in memory
                InMemoryDataGenerator.Initialise(services);
            }

            host.Run();
        }
        public async Task InviteUserToKitchen_ValidKitchen_ReturnsOKAndInviteSent()
        {
            PantryPlannerUser userToInvite = InMemoryDataGenerator.AddNewRandomUser(_context);

            Kitchen kitchen = _userManager.TestUser.KitchenUser.FirstOrDefault()?.Kitchen;

            if (userToInvite == null || kitchen == null)
            {
                throw new Exception("user or kitchen is not setup for testing");
            }


            ActionResult inviteResult = await _controller.InviteUserToKitchen(userToInvite.UserName, kitchen.KitchenId);

            Assert.IsType <OkResult>(inviteResult);
            Assert.True(_context.KitchenUser.Any(k => k.KitchenId == kitchen.KitchenId && k.UserId == userToInvite.Id && !k.HasAcceptedInvite.Value));
        }
Exemple #17
0
        public async void UpdateKitchenIngredient_UserNoRights_ThrowsPermissionsException()
        {
            Kitchen           kitchen    = _testUser.KitchenUser.FirstOrDefault().Kitchen;
            KitchenIngredient ingredient = kitchen.KitchenIngredient.FirstOrDefault();
            PantryPlannerUser otherUserTryingToUpdate = InMemoryDataGenerator.AddNewRandomUser(_context);


            if (ingredient == null || kitchen == null || otherUserTryingToUpdate == null)
            {
                throw new ArgumentNullException("ingredient, kitchen, or user is not setup for testing");
            }

            await Assert.ThrowsAsync <PermissionsException>(async() =>
            {
                await _service.UpdateKitchenIngredientAsync(ingredient, otherUserTryingToUpdate);
            });
        }
        public void DeleteMyselfFromKitchen_OnlyOneUserInKitchen_ThrowsInvalidOperationException()
        {
            InMemoryDataGenerator.InitializeKitchenAndKitchenUserForUser(_context, _testUser);

            KitchenUser expectedResult  = _testUser.KitchenUser.Where(k => k.Kitchen.KitchenUser.Count == 1 && k.IsOwner == false).FirstOrDefault();
            Kitchen     notOwnedKitchen = expectedResult?.Kitchen;

            if (notOwnedKitchen == null)
            {
                throw new Exception("kitchen not setup for testing");
            }


            Assert.Throws <InvalidOperationException>(() =>
            {
                _kitchenUserService.DeleteMyselfFromKitchen(notOwnedKitchen, _testUser);
            });
        }
        public void InviteUserToKitchenByUsername_NotInKitchen_ThrowsPermissionsException()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            List <long> myKitchenIds = _testUser.KitchenUser.Select(k => k.KitchenId).Distinct().ToList();

            Kitchen notMyKitchen = _context.Kitchen.Where(k => myKitchenIds.Contains(k.KitchenId) == false).FirstOrDefault();

            if (notMyKitchen == null)
            {
                throw new Exception("kitchen is not setup for testing");
            }

            Assert.Throws <PermissionsException>(() =>
            {
                _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, notMyKitchen.KitchenId, _testUser);
            });
        }
        public void AcceptInviteToKitchen_ValidKitchen_ReturnsTrue()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            Kitchen kitchenToJoin = _testUser.KitchenUser.FirstOrDefault()?.Kitchen;

            if (kitchenToJoin == null)
            {
                throw new Exception("kitchen is not setup for testing");
            }

            // send invite for new user
            _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, kitchenToJoin.KitchenId, _testUser);


            // have new user accept invite
            _kitchenUserService.AcceptInviteToKitchen(kitchenToJoin, newUser);
        }
        public void GetMyInvites_ValidUser_ReturnsCorrectResult()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            Kitchen kitchen = _testUser.KitchenUser.FirstOrDefault()?.Kitchen;

            if (kitchen == null)
            {
                throw new Exception("kitchen is not setup for testing");
            }

            bool inviteResult = _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, kitchen, _testUser);

            List <KitchenUser> actualResult = _kitchenUserService.GetMyInvites(newUser);

            Assert.True(actualResult.Count == 1);
            Assert.True(actualResult[0].KitchenId == kitchen.KitchenId);
        }
        public void InviteUserToKitchenByUsername_ValidUserName_KitchenUserIsAdded()
        {
            // add random user to test against
            PantryPlannerUser newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            Kitchen kitchen = _testUser.KitchenUser.FirstOrDefault()?.Kitchen;

            if (kitchen == null)
            {
                throw new Exception("kitchen is not setup for testing");
            }

            bool result = _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, kitchen, _testUser);

            KitchenUser actualResult = _context.KitchenUser
                                       .Where(u => u.UserId == newUser.Id && u.KitchenId == kitchen.KitchenId && u.HasAcceptedInvite == false && u.IsOwner == false)
                                       .FirstOrDefault();

            Assert.True(actualResult != null);
        }
        public static void Main(string[] args)
        {
            //CreateHostBuilder(args).Build().Run();

            //1. Get the IWebHost which will host this application.
            var host = CreateHostBuilder(args).Build();

            //2. Find the service layer within our scope.
            using (var scope = host.Services.CreateScope())
            {
                //3. Get the instance of BoardGamesDBContext in our services layer
                var services = scope.ServiceProvider;
                //var context = services.GetRequiredService<LifeBoatMediatRDbContext>();

                //4. Call the DataGenerator to create sample data
                InMemoryDataGenerator.Initialize(services);
            }

            //Continue to run the application
            host.Run();
        }
        public void DeleteMyselfFromKitchen_ValidKitchenUser_ReturnsKitchenUser()
        {
            KitchenUser expectedResult     = _testUser.KitchenUser.Where(k => k.IsOwner == false).FirstOrDefault();
            int         kitchenCountBefore = _testUser.KitchenUser.Count;

            Kitchen notOwnedKitchen = expectedResult?.Kitchen;

            if (notOwnedKitchen == null)
            {
                throw new Exception("kitchen not setup for testing");
            }

            // ensure a another user is in Kitchen
            var newUser = InMemoryDataGenerator.AddNewRandomUser(_context);

            _kitchenUserService.InviteUserToKitchenByUsername(newUser.UserName, notOwnedKitchen, _testUser);
            _kitchenUserService.AcceptInviteToKitchen(notOwnedKitchen, newUser);


            KitchenUser actualResult = _kitchenUserService.DeleteMyselfFromKitchen(notOwnedKitchen, _testUser);

            Assert.Equal(expectedResult, actualResult);
            Assert.Equal(kitchenCountBefore - 1, _testUser.KitchenUser.Count);
        }
 public KitchenUserControllerUnitTest()
 {
     _userManager = new FakeUserManager();
     _context     = InMemoryDataGenerator.CreateAndInitializeInMemoryDatabaseContext(Guid.NewGuid().ToString(), _userManager.TestUser, insertIngredientData: false);
     _controller  = new PantryPlanner.Controllers.KitchenUserController(_context, _userManager);
 }
 public FoodCompositionETLUnitTest()
 {
     _context = InMemoryDataGenerator.CreateInMemoryDatabaseContext("FoodCompositionETLUnitTestDB");
     _etl     = new USDAFoodCompositionDbETL(FoodCompositionFolderLocation);
 }