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 UpdateKitchenIngredientAsync_ValidKitchenIngredient_ReturnsOkAndOnlyUpdatesQty() { KitchenUser kitchenUser = _userManager.TestUser.KitchenUser.FirstOrDefault(); KitchenIngredient ingredientToUpdate = kitchenUser?.Kitchen.KitchenIngredient.FirstOrDefault(); if (ingredientToUpdate == null) { throw new Exception("not setup for testing"); } KitchenIngredientDto updateDto = new KitchenIngredientDto(ingredientToUpdate); string noteBeforeUpdate = ingredientToUpdate.Note; int expectedQty = 5; updateDto.Note = null; updateDto.Quantity = expectedQty; DateTime timeBeforeUpdate = DateTime.UtcNow; var updateResult = await _controller.UpdateKitchenIngredientAsync(updateDto.KitchenIngredientId, updateDto); KitchenIngredient updatedIngredient = _context.KitchenIngredient.Where(ki => ki.KitchenIngredientId == updateDto.KitchenIngredientId).FirstOrDefault(); Assert.IsType <OkResult>(updateResult); Assert.Equal(noteBeforeUpdate, updatedIngredient.Note); Assert.Equal(expectedQty, updatedIngredient.Quantity); Assert.True(updatedIngredient.LastUpdated >= timeBeforeUpdate); }
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 async Task <ActionResult <List <KitchenIngredientDto> > > GetIngredientsForKitchenByCategory(long kitchenId, long categoryId) { PantryPlannerUser user; try { user = await _userManager.GetUserFromCookieOrJwtAsync(this.User); List <KitchenIngredient> ingredientsInKitchen = _service.GetKitchenIngredientsByCategory(kitchenId, categoryId, user); return(Ok(KitchenIngredientDto.ToList(ingredientsInKitchen))); } catch (ArgumentNullException e) { return(BadRequest(e.Message)); } catch (KitchenNotFoundException e) { return(NotFound(e.Message)); } catch (CategoryNotFoundException e) { return(NotFound(e.Message)); } catch (PermissionsException e) { return(Unauthorized(e.Message)); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <ActionResult> UpdateKitchenIngredientAsync(long id, [FromBody] KitchenIngredientDto kitchenIngredient) { PantryPlannerUser user; try { if (id != kitchenIngredient?.KitchenIngredientId) { return(BadRequest("The ID specified does not match")); } user = await _userManager.GetUserFromCookieOrJwtAsync(this.User); await _service.UpdateKitchenIngredientAsync(kitchenIngredient, user); return(Ok()); } catch (ArgumentNullException e) { return(BadRequest(e.Message)); } catch (IngredientNotFoundException e) { return(NotFound(e.Message)); } catch (PermissionsException e) { return(Unauthorized(e.Message)); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <ActionResult <KitchenIngredientDto> > AddKitchenIngredientAsync([FromBody] KitchenIngredientDto kitchenIngredient) { PantryPlannerUser user; try { user = await _userManager.GetUserFromCookieOrJwtAsync(this.User); KitchenIngredient kitchenIngredientToAdd = KitchenIngredientDto.Create(kitchenIngredient); KitchenIngredient newIngredient = _service.AddKitchenIngredient(kitchenIngredientToAdd, user); return(Ok(new KitchenIngredientDto(newIngredient))); } catch (ArgumentNullException e) { return(BadRequest(e.Message)); } catch (UserNotFoundException e) { return(NotFound(e.Message)); } catch (InvalidOperationException e) { return(StatusCode(StatusCodes.Status405MethodNotAllowed, e.Message)); } catch (PermissionsException e) { return(Unauthorized(e.Message)); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task <ActionResult <KitchenIngredientDto> > GetKitchenIngredient(long id) { PantryPlannerUser user; try { user = await _userManager.GetUserFromCookieOrJwtAsync(this.User); KitchenIngredientDto kitchenIngredient = new KitchenIngredientDto(_service.GetKitchenIngredientById(id, user)); return(Ok(kitchenIngredient)); } catch (ArgumentNullException e) { return(BadRequest(e.Message)); } catch (IngredientNotFoundException e) { return(NotFound(e.Message)); } catch (PermissionsException e) { return(Unauthorized(e.Message)); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }
public async Task UpdateKitchenIngredientAsync_KitchenIngredientNotExists_ReturnsNotFound() { KitchenUser kitchenUser = _userManager.TestUser.KitchenUser.FirstOrDefault(); KitchenIngredient ingredientToUpdate = kitchenUser?.Kitchen.KitchenIngredient.FirstOrDefault(); if (ingredientToUpdate == null) { throw new Exception("not setup for testing"); } KitchenIngredientDto updateDto = new KitchenIngredientDto(ingredientToUpdate); updateDto.KitchenIngredientId = -5; var updateResult = await _controller.UpdateKitchenIngredientAsync(updateDto.KitchenIngredientId, updateDto); Assert.IsType <NotFoundObjectResult>(updateResult); }
public async Task UpdateKitchenIngredientAsync_UserNoRightsToKitchenIngredient_ReturnsUnauthorized() { List <long> myKitchenIds = _userManager.TestUser.KitchenUser.Select(k => k.KitchenId).ToList(); Kitchen notMyKitchen = _context.Kitchen.Where(k => myKitchenIds.Contains(k.KitchenId) == false).FirstOrDefault(); KitchenIngredient ingredientToUpdate = notMyKitchen.KitchenIngredient.FirstOrDefault(); if (ingredientToUpdate == null) { throw new Exception("not setup for testing"); } KitchenIngredientDto updateDto = new KitchenIngredientDto(ingredientToUpdate); updateDto.Note = "froopyland is real"; updateDto.Quantity = 3; var updateResult = await _controller.UpdateKitchenIngredientAsync(updateDto.KitchenIngredientId, updateDto); Assert.IsType <UnauthorizedObjectResult>(updateResult); }