Beispiel #1
0
        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());
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        public IActionResult GetWorkers([FromQuery] GetWorkersRequest request)
        {
            var workers = _workersUseCase.ExecuteGet(request);

            if (workers.Count == 0)
            {
                return(NotFound());
            }

            return(Ok(workers));
        }
Beispiel #6
0
        public void GetWorkerByWorkerIdReturnsEmptyListWhenWorkerWithIdDoesNotExist()
        {
            const int nonExistentWorkerId = 2;
            var       request             = new GetWorkersRequest {
                WorkerId = nonExistentWorkerId
            };

            var result = _workersUseCase.ExecuteGet(request);

            result.Should().BeEmpty();
        }
Beispiel #7
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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);
        }