public List <WorkerResponse> ExecuteGet(GetWorkersRequest request) { List <Worker> domainWorkers = new List <Worker>(); var workerById = GetByWorkerId(request.WorkerId); if (workerById != null) { domainWorkers.Add(workerById); } var workerByEmail = GetByWorkerEmail(request.Email); if (workerByEmail != null) { domainWorkers.Add(workerByEmail); } var workersByTeamId = GetByWorkerTeamId(request.TeamId); if (workersByTeamId != null) { domainWorkers.AddRange(workersByTeamId); } var distinctWorkers = domainWorkers .GroupBy(worker => worker.Id) .Select(worker => worker.First()); return(distinctWorkers.Select(worker => worker.ToResponse()).ToList()); }
public void GetSameWorkersMultipleWaysReturnsListOfDistinctWorkers() { const int fakeWorkerTeamId = 12345; const int fakeTeamId = 5678; var fakeWorker = TestHelpers.CreateWorker(); var fakeTeam = new Team { WorkerTeams = new List <WorkerTeam> { new WorkerTeam() { Id = fakeWorkerTeamId, WorkerId = fakeWorker.Id, TeamId = fakeTeamId, Worker = fakeWorker } } }; var fakeWorkerDomain = fakeWorker.ToDomain(true); var request = new GetWorkersRequest { WorkerId = fakeWorker.Id, TeamId = fakeTeamId, Email = fakeWorker.Email }; _mockWorkerGateway.Setup(x => x.GetWorkerByWorkerId(fakeWorker.Id)).Returns(fakeWorkerDomain); _mockDatabaseGateway.Setup(x => x.GetWorkerByEmail(fakeWorker.Email)).Returns(fakeWorker); _mockTeamGateway.Setup(x => x.GetTeamByTeamId(fakeTeamId)).Returns(fakeTeam); var result = _workersUseCase.ExecuteGet(request); result.Count.Should().Be(1); }
public void GetWorkerByTeamIdReturnsListWorkers() { const int fakeWorkerTeamId = 12345; const int fakeTeamId = 5678; var fakeWorker = TestHelpers.CreateWorker(); var fakeTeam = new Team { WorkerTeams = new List <WorkerTeam> { new WorkerTeam() { Id = fakeWorkerTeamId, WorkerId = fakeWorker.Id, TeamId = fakeTeamId, Worker = fakeWorker } } }; var request = new GetWorkersRequest { TeamId = fakeTeamId }; _mockTeamGateway.Setup(x => x.GetTeamByTeamId(fakeTeamId)).Returns(fakeTeam); var result = _workersUseCase.ExecuteGet(request); var worker = result.First(); Assert.IsInstanceOf <List <WorkerResponse> >(result); worker.Id.Should().Be(fakeWorker.Id); worker.Email.Should().Be(fakeWorker.Email); worker.FirstName.Should().Be(fakeWorker.FirstName); worker.LastName.Should().Be(fakeWorker.LastName); worker.Role.Should().Be(fakeWorker.Role); }
public void GetUniqueWorkersFromWorkerIdWorkerEmailAndTeamId() { var fakeWorkerId = new Worker() { Id = 1, Email = "*****@*****.**", FirstName = "TestFirstName", LastName = "TestLastName", Role = "TestRole" }.ToDomain(true); var fakeWorkerEmail = new Worker() { Id = 2, Email = "*****@*****.**", FirstName = "TestFirstName", LastName = "TestLastName", Role = "TestRole" }; var fakeWorkerTeam = new Worker() { Id = 3, Email = "*****@*****.**", FirstName = "TestFirstName", LastName = "TestLastName", Role = "TestRole" }; const int fakeWorkerTeamId = 12345; const int fakeTeamId = 5678; var fakeTeam = new Team { WorkerTeams = new List <WorkerTeam> { new WorkerTeam() { Id = fakeWorkerTeamId, WorkerId = fakeWorkerTeam.Id, TeamId = fakeTeamId, Worker = fakeWorkerTeam } } }; _mockWorkerGateway.Setup(x => x.GetWorkerByWorkerId(fakeWorkerId.Id)).Returns(fakeWorkerId); _mockDatabaseGateway.Setup(x => x.GetWorkerByEmail(fakeWorkerEmail.Email)).Returns(fakeWorkerEmail); _mockTeamGateway.Setup(x => x.GetTeamByTeamId(fakeTeamId)).Returns(fakeTeam); var request = new GetWorkersRequest { WorkerId = fakeWorkerId.Id, Email = fakeWorkerEmail.Email, TeamId = fakeTeamId }; var result = _workersUseCase.ExecuteGet(request); result.Count.Should().Be(3); }
public IActionResult GetWorkers([FromQuery] GetWorkersRequest request) { var workers = _workersUseCase.ExecuteGet(request); if (workers.Count == 0) { return(NotFound()); } return(Ok(workers)); }
public void GetWorkerByWorkerIdReturnsEmptyListWhenWorkerWithIdDoesNotExist() { const int nonExistentWorkerId = 2; var request = new GetWorkersRequest { WorkerId = nonExistentWorkerId }; var result = _workersUseCase.ExecuteGet(request); result.Should().BeEmpty(); }
public void GetWorkerByWorkerEmailReturnsEmptyListWhenWorkerWithEmailDoesNotExist() { const string nonExistentWorkerEmail = "*****@*****.**"; var request = new GetWorkersRequest { Email = nonExistentWorkerEmail }; var result = _workersUseCase.ExecuteGet(request); result.Should().BeEmpty(); }
public void GetWorkersReturns404WhenNoWorkersFound() { var workers = new List <WorkerResponse>(); var request = new GetWorkersRequest() { TeamId = 5 }; _workerUseCase.Setup(x => x.ExecuteGet(request)).Returns(workers); var response = _workerController.GetWorkers(request) as NotFoundResult; response?.StatusCode.Should().Be(404); }
public void GetWorkersReturns200WhenMatchingWorker() { var request = new GetWorkersRequest() { TeamId = 5 }; var workersList = _fixture.Create <List <WorkerResponse> >(); _workerUseCase.Setup(x => x.ExecuteGet(request)).Returns(workersList); var response = _workerController.GetWorkers(request) as OkObjectResult; response?.StatusCode.Should().Be(200); (response?.Value as List <WorkerResponse>)?.Count.Should().Be(workersList.Count); }
public void ExecuteGetCallsDatabaseGateway() { var fakeWorker = TestHelpers.CreateWorker().ToDomain(true); const int teamId = 1; var request = new GetWorkersRequest { WorkerId = fakeWorker.Id, Email = fakeWorker.Email, TeamId = teamId }; _mockWorkerGateway.Setup(x => x.GetWorkerByWorkerId(fakeWorker.Id)).Returns(fakeWorker); _workersUseCase.ExecuteGet(request); _mockWorkerGateway.Verify(x => x.GetWorkerByWorkerId(fakeWorker.Id), Times.Once); _mockDatabaseGateway.Verify(x => x.GetWorkerByEmail(fakeWorker.Email), Times.Once); _mockTeamGateway.Verify(x => x.GetTeamByTeamId(teamId), Times.Once); }
public void GetWorkerByWorkerIdReturnsListWorkersWhenWorkerWithIdExists() { var fakeWorker = TestHelpers.CreateWorker().ToDomain(true); var request = new GetWorkersRequest { WorkerId = fakeWorker.Id }; _mockWorkerGateway.Setup(x => x.GetWorkerByWorkerId(fakeWorker.Id)).Returns(fakeWorker); var result = _workersUseCase.ExecuteGet(request); var worker = result.First(); Assert.IsInstanceOf <List <WorkerResponse> >(result); worker.Id.Should().Be(fakeWorker.Id); worker.Email.Should().Be(fakeWorker.Email); worker.FirstName.Should().Be(fakeWorker.FirstName); worker.LastName.Should().Be(fakeWorker.LastName); worker.Role.Should().Be(fakeWorker.Role); }
public void GetWorkerByWorkerEmailReturnsListWorkers() { var fakeWorker = TestHelpers.CreateWorker(); var request = new GetWorkersRequest { Email = fakeWorker.Email }; _mockDatabaseGateway.Setup(x => x.GetWorkerByEmail(fakeWorker.Email)).Returns(fakeWorker); var result = _workersUseCase.ExecuteGet(request); var worker = result.First(); Assert.IsInstanceOf <List <WorkerResponse> >(result); worker.Id.Should().Be(fakeWorker.Id); worker.Email.Should().Be(fakeWorker.Email); worker.FirstName.Should().Be(fakeWorker.FirstName); worker.LastName.Should().Be(fakeWorker.LastName); worker.Role.Should().Be(fakeWorker.Role); }