Exemplo n.º 1
0
        public Task AssignManagerToAccountAccountShouldReturnProperHypermediaLinks(HireManager hireCommand, Register registerCommand) =>
        _apiHelper.InTheContextOfAnAdmin(
            async httpClient =>
        {
            // Arrange
            await _fixture.SendManyAsync(hireCommand, registerCommand);

            var assignCommand = new AssignManagerToAccount
            {
                AccountId = registerCommand.Id,
                ManagerId = hireCommand.Id
            };

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

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

            await response.ShouldBeAResource <AssignManagerToAccountResource>(expectedLinks);
        });
        public async Task CanAssignManagerToAccount(Register accountToRegisterCommand, Manager managerToAssign)
        {
            // Arrange
            await _fixture.ExecuteDbContextAsync(async dbContext =>
            {
                dbContext.Managers.Add(managerToAssign);
                await dbContext.SaveChangesAsync();
            });

            await _fixture.SendAsync(accountToRegisterCommand);

            var commandToTest = new AssignManagerToAccount
            {
                ManagerId = managerToAssign.Id,
                AccountId = accountToRegisterCommand.Id
            };

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

            // Assert
            await _helper.LoginAndCheckClaim(
                accountToRegisterCommand.Email,
                accountToRegisterCommand.Password,
                c => c.Type == AuthConstants.ClaimTypes.ManagerId &&
                c.Value == managerToAssign.Id.ToString());
        }
Exemplo n.º 3
0
        public async Task CanConnectAsManager(Register registerCommand, HireManager hireManagerCommand, HireWaiter hireWaiterCommand)
        {
            // Arrange
            await _authTestsHelper.Register(registerCommand);

            await _fixture.SendAsync(hireManagerCommand);

            var assignManagerToAccountCommand = new AssignManagerToAccount
            {
                AccountId = registerCommand.Id,
                ManagerId = hireManagerCommand.Id
            };

            await _fixture.SendAsync(assignManagerToAccountCommand);

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

            var testConnection = BuildTestConnection(accessToken);

            await testConnection.OpenAsync();

            // Act
            await _fixture.SendAsync(hireWaiterCommand);

            // Assert
            await testConnection
            .VerifyMessageReceived <WaiterHired>(
                e => e.Waiter.Id == hireWaiterCommand.Id &&
                e.Waiter.ShortName == hireWaiterCommand.ShortName,
                Times.Once());
        }
        public async Task CannotAssignUnexistingManager(Register registerAccountCommand)
        {
            // Arrange
            // Purposefully skipping adding any managers
            var commandToTest = new AssignManagerToAccount
            {
                ManagerId = Guid.NewGuid(),
                AccountId = registerAccountCommand.Id
            };

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

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

            var commandToTest = new AssignManagerToAccount
            {
                ManagerId = managerToAdd.Id,
                AccountId = Guid.NewGuid()
            };

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

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
        public async Task CanReassignManagerForAccount(Register registerAccountCommand, Manager managerToAssign, Manager managerToReassign)
        {
            // Arrange
            await _fixture.ExecuteDbContextAsync(async dbContext =>
            {
                dbContext.Managers.Add(managerToAssign);
                dbContext.Managers.Add(managerToReassign);
                await dbContext.SaveChangesAsync();
            });

            await _fixture.SendAsync(registerAccountCommand);

            var assignFirstManagerCommand = new AssignManagerToAccount
            {
                ManagerId = managerToAssign.Id,
                AccountId = registerAccountCommand.Id
            };

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

            var commandToTest = new AssignManagerToAccount
            {
                AccountId = registerAccountCommand.Id,
                ManagerId = managerToReassign.Id
            };

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

            // Assert
            await _helper.LoginAndCheckClaim(
                registerAccountCommand.Email,
                registerAccountCommand.Password,
                c => c.Type == AuthConstants.ClaimTypes.ManagerId &&
                c.Value == managerToReassign.Id.ToString());
        }
Exemplo n.º 7
0
 public async Task <IActionResult> AssignManagerToAccount([FromBody] AssignManagerToAccount command) =>
 (await Mediator.Send(command)
  .MapAsync(ToEmptyResourceAsync <AssignManagerToAccountResource>))
 .Match(Ok, Error);