Exemplo n.º 1
0
        private async Task <TestHubConnection> BuildTestHubConnectionWithoutAssignedWaiter <TEvent>(
            HireWaiter hireAssignedWaiterCommand,
            HireWaiter hireUnassignedWaiterCommand,
            AddTable addTableCommand,
            Register registerCommand)
        {
            await HireWaiterWithTable(hireAssignedWaiterCommand, addTableCommand);

            await _fixture.SendAsync(hireUnassignedWaiterCommand);

            await _fixture.SendAsync(registerCommand);

            var assignWaiterToAccountCommand = new AssignWaiterToAccount
            {
                AccountId = registerCommand.Id,

                // Purposefully assigning another waiter to the account, that is not assigned to the table
                WaiterId = hireUnassignedWaiterCommand.Id
            };

            await _fixture.SendAsync(assignWaiterToAccountCommand);

            var accessToken = (await _authHelper
                               .Login(registerCommand.Email, registerCommand.Password))
                              .TokenString;

            var testConnection = BuildTestConnection <TEvent>(accessToken);

            return(testConnection);
        }
Exemplo n.º 2
0
        public Task AssignWaiterToAccountAccountShouldReturnProperHypermediaLinks(HireWaiter hireCommand, Register registerCommand) =>
        _apiHelper.InTheContextOfAnAdmin(
            async httpClient =>
        {
            // Arrange
            await _fixture.SendManyAsync(hireCommand, registerCommand);

            var assignCommand = new AssignWaiterToAccount
            {
                AccountId = registerCommand.Id,
                WaiterId  = hireCommand.Id
            };

            // Act
            var response = await httpClient
                           .PostAsJsonAsync(AuthRoute("assign/waiter"), assignCommand);

            // Assert
            var expectedLinks = new List <string>
            {
                LinkNames.Self,
                LinkNames.Auth.AssignManager,
                LinkNames.Auth.AssignCashier,
                LinkNames.Auth.AssignBarista
            };

            await response.ShouldBeAResource <AssignWaiterToAccountResource>(expectedLinks);
        });
Exemplo n.º 3
0
        public async Task CanAssignWaiterToAccount(Register registerAccountCommand, Waiter waiterToAssign)
        {
            // Arrange
            await _fixture.ExecuteDbContextAsync(async dbContext =>
            {
                dbContext.Waiters.Add(waiterToAssign);
                await dbContext.SaveChangesAsync();
            });

            await _fixture.SendAsync(registerAccountCommand);

            var commandToTest = new AssignWaiterToAccount
            {
                WaiterId  = waiterToAssign.Id,
                AccountId = registerAccountCommand.Id
            };

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

            // Assert
            await _helper.LoginAndCheckClaim(
                registerAccountCommand.Email,
                registerAccountCommand.Password,
                c => c.Type == AuthConstants.ClaimTypes.WaiterId &&
                c.Value == waiterToAssign.Id.ToString());
        }
Exemplo n.º 4
0
        public async Task CannotAssignUnexistingWaiter(Register registerAccountCommand)
        {
            // Arrange
            // Purposefully skipping adding any waiters
            var commandToTest = new AssignWaiterToAccount
            {
                WaiterId  = Guid.NewGuid(),
                AccountId = registerAccountCommand.Id
            };

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
Exemplo n.º 5
0
        private async Task <TestHubConnection> BuildTestTableActionConnection <TEvent>(HireWaiter hireWaiterCommand, AddTable addTableCommand, Register registerCommand)
        {
            await HireWaiterWithTable(hireWaiterCommand, addTableCommand);

            await _fixture.SendAsync(registerCommand);

            var assignWaiterToAccountCommand = new AssignWaiterToAccount
            {
                AccountId = registerCommand.Id,
                WaiterId  = hireWaiterCommand.Id
            };

            await _fixture.SendAsync(assignWaiterToAccountCommand);

            var accessToken = (await _authHelper
                               .Login(registerCommand.Email, registerCommand.Password))
                              .TokenString;

            return(BuildTestConnection <TEvent>(accessToken));
        }
Exemplo n.º 6
0
        public async Task AssignedRolesAreCorrectlyReturned(Register userToRegister, HireWaiter waiterToAssign, HireCashier cashierToAssign)
        {
            // Arrange
            await _fixture.SendAsync(userToRegister);

            await _fixture.SendAsync(waiterToAssign);

            await _fixture.SendAsync(cashierToAssign);

            var assignWaiterToAccount = new AssignWaiterToAccount
            {
                WaiterId  = waiterToAssign.Id,
                AccountId = userToRegister.Id
            };

            var assignCashierToAccount = new AssignCashierToAccount
            {
                AccountId = userToRegister.Id,
                CashierId = cashierToAssign.Id
            };

            await _fixture.SendAsync(assignWaiterToAccount);

            await _fixture.SendAsync(assignCashierToAccount);

            // Act
            var result = await _fixture.SendAsync(new GetUser { Id = userToRegister.Id });

            // Assert
            result.Exists(u =>
                          u.Id == userToRegister.Id &&
                          u.WaiterId == waiterToAssign.Id &&
                          u.CashierId == cashierToAssign.Id &&
                          u.IsWaiter &&
                          u.IsCashier &&
                          u.BaristaId == null &&
                          u.ManagerId == null &&
                          !u.IsBarista &&
                          !u.IsManager)
            .ShouldBeTrue();
        }
Exemplo n.º 7
0
        public async Task CannotAssignUnexistingAccount(Waiter waiterToAdd)
        {
            // Arrange
            await _fixture.ExecuteDbContextAsync(async dbContext =>
            {
                dbContext.Waiters.Add(waiterToAdd);
                await dbContext.SaveChangesAsync();
            });

            var commandToTest = new AssignWaiterToAccount
            {
                WaiterId  = waiterToAdd.Id,
                AccountId = Guid.NewGuid()
            };

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
Exemplo n.º 8
0
 public async Task <IActionResult> AssignWaiterToAccount([FromBody] AssignWaiterToAccount command) =>
 (await Mediator.Send(command)
  .MapAsync(ToEmptyResourceAsync <AssignWaiterToAccountResource>))
 .Match(Ok, Error);