public void Get_Non_Existant_Item_Returns_Not_Found()
        {
            //Arrange
            DbContextOptions <ShoppingListContext> options = new TestHelper().GetShoppingListContextOptions();

            var mockData = MockData.LargeShoppingList();

            using (var context = new ShoppingListContext(options))
            {
                context.AddRange(mockData);
                context.SaveChanges();
            };

            using (var context = new ShoppingListContext(options))
            {
                IShoppingListRepository mockRepo = new ShoppingListRepository(context);
                var controller = new ShoppingListController(mockRepo);

                //Act
                var result = controller.Get("Does Not Exist");

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(404, result.StatusCode);
                Assert.AreEqual(result.Value, "Drink: Does Not Exist not found on the shopping list.");
            }
        }
        public async void ShouldReturnAllShoppingLists()
        {
            IEnumerable <ShoppingList> shoppingLists = new List <ShoppingList>
            {
                Mock.Of <ShoppingList>(),
                Mock.Of <ShoppingList>(),
                Mock.Of <ShoppingList>()
            };

            var mockRepository = new Mock <IRepository <ShoppingList> >();

            mockRepository.Setup(mock => mock.GetAllAsync())
            .ReturnsAsync(shoppingLists);

            _repository = mockRepository.Object;
            _service    = new ShoppingListService(_repository);
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.GetAllShoppingListsAsync();


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Result.Should().BeAssignableTo <IEnumerable <ShoppingList> >()
            .Which.Count().Should().Be(3);
        }
        public async void ShouldReturnTheANewlyCreatedShoppingList()
        {
            var shoppingList = new ShoppingList
            {
                ShoppingListId = 1,
                Name           = "Test",
                CreatedAt      = DateTime.Now,
                LastUpdated    = DateTime.Now
            };

            var apiResponse = new ApiResponse(HttpStatusCode.Created)
            {
                Result = shoppingList
            };

            var mockService = new Mock <IShoppingListService <IApiResponse> >();

            mockService.Setup(mock => mock.AddAsync(shoppingList.Name))
            .ReturnsAsync(apiResponse);

            _service    = mockService.Object;
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.AddNewShoppingList(shoppingList.Name);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.Created &&
                                                 response.Message == null &&
                                                 response.Result != null);
        }
        public void Get_All_Return_Expected_List()
        {
            //Arrange
            DbContextOptions <ShoppingListContext> options = new TestHelper().GetShoppingListContextOptions();

            var mockData       = MockData.LargeShoppingList();
            var expectedResult = new OkObjectResult(mockData);

            using (var context = new ShoppingListContext(options))
            {
                context.AddRange(mockData);
                context.SaveChanges();
            };

            using (var context = new ShoppingListContext(options))
            {
                IShoppingListRepository mockRepo = new ShoppingListRepository(context);
                var controller = new ShoppingListController(mockRepo);

                //Act
                var result = controller.Get();

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(200, result.StatusCode);
                CollectionAssert.Equals(expectedResult.Value, result.Value);
            }
        }
        public async void ShouldReturnAShoppingListWhenItExists()
        {
            var shoppingList = new ShoppingList
            {
                ShoppingListId = 1,
                Name           = "Test",
                CreatedAt      = DateTime.UtcNow,
                LastUpdated    = DateTime.UtcNow
            };

            var mockRepository = new Mock <IRepository <ShoppingList> >();

            mockRepository.Setup(mock => mock.FindAsync(3))
            .ReturnsAsync(shoppingList);

            _repository = mockRepository.Object;
            _service    = new ShoppingListService(_repository);
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.FindShoppingListAsync(3);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.OK &&
                                                 response.Message == null &&
                                                 response.Result != null);
        }
        public void Get_Item_Returns_Expected_Item()
        {
            //Arrange
            DbContextOptions <ShoppingListContext> options = new TestHelper().GetShoppingListContextOptions();

            var mockData       = MockData.LargeShoppingList();
            var expectedObject = mockData.FirstOrDefault();
            var expectedResult = new OkObjectResult(expectedObject);

            using (var context = new ShoppingListContext(options))
            {
                context.AddRange(mockData);
                context.SaveChanges();
            };

            using (var context = new ShoppingListContext(options))
            {
                IShoppingListRepository mockRepo = new ShoppingListRepository(context);
                var controller = new ShoppingListController(mockRepo);

                //Act
                var result = controller.Get(expectedObject.Name) as OkObjectResult;

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(200, result.StatusCode);
                Assert.IsTrue(expectedResult.Value.Equals(result.Value));
            }
        }
        public void Post_To_Empty_List_Successfully_Adds_Item()
        {
            //Arrange
            DbContextOptions <ShoppingListContext> options = new TestHelper().GetShoppingListContextOptions();

            var expectedObject = new DrinkOrder
            {
                Name     = "Pepsi",
                Quantity = 1
            };

            var expectedResult = new CreatedResult("", expectedObject);

            using (var context = new ShoppingListContext(options))
            {
                IShoppingListRepository mockRepo = new ShoppingListRepository(context);

                var controller = new ShoppingListController(mockRepo);
                controller.ControllerContext             = new ControllerContext();
                controller.ControllerContext.HttpContext = new DefaultHttpContext();

                //Act
                var result = controller.Post(expectedObject) as CreatedResult;

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(201, result.StatusCode);
                //Can't effectively mock HttpRequest, and don't really want to go down that rabbit hole so just check
                //it's not null.
                Assert.IsNotNull(result.Location);
                Assert.AreEqual(result.Value, expectedResult.Value);
            }
        }
        public void Post_Existing_Item_Returns_Conflict()
        {
            //Arrange
            DbContextOptions <ShoppingListContext> options = new TestHelper().GetShoppingListContextOptions();

            var mockData = MockData.LargeShoppingList();

            var testObject = mockData.FirstOrDefault();

            using (var context = new ShoppingListContext(options))
            {
                context.AddRange(mockData);
                context.SaveChanges();
            };

            using (var context = new ShoppingListContext(options))
            {
                IShoppingListRepository mockRepo = new ShoppingListRepository(context);

                var controller = new ShoppingListController(mockRepo);
                controller.ControllerContext             = new ControllerContext();
                controller.ControllerContext.HttpContext = new DefaultHttpContext();

                //Act
                var result = controller.Post(testObject);

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(409, result.StatusCode);
                Assert.AreEqual(result.Value, $"Drink {testObject.Name} already exists in the shopping list.");
            }
        }
        public async void Should_ReturnMoreThanOneShoppingList()
        {
            var options = ReturnDbContextOptions("Should_ReturnMoreThanOneShoppingList");

            // Arrange
            using (var context = new ShoppingListContext(options))
            {
                await context.ShoppingList.AddRangeAsync(
                    new ShoppingList { Name = "Test1", BudgetSum = 10 },
                    new ShoppingList { Name = "Test2", BudgetSum = 15 });

                await context.SaveChangesAsync();
            }

            using (var context = new ShoppingListContext(options))
            {
                var sut = new ShoppingListController(new Repository(context));

                // Act
                var result = await sut.GetAllShoppingListsAsync();

                // Assert
                Assert.True(result.Value.Count > 1);
                Assert.Equal(2, result.Value.Count);
            }
        }
        public async void Should_ReturnOneShoppingList()
        {
            var options = ReturnDbContextOptions("Should_ReturnOneShoppingList");

            // Arrange
            using (var context = new ShoppingListContext(options))
            {
                await context.ShoppingList.AddAsync(new ShoppingList
                {
                    Name      = "Test",
                    BudgetSum = 20
                });

                await context.SaveChangesAsync();
            }

            using (var context = new ShoppingListContext(options))
            {
                var sut = new ShoppingListController(new Repository(context));

                // Act
                var result = await sut.GetAllShoppingListsAsync();

                // Assert
                Assert.Single(result.Value);
            }
        }
Esempio n. 11
0
        public void Delete_Removes_Existing_Drink_From_Shopping_List()
        {
            //Arrange
            DbContextOptions <ShoppingListContext> options = new TestHelper().GetShoppingListContextOptions();

            var mockData = MockData.LargeShoppingList();

            var expectedResult = mockData.FirstOrDefault();

            using (var context = new ShoppingListContext(options))
            {
                context.AddRange(mockData);
                context.SaveChanges();
            };


            using (var context = new ShoppingListContext(options))
            {
                IShoppingListRepository mockRepo = new ShoppingListRepository(context);
                var controller = new ShoppingListController(mockRepo);

                //Act
                var result = controller.Get(expectedResult.Name);

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(200, result.StatusCode);
                Assert.AreEqual(result.Value, expectedResult);
            }
        }
        public async void ShouldReturnAnOkResultWhenTheUpdateIsSuccessful()
        {
            var updatedShoppingList = new ShoppingList
            {
                ShoppingListId = 1,
                Name           = "Test",
                CreatedAt      = DateTime.Now,
                LastUpdated    = DateTime.Now
            };

            var mockRepository = new Mock <IRepository <ShoppingList> >();

            _service    = new ShoppingListService(mockRepository.Object);
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.UpdateShoppingList(updatedShoppingList);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.OK &&
                                                 response.Message == null &&
                                                 response.Result == null);
        }
Esempio n. 13
0
        protected void removeButton_Click(object sender, EventArgs e)
        {
            // Call our service to remove on click
            var srv = new ShoppingListController();

            srv.removeItem(item);
            Response.Redirect(Request.RawUrl);
        }
Esempio n. 14
0
        protected void markButton_Click(object sender, EventArgs e)
        {
            // Call our service to remove on click
            var srv = new ShoppingListController();

            item.marked = !item.marked;
            srv.updateItem(item.id, item);
            Response.Redirect(Request.RawUrl);
        }
Esempio n. 15
0
        public ModelManager()
        {
            helper = new LoginApiHelper(BaseApiUrl);

            this.Items = new SortedSet <string>();

            this.shoppingListController = new ShoppingListController(localDatabaseName, helper);
            this.locationController     = new LocationController(localDatabaseName, BaseApiUrl, helper);
            this.LoginController        = new LoginController(localDatabaseName, helper);
        }
Esempio n. 16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // get list and pass to user control
            var srv = new ShoppingListController();

            List.shoppingList = srv.getShoppingList();

            // We use view state here to make sure that button clicks etc don't
            // lose the newly created control
            if (ViewState["addNewItem"] != null && (bool)ViewState["addNewItem"])
            {
                var control = LoadControl(@"~\Controls\NewItem.ascx");
                newRecordPlaceholder.Controls.Add(control);
            }
        }
        public async void Should_ReturnNullForSpecificShoppingList()
        {
            var options = ReturnDbContextOptions("Should_ReturnNullForSpecificShoppingList");

            // Arrange
            using (var context = new ShoppingListContext(options))
            {
                var sut = new ShoppingListController(new Repository(context));

                // Act
                var result = await sut.GetShoppingListWithRelatedItemsAsync(5);

                // Assert
                Assert.Null(result.Value);
            }
        }
        public async void Should_NotReturnAnyShoppingLists()
        {
            var options = ReturnDbContextOptions("Should_NotReturnAnyShoppingLists");

            // Arrange
            using (var context = new ShoppingListContext(options))
            {
                var sut = new ShoppingListController(new Repository(context));

                // Act
                var result = await sut.GetAllShoppingListsAsync();

                // Assert
                Assert.Empty(result.Value);
            }
        }
        public async void ShouldReturnABadRequestResultWhenAnEmptyStringIsPassed(string data)
        {
            _service    = Mock.Of <IShoppingListService <IApiResponse> >();
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.AddNewShoppingList(data);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.BadRequest &&
                                                 response.Message.Equals("The shopping list must have a name.") &&
                                                 response.Result == null);
        }
        public async void ShouldReturnABadRequestWhenTheUpdatedShoppingListIsNull()
        {
            _service    = Mock.Of <IShoppingListService <IApiResponse> >();
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.UpdateShoppingList(null);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.BadRequest &&
                                                 response.Result == null &&
                                                 response.Message.Equals("Cannot update an invalid shopping list."));
        }
        public async void Should_ReturnStatusCode500_When_InsertingShoppingListWithNull()
        {
            var options = ReturnDbContextOptions("Should_ReturnStatusCode500_When_InsertingShoppingListWithNull");

            // Arrange
            using (var context = new ShoppingListContext(options))
            {
                var sut = new ShoppingListController(new Repository(context));

                // Act
                var result = await sut.InsertShoppingListAsync(null);

                // Assert
                var objectResult = result as ObjectResult;
                Assert.Equal(500, objectResult.StatusCode);
            }
        }
Esempio n. 22
0
        public async Task <LoginResponse> Register(UserModel user)
        {
            var response = await LoginController.Register(user);

            switch (response)
            {
            case LoginResponse.Success:
                ShoppingListController.GetShoppingListModelsAsync();
                break;

            case LoginResponse.InvalidCredentials:
            case LoginResponse.NoResponse:
                break;
            }

            return(response);
        }
        public async void ShouldReturnABadRequestResultWhenTheIdIsNull()
        {
            _repository = Mock.Of <IRepository <ShoppingList> >();
            _service    = new ShoppingListService(_repository);
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.FindShoppingListAsync(null);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.BadRequest &&
                                                 response.Result == null &&
                                                 response.Message.Equals("The shopping list you are looking for is not valid."));
        }
        public async void Should_ReturnStatusCode200_When_InsertingOneShoppingList()
        {
            var options = ReturnDbContextOptions("Should_ReturnStatusCode200_When_InsertingOneShoppingList");

            // Arrange
            using (var context = new ShoppingListContext(options))
            {
                var sut = new ShoppingListController(new Repository(context));

                // Act
                var result = await sut.InsertShoppingListAsync(
                    new ShoppingList { Name = "Test", BudgetSum = 50 });

                // Assert
                var objectResult = result as ObjectResult;
                Assert.IsType <OkObjectResult>(result);
            }
        }
Esempio n. 25
0
        public HomeController()
        {
            _query = new Query();
            DataGenerator.DataGenerator.GenerateAndInsertData(_query, 20, 10, 50);

            _recipeInventory   = new RecipeInventory(_query);
            _shoppingInventory = new ShoppingListInventory(_query);
            _pantry            = new MyPantry(_query);

            _recipeController       = new RecipeController(_recipeInventory, _pantry);
            _pantryController       = new PantryController(_pantry);
            _shoppingListController = new ShoppingListController(_shoppingInventory, _pantry, _recipeInventory);
            _statsFormController    = new StatsFormController(_query);

            _launchRecipeManager       = _recipeController.LaunchRecipeForm;
            _launchPantryManager       = _pantryController.LaunchPantryForm;
            _launchShoppingListManager = _shoppingListController.LaunchShoppingListForm;
            _launchStatsFormManager    = _statsFormController.LaunchStatsForm;
        }
Esempio n. 26
0
        protected void saveNewItemButton_Click(object sender, EventArgs e)
        {
            if (ValidateNewItem())
            {
                // save user entered values
                var name         = newItemName.Text ?? "";
                var quantity     = int.TryParse(newItemQuantity.Text, out var o) ? o : 0;
                var pricePerUnit = int.TryParse(newItemQuantity.Text, out var u) ? u : 0;
                var imageUrl     = newItemImageLink.Text ?? "https://www.placecage.com/300/300";

                // TO:DO lookup other values from API
                // item.cost = getCost(item.name);
                // item.image = getImage(item.image);

                // push to list
                var srv = new ShoppingListController();
                srv.addItem(new ShoppingListItem(name, quantity, pricePerUnit, imageUrl, 0));
                Response.Redirect(Request.RawUrl);
            }
        }
        public void Get_All_If_EmptyList_Return_EmptyList()
        {
            //Arrange
            DbContextOptions <ShoppingListContext> options = new TestHelper().GetShoppingListContextOptions();

            using (var context = new ShoppingListContext(options))
            {
                IShoppingListRepository mockRepo = new ShoppingListRepository(context);
                var controller     = new ShoppingListController(mockRepo);
                var expectedResult = new OkObjectResult(new List <DrinkOrder>());

                //Act
                var result = controller.Get() as OkObjectResult;

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(200, result.StatusCode);
                CollectionAssert.Equals(expectedResult.Value, result.Value);
            }
        }
        public async void ShouldCallTheRepositoryOnceWhenUpdatingAShoppingList()
        {
            var updatedShoppingList = new ShoppingList
            {
                ShoppingListId = 1,
                Name           = "Test",
                CreatedAt      = DateTime.Now,
                LastUpdated    = DateTime.Now
            };

            var mockRepository = new Mock <IRepository <ShoppingList> >();

            _service    = new ShoppingListService(mockRepository.Object);
            _controller = new ShoppingListController(_service);


            await _controller.UpdateShoppingList(updatedShoppingList);


            mockRepository.Verify(mock => mock.UpdateAsync(updatedShoppingList), Times.Once);
        }
        public void Put_To_Existing_Item_Updates_Quantity()
        {
            //Arrange
            DbContextOptions <ShoppingListContext> options = new TestHelper().GetShoppingListContextOptions();

            var mockData = MockData.LargeShoppingList();

            using (var context = new ShoppingListContext(options))
            {
                context.AddRange(mockData);
                context.SaveChanges();
                context.Dispose();
            };

            var expectedObject = new DrinkOrder
            {
                Name     = "Pepsi",
                Quantity = 4
            };

            var expectedResult = new OkObjectResult(expectedObject);

            using (var context = new ShoppingListContext(options))
            {
                IShoppingListRepository mockRepo = new ShoppingListRepository(context);

                var controller = new ShoppingListController(mockRepo);

                //Act
                var result = controller.Put(expectedObject) as OkObjectResult;

                //Assert
                Assert.IsNotNull(result);
                Assert.AreEqual(200, result.StatusCode);
                Assert.AreEqual(result.Value, expectedResult.Value);
                //Check context is updated
                Assert.AreEqual(expectedObject.Quantity, context.shoppingList.FirstOrDefault(x => x.Name == expectedObject.Name).Quantity);
            }
        }
        public async void ShouldReturnANotFoundResultWhenTheShoppingListDoesNotExist()
        {
            var mockRepository = new Mock <IRepository <ShoppingList> >();

            mockRepository.Setup(mock => mock.FindAsync(3))
            .ReturnsAsync(value: null);

            _repository = mockRepository.Object;
            _service    = new ShoppingListService(_repository);
            _controller = new ShoppingListController(_service);


            IActionResult result = await _controller.FindShoppingListAsync(3);


            result.Should().BeOfType <ObjectResult>()
            .Which.Value.Should().BeAssignableTo <IApiResponse>()
            .Which.Should().Match <IApiResponse>(response =>
                                                 response.StatusCode == HttpStatusCode.NotFound &&
                                                 response.Message == null &&
                                                 response.Result == null);
        }