public async void ShouldCreateAShoppingListAndPutItemsOnIt() { var shoppingListRequest = new CreateShoppingListRequest { Name = "First list" }; var shoppingList = await _client.CreateShoppingListAsync(shoppingListRequest); Assert.NotNull(shoppingList); var potatoItem = new AddShoppingListItemRequest { ShoppingListId = shoppingList.Id, Name = "Potato", Amount = 1, Unit = Unit.Kg }; var brocolliItem = new AddShoppingListItemRequest { ShoppingListId = shoppingList.Id, Name = "Potato", Amount = 1, Unit = Unit.Kg }; var actualPotato = await _client.AddShoppingListItemAsync(potatoItem); var actualBrocolli = await _client.AddShoppingListItemAsync(brocolliItem); var actualList = await _client.FindShoppingListAsync(new FindListsRequest { Id = shoppingList.Id }); Assert.NotNull(actualPotato); Assert.NotNull(actualBrocolli); Assert.NotNull(actualList); Assert.Equal(shoppingList.Id, actualList.Id); var actualItems = actualList.Items.ToList(); Assert.Equal(new List <ShoppingListItemReply> { actualPotato, actualBrocolli }, actualItems); }
public override async Task <ShoppingListItemReply> AddShoppingListItem(AddShoppingListItemRequest request, ServerCallContext context) { var shoppingList = await _repository.Find(request.ShoppingListId); if (shoppingList == null) { throw new RpcException(new Status(StatusCode.NotFound, "Shopping list not found")); } shoppingList.Items.Add(new ShoppingListItem { Name = request.Name, Amount = request.Amount, Unit = (Domain.Unit)(int) request.Unit }); await _repository.Save(shoppingList); return(AsReply(shoppingList.Items.LastOrDefault())); }