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