Exemplo n.º 1
0
        public async Task CanRejectOneItemOfMultipleOrdered(Guid tabId, int tableNumber, MenuItem item, int timesToOrder)
        {
            // Arrange
            await _helper.AddMenuItems(item);

            await _helper.OpenTabOnTable(tabId, tableNumber);

            // Note that we're ordering the same item multiple times
            var itemsToOrder = Enumerable
                               .Repeat(item, timesToOrder)
                               .ToArray();

            await _helper.OrderMenuItems(tabId, itemsToOrder);

            var rejectItemsCommand = new RejectMenuItems
            {
                TabId       = tabId,
                ItemNumbers = new[] { item.Number }
            };

            // Act
            var result = await _fixture.SendAsync(rejectItemsCommand);

            // Assert
            await _helper.AssertTabExists(
                tabId,
                t => t.RejectedMenuItems.Count == 1 &&
                t.RejectedItemsValue == item.Price &&
                t.RejectedMenuItems.First().Number == item.Number &&
                t.OutstandingMenuItems.Count == itemsToOrder.Length - 1);
        }
Exemplo n.º 2
0
        public Task RejectItemsShouldReturnProperHypermediaLinks(Guid tabId, MenuItem[] menuItems, Fixture fixture) =>
        _apiHelper.InTheContextOfAWaiter(
            waiter => async httpClient =>
        {
            // Arrange
            await _tabHelper.AddMenuItems(menuItems);

            var tableNumber = waiter.ServedTables[0].Number;

            await _tabHelper.OpenTabOnTable(tabId, tableNumber);
            await _tabHelper.OrderMenuItems(tabId, menuItems);

            var rejectItemsCommand = new RejectMenuItems
            {
                TabId       = tabId,
                ItemNumbers = menuItems.Select(i => i.Number).ToList()
            };

            // Act
            var response = await httpClient
                           .PutAsJsonAsync(TabRoute("reject"), rejectItemsCommand);

            // Assert
            var expectedLinks = new List <string>
            {
                LinkNames.Self,
                LinkNames.Tab.GetTab,
                LinkNames.Tab.OrderItems,
                LinkNames.Tab.Close
            };

            await response.ShouldBeAResource <RejectMenuItemsResource>(expectedLinks);
        },
            fixture);
Exemplo n.º 3
0
        public async Task CanRejectOneItem(Guid tabId, int tableNumber, MenuItem[] items)
        {
            // Arrange
            await _helper.AddMenuItems(items);

            await _helper.OpenTabOnTable(tabId, tableNumber);

            await _helper.OrderMenuItems(tabId, items);

            var itemToReject = items.First();

            var rejectItemsCommand = new RejectMenuItems
            {
                TabId       = tabId,
                ItemNumbers = new[] { itemToReject.Number }
            };

            // Act
            var result = await _fixture.SendAsync(rejectItemsCommand);

            // Assert
            await _helper.AssertTabExists(
                tabId,
                t => t.RejectedMenuItems.Count == 1 &&
                t.RejectedItemsValue == itemToReject.Price &&
                t.RejectedMenuItems.First().Number == itemToReject.Number &&
                t.OutstandingMenuItems.Count == items.Length - 1);
        }
Exemplo n.º 4
0
        public async Task CanRejectAllItems(Guid tabId, int tableNumber, MenuItem[] items)
        {
            // Arrange
            await _helper.AddMenuItems(items);

            await _helper.OpenTabOnTable(tabId, tableNumber);

            await _helper.OrderMenuItems(tabId, items);

            var rejectItemsCommand = new RejectMenuItems
            {
                TabId       = tabId,
                ItemNumbers = items.Select(i => i.Number).ToList()
            };

            // Act
            var result = await _fixture.SendAsync(rejectItemsCommand);

            // Assert
            await _helper.AssertTabExists(
                tabId,
                t => t.RejectedMenuItems.Count == items.Length &&
                t.OutstandingMenuItems.Count == 0 &&
                t.ServedMenuItems.Count == 0 &&
                t.RejectedItemsValue == items.Sum(i => i.Price) &&
                items.All(i => t.RejectedMenuItems.Any(ri => ri.Number == i.Number)));
        }
Exemplo n.º 5
0
        public async Task CannotRejectUnorderedItems(Guid tabId, int tableNumber, MenuItem[] items)
        {
            // Arrange
            await _helper.AddMenuItems(items);

            await _helper.OpenTabOnTable(tabId, tableNumber);

            // Purposefully skipping the order
            var rejectItemsCommand = new RejectMenuItems
            {
                TabId       = tabId,
                ItemNumbers = items.Select(i => i.Number).ToList()
            };

            // Act
            var result = await _fixture.SendAsync(rejectItemsCommand);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Validation);
        }
Exemplo n.º 6
0
        public async Task CannotRejectItemsOnAClosedTab(Guid tabId, int tableNumber, MenuItem[] items)
        {
            // Arrange
            await _helper.AddMenuItems(items);

            await _helper.OpenTabOnTable(tabId, tableNumber);

            await _helper.OrderMenuItems(tabId, items);

            await _helper.CloseTab(tabId, items.Sum(i => i.Price));

            var rejectItemsCommand = new RejectMenuItems
            {
                TabId       = tabId,
                ItemNumbers = items.Select(i => i.Number).ToList()
            };

            // Act
            var result = await _fixture.SendAsync(rejectItemsCommand);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Validation);
        }
Exemplo n.º 7
0
 public async Task <IActionResult> RejectMenuItems([FromBody] RejectMenuItems command) =>
 (await Mediator.Send(command)
  .MapAsync(_ => ToEmptyResourceAsync <RejectMenuItemsResource>(x => x.TabId = command.TabId)))
 .Match(Ok, Error);