public async Task CanAssignTable(HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            // Arrange
            await _fixture.SendAsync(addTableCommand);

            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = addTableCommand.Number
            };

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

            // Assert
            var tableInDb = await _fixture.ExecuteDbContextAsync(dbContext =>
                                                                 dbContext
                                                                 .Tables
                                                                 .Include(t => t.Waiter)
                                                                 .ThenInclude(w => w.ServedTables)
                                                                 .FirstOrDefaultAsync(t => t.Id == addTableCommand.Id));

            tableInDb.ShouldNotBeNull();
            tableInDb.WaiterId.ShouldBe(hireWaiterCommand.Id);
            tableInDb.Waiter.ShouldNotBeNull();
            tableInDb.Waiter.ShortName.ShouldBe(hireWaiterCommand.ShortName);
            tableInDb.Waiter.ServedTables.ShouldContain(t => t.Id == addTableCommand.Id &&
                                                        t.Number == assignTableCommand.TableNumber);
        }
Beispiel #2
0
        public Task AssignTableShouldReturnProperHypermediaLinks(HireWaiter hireWaiterCommand, AddTable addTableCommand, Fixture fixture) =>
        _apiHelper.InTheContextOfAManager(
            manager => async httpClient =>
        {
            // Arrange
            await _fixture.SendAsync(hireWaiterCommand);
            await _fixture.SendAsync(addTableCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = addTableCommand.Number
            };

            // Act
            var response = await httpClient
                           .PostAsJsonAsync(WaiterRoute("table/assign"), assignTableCommand);

            // Assert
            var expectedLinks = new List <string>
            {
                LinkNames.Self,
                LinkNames.Waiter.GetEmployedWaiters,
                LinkNames.Waiter.Hire
            };

            await response.ShouldBeAResource <AssignTableResource>(expectedLinks);
        },
            fixture);
Beispiel #3
0
        public async Task SetupWaiterWithTable(HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            await _fixture.SendAsync(addTableCommand);

            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                TableNumber = addTableCommand.Number,
                WaiterId    = hireWaiterCommand.Id
            };

            await _fixture.SendAsync(assignTableCommand);
        }
Beispiel #4
0
        private async Task HireWaiterWithTable(HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            await _fixture.SendAsync(addTableCommand);

            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = addTableCommand.Number
            };

            await _fixture.SendAsync(assignTableCommand);
        }
        public async Task CannotAssignUnexistingTable(HireWaiter hireWaiterCommand)
        {
            // Arrange
            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = 1234 // Irrelevant since we haven't added any tables
            };

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
        public async Task CannotAssignUnexistingWaiter(AddTable addTableCommand)
        {
            // Arrange
            await _fixture.SendAsync(addTableCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = Guid.NewGuid(), // Irrelevant since we haven't hired any waiters
                TableNumber = addTableCommand.Number
            };

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
        public void Action(String choice, Client client, Table table = null)
        {
            switch (choice)
            {
            case "VerifyReservation":
                //this.mapActions["VerifyReservation"].act();
                VerifyReservation verifyReservation = (VerifyReservation)this.mapActions["VerifyReservation"];
                verifyReservation.act(client);
                break;

            case "AssignTable":
                AssignTable assignTable = (AssignTable)this.mapActions["AssignTable"];
                assignTable.act(client, table);
                break;

            default:
                break;
            }
        }
Beispiel #8
0
        private async Task AssignWaitersToTables(List <Waiter> waiters, List <Table> tables)
        {
            if (tables.Count < waiters.Count)
            {
                throw new InvalidOperationException("You need at least as much tables as waiters.");
            }

            for (int i = 0; i < waiters.Count; i++)
            {
                var waiter = waiters[i];
                var table  = tables[i];

                var assignCommand = new AssignTable
                {
                    WaiterId    = waiter.Id,
                    TableNumber = table.Number
                };

                var result = await _mediator.Send(assignCommand);
            }
        }
        public async Task CannotAssignTheSameWaiterTwice(HireWaiter hireWaiterCommand, AddTable addTableCommand)
        {
            // Arrange
            await _fixture.SendAsync(addTableCommand);

            await _fixture.SendAsync(hireWaiterCommand);

            var assignTableCommand = new AssignTable
            {
                WaiterId    = hireWaiterCommand.Id,
                TableNumber = addTableCommand.Number
            };

            await _fixture.SendAsync(assignTableCommand);

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Conflict);
        }
Beispiel #10
0
 public async Task <IActionResult> AssignTable([FromBody] AssignTable command) =>
 (await Mediator.Send(command)
  .MapAsync(ToEmptyResourceAsync <AssignTableResource>))
 .Match(Ok, Error);