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); }
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); });
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()); }
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); }
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)); }
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(); }
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); }
public async Task <IActionResult> AssignWaiterToAccount([FromBody] AssignWaiterToAccount command) => (await Mediator.Send(command) .MapAsync(ToEmptyResourceAsync <AssignWaiterToAccountResource>)) .Match(Ok, Error);