public async Task CanAssignBaristaToAccount(Register accountToRegisterCommand, Barista baristaToAssign)
        {
            // Arrange
            await _fixture.ExecuteDbContextAsync(async dbContext =>
            {
                dbContext.Baristas.Add(baristaToAssign);
                await dbContext.SaveChangesAsync();
            });

            await _fixture.SendAsync(accountToRegisterCommand);

            var commandToTest = new AssignBaristaToAccount
            {
                BaristaId = baristaToAssign.Id,
                AccountId = accountToRegisterCommand.Id
            };

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

            // Assert
            await _helper.LoginAndCheckClaim(
                accountToRegisterCommand.Email,
                accountToRegisterCommand.Password,
                c => c.Type == AuthConstants.ClaimTypes.BaristaId &&
                c.Value == baristaToAssign.Id.ToString());
        }
示例#2
0
        public async Task CanConnectAsBarista(Register registerCommand, HireBarista hireBaristaCommand, Guid orderId, MenuItem[] menuItems)
        {
            // Arrange
            await _authTestsHelper.Register(registerCommand);

            await _fixture.SendAsync(hireBaristaCommand);

            var assignBaristaToAccountCommand = new AssignBaristaToAccount
            {
                AccountId = registerCommand.Id,
                BaristaId = hireBaristaCommand.Id
            };

            await _fixture.SendAsync(assignBaristaToAccountCommand);

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

            var testConnection = BuildTestConnection(accessToken);

            await testConnection.OpenAsync();

            // Act
            await _toGoOrdersHelper.CreateConfirmedOrder(orderId, menuItems);

            // Assert
            await testConnection
            .VerifyMessageReceived <OrderConfirmed>(
                e => e.Order.Id == orderId &&
                e.Order.OrderedItems.Count == menuItems.Length,
                Times.Once());
        }
示例#3
0
        public Task AssignBaristaToAccountAccountShouldReturnProperHypermediaLinks(HireBarista hireCommand, Register registerCommand) =>
        _apiHelper.InTheContextOfAnAdmin(
            async httpClient =>
        {
            // Arrange
            await _fixture.SendManyAsync(hireCommand, registerCommand);

            var assignCommand = new AssignBaristaToAccount
            {
                AccountId = registerCommand.Id,
                BaristaId = hireCommand.Id
            };

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

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

            await response.ShouldBeAResource <AssignBaristaToAccountResource>(expectedLinks);
        });
        public async Task CannotAssignUnexistingBarista(Register registerAccountCommand)
        {
            // Arrange
            // Purposefully skipping adding any baristas
            var commandToTest = new AssignBaristaToAccount
            {
                BaristaId = Guid.NewGuid(),
                AccountId = registerAccountCommand.Id
            };

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
        public async Task CannotAssignUnexistingAccount(Barista baristaToAdd)
        {
            // Arrange
            await _fixture.ExecuteDbContextAsync(async dbContext =>
            {
                dbContext.Baristas.Add(baristaToAdd);
                await dbContext.SaveChangesAsync();
            });

            var commandToTest = new AssignBaristaToAccount
            {
                BaristaId = baristaToAdd.Id,
                AccountId = Guid.NewGuid()
            };

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
        public async Task CanReassignBaristaForAccount(Register registerAccountCommand, Barista baristaToAssign, Barista baristaToReassign)
        {
            // Arrange
            await _fixture.ExecuteDbContextAsync(async dbContext =>
            {
                dbContext.Baristas.Add(baristaToAssign);
                dbContext.Baristas.Add(baristaToReassign);
                await dbContext.SaveChangesAsync();
            });

            await _fixture.SendAsync(registerAccountCommand);

            var assignFirstBaristaCommand = new AssignBaristaToAccount
            {
                BaristaId = baristaToAssign.Id,
                AccountId = registerAccountCommand.Id
            };

            // Note that first we've assigned a barista before attempting a second time
            await _fixture.SendAsync(assignFirstBaristaCommand);

            var commandToTest = new AssignBaristaToAccount
            {
                AccountId = registerAccountCommand.Id,
                BaristaId = baristaToReassign.Id
            };

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

            // Assert
            await _helper.LoginAndCheckClaim(
                registerAccountCommand.Email,
                registerAccountCommand.Password,
                c => c.Type == AuthConstants.ClaimTypes.BaristaId &&
                c.Value == baristaToReassign.Id.ToString());
        }
示例#7
0
 public async Task <IActionResult> AssignBaristaToAccount([FromBody] AssignBaristaToAccount command) =>
 (await Mediator.Send(command)
  .MapAsync(ToEmptyResourceAsync <AssignBaristaToAccountResource>))
 .Match(Ok, Error);