public Task AssignCashierToAccountAccountShouldReturnProperHypermediaLinks(HireCashier hireCommand, Register registerCommand) =>
        _apiHelper.InTheContextOfAnAdmin(
            async httpClient =>
        {
            // Arrange
            await _fixture.SendManyAsync(hireCommand, registerCommand);

            var assignCommand = new AssignCashierToAccount
            {
                AccountId = registerCommand.Id,
                CashierId = hireCommand.Id
            };

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

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

            await response.ShouldBeAResource <AssignCashierToAccountResource>(expectedLinks);
        });
        public async Task CannotHireCashierWithATakenId(HireCashier command)
        {
            // Arrange
            await _fixture.SendAsync(command);

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Conflict);
        }
        public async Task CanHireCashier(HireCashier command)
        {
            // Arrange
            // Act
            var result = await _fixture.SendAsync(command);

            // Assert
            result.HasValue.ShouldBeTrue();

            var cashierInDb = await _fixture.ExecuteDbContextAsync(dbContext =>
                                                                   dbContext
                                                                   .Cashiers
                                                                   .FirstOrDefaultAsync(w => w.Id == command.Id));

            cashierInDb.Id.ShouldBe(command.Id);
            cashierInDb.ShortName.ShouldBe(command.ShortName);
        }
        public Task HireCashierShouldReturnProperHypermediaLinks(HireCashier command, Fixture fixture) =>
        _apiHelper.InTheContextOfAManager(
            manager => async httpClient =>
        {
            // Act
            var response = await httpClient
                           .PostAsJsonAsync("cashier", command);

            // Assert
            var expectedLinks = new List <string>
            {
                LinkNames.Self,
                LinkNames.Cashier.GetAll
            };

            await response.ShouldBeAResource <HireCashierResource>(expectedLinks);
        },
            fixture);
Exemple #5
0
 public async Task <IActionResult> HireCashier([FromBody] HireCashier command) =>
 (await Mediator.Send(command)
  .MapAsync(ToEmptyResourceAsync <HireCashierResource>))
 .Match(Ok, Error);
Exemple #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();
        }