public async Task Should_ThrowException_When_PassInvalidUserId() { // Arrange IUnitOfWork unitOfWork = new UnitOfWork(_fixture.Context); IRepository <Team> repository = new Repository <Team>(_fixture.Context); IRepository <User> userRepository = new Repository <User>(_fixture.Context); var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper); var request = new CreateTeamCommand(companyId: 1, userId: 1, "Test Team", members: new List <int>() { -11, 2 }, approvers: new List <int>() { 1 }); // Act var tcs = new CancellationToken(); // Assert var exception = await Assert.ThrowsAsync <VacationTrackingException>(async() => { var result = await handler.Handle(request, tcs); }); Assert.Equal(ExceptionMessages.InvalidUserId, exception.Message); Assert.Equal(400, exception.Code); }
public async Task Should_CreateTeam_When_PassValidParameters() { // Arrange IUnitOfWork unitOfWork = new UnitOfWork(_fixture.Context); IRepository <Team> repository = new Repository <Team>(_fixture.Context); IRepository <User> userRepository = new Repository <User>(_fixture.Context); var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper); var request = new CreateTeamCommand(companyId: 1, userId: 1, "Test Team", members: new List <int>() { 1, 2 }, approvers: new List <int>() { 1 }); // Act var tcs = new CancellationToken(); var result = await handler.Handle(request, tcs); // Assert Assert.Equal("Test Team", result.TeamName); Assert.Equal(2, result.TeamMembers.Count(x => x.IsMember)); Assert.Equal(1, result.TeamMembers.Count(x => x.IsApprover)); Assert.Equal(1, result.CreatedBy); }
public async Task Should_ValidatorReturnFalse_When_EmptyApprover() { TeamCommandValidator validator = new TeamCommandValidator(); // Arrange IUnitOfWork unitOfWork = new UnitOfWork(_fixture.Context); IRepository <Team> repository = new Repository <Team>(_fixture.Context); IRepository <User> userRepository = new Repository <User>(_fixture.Context); var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper); var request = new CreateTeamCommand(companyId: 1, userId: 1, "Test Team", members: new List <int>() { 1, 2 }, approvers: new List <int>() { 1 }); // Act var result = await validator.ValidateAsync(request); //Assert Assert.True(result.IsValid); }
public async Task Should_ThrowException_When_PassExistingTeamName() { // Arrange var team = new Team() { TeamName = "Test Team", CompanyId = 1, CreatedAt = DateTime.UtcNow, CreatedBy = -1 }; team.TeamMembers.Add(new TeamMember() { IsApprover = true, IsMember = true, UserId = 1 }); _fixture.Context.Teams.Attach(team); await _fixture.Context.SaveChangesAsync(); IUnitOfWork unitOfWork = new UnitOfWork(_fixture.Context); IRepository <Team> repository = new Repository <Team>(_fixture.Context); IRepository <User> userRepository = new Repository <User>(_fixture.Context); var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper); var request = new CreateTeamCommand(companyId: 1, userId: 1, "Test Team", members: new List <int>() { 1, 2 }, // UserId: 3 belongs to companyId: 1 approvers: new List <int>() { 1 }); // Act var tcs = new CancellationToken(); // Assert var exception = await Assert.ThrowsAsync <VacationTrackingException>(async() => { var result = await handler.Handle(request, tcs); }); Assert.Equal(ExceptionMessages.TeamNameAlreadyExist, exception.Message); Assert.Equal(400, exception.Code); }
public async Task Should_CreateTeam_When_PassValidUserIdForDifferentTeam() { // Arrange var team = new Team() { TeamName = "Test Team", CompanyId = 1, CreatedAt = DateTime.UtcNow, CreatedBy = -1 }; team.TeamMembers.Add(new TeamMember() { IsApprover = true, IsMember = true, UserId = 1 }); _fixture.Context.Teams.Attach(team); await _fixture.Context.SaveChangesAsync(); IUnitOfWork unitOfWork = new UnitOfWork(_fixture.Context); IRepository <Team> repository = new Repository <Team>(_fixture.Context); IRepository <User> userRepository = new Repository <User>(_fixture.Context); var handler = new CreateTeamHandler(unitOfWork, repository, userRepository, _logger, _mapper); var request = new CreateTeamCommand(companyId: 1, userId: 1, "Test Team - 2", members: new List <int>() { 1, 2 }, approvers: new List <int>() { 1 }); // Act var tcs = new CancellationToken(); var result = await handler.Handle(request, tcs); var user = await userRepository.Queryable().SingleOrDefaultAsync(x => x.UserId == 1); // Assert Assert.Equal(2, user.TeamMembers.Count); }