Exemple #1
0
        public void GetEmployeeDepartment_ParametersMatchExpectedValues()
        {
            //Arrange
            var dbOptions = new DbContextOptionsBuilder <VisitPopDbContext>()
                            .UseInMemoryDatabase(databaseName: $"EmployeeDepartmentDb{Guid.NewGuid()}")
                            .Options;
            var sieveOptions = Options.Create(new SieveOptions());

            var fakeEmployeeDepartment = new FakeEmployeeDepartment {
            }.Generate();

            //Act
            using (var context = new VisitPopDbContext(dbOptions))
            {
                context.EmployeeDepartments.AddRange(fakeEmployeeDepartment);
                context.SaveChanges();

                var service = new EmployeeDepartmentRepository(context, new SieveProcessor(sieveOptions));

                //Assert
                var EmployeeDepartmentById = service.GetEmployeeDepartment(fakeEmployeeDepartment.Id);
                EmployeeDepartmentById.Id.Should().Be(fakeEmployeeDepartment.Id);
                EmployeeDepartmentById.Name.Should().Be(fakeEmployeeDepartment.Name);
            }
        }
        public async Task GetEmployee_ReturnsSuccessCodeAndResourceWithAccurateFields()
        {
            var fakeEmployee = new FakeEmployeeDepartment().Ignore(d => d.Id).Generate();

            var fakeEmployeeOne = new FakeEmployee {
            }.Ignore(t => t.Id)
            .Ignore(d => d.EmployeeDepartmentId).Generate();
            //fakeEmpleadoOne.DepartamentoEmpleadoId = fakeDepartamento.Id;
            var fakeEmployeeTwo = new FakeEmployee {
            }.Ignore(t => t.Id)
            .Ignore(d => d.EmployeeDepartmentId).Generate();
            //fakeEmpleadoTwo.DepartamentoEmpleadoId = fakeDepartamento.Id;

            var appFactory = _factory;

            using (var scope = appFactory.Services.CreateScope())
            {
                var context = scope.ServiceProvider.GetRequiredService <VisitPopDbContext>();
                context.Database.EnsureCreated();

                context.EmployeeDepartments.AddRange(fakeEmployee);
                context.SaveChanges();

                fakeEmployee = context.EmployeeDepartments.FirstOrDefault();
                fakeEmployeeOne.EmployeeDepartmentId = fakeEmployee.Id;
                fakeEmployeeOne.EmployeeDepartments  = fakeEmployee;
                fakeEmployeeTwo.EmployeeDepartmentId = fakeEmployee.Id;
                fakeEmployeeTwo.EmployeeDepartments  = fakeEmployee;

                //context.TipoPersonas.RemoveRange(context.TipoPersonas);
                context.Employees.AddRange(fakeEmployeeOne, fakeEmployeeTwo);

                context.SaveChanges();
            }

            var client = appFactory.CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });

            var result = await client.GetAsync("api/Employees")
                         .ConfigureAwait(false);

            var responseContent = await result.Content.ReadAsStringAsync()
                                  .ConfigureAwait(false);

            var response = JsonConvert.DeserializeObject <PageListEmployee>(responseContent).Employees;


            // Assert
            result.StatusCode.Should().Be(200);
            response.Should().ContainEquivalentOf(fakeEmployeeOne, options =>
                                                  options.ExcludingMissingMembers());
            response.Should().ContainEquivalentOf(fakeEmployeeTwo, options =>
                                                  options.ExcludingMissingMembers());
        }
        public async Task PostEmployeeReturnsSuccessCodeAndResourceWithAcurrateFields()
        {
            //Arrange

            var client = _factory.CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });

            var fakeDepartment = new FakeEmployeeDepartment().Ignore(d => d.Id).Generate();

            var appFactory = _factory;

            using (var scope = appFactory.Services.CreateScope())
            {
                var context = scope.ServiceProvider.GetRequiredService <VisitPopDbContext>();
                context.Database.EnsureCreated();

                //context.Empleados.RemoveRange(context.Empleados);
                context.EmployeeDepartments.AddRange(fakeDepartment);
                context.SaveChanges();

                fakeDepartment = context.EmployeeDepartments.FirstOrDefault();
            }

            var fakeEmployee = new FakeEmployeeDto().Ignore(d => d.Id).Ignore(d => d.EmployeeDepartmentId).Generate();

            fakeEmployee.EmployeeDepartmentId = fakeDepartment.Id;

            //Act
            var httpResponse = await client.PostAsJsonAsync("api/Employees", fakeEmployee)
                               .ConfigureAwait(false);

            //Assert
            httpResponse.EnsureSuccessStatusCode();

            var stringResponse = await httpResponse.Content.ReadAsStringAsync()
                                 .ConfigureAwait(false);

            var resultDto = JsonConvert.DeserializeObject <EmployeeResponseDto>(stringResponse).Employee;

            httpResponse.StatusCode.Should().Be(201);
            resultDto.FirstName.Should().Be(fakeEmployee.FirstName);
            resultDto.LastName.Should().Be(fakeEmployee.LastName);
            resultDto.DocId.Should().Be(fakeEmployee.DocId);
            resultDto.PhoneNumber.Should().Be(fakeEmployee.PhoneNumber);
            resultDto.EmployeeDepartmentId.Should().Be(fakeEmployee.EmployeeDepartmentId);
            resultDto.EmailAddress.Should().Be(fakeEmployee.EmailAddress);
            //resultDto.DepartamentoEmpleado.Should().Be(fakeEmpleado.DepartamentoEmpleado);
        }
Exemple #4
0
        public async void GetEmployeeDepartmentsAsync_ReturnExpectedPageSize()
        {
            //Arrange
            var dbOptions = new DbContextOptionsBuilder <VisitPopDbContext>()
                            .UseInMemoryDatabase(databaseName: $"EmployeeDepartmentDb{Guid.NewGuid()}")
                            .Options;
            var sieveOptions = Options.Create(new SieveOptions());

            var fakeEmployeeDepartmentOne = new FakeEmployeeDepartment {
            }.Ignore(d => d.Id).Generate();

            fakeEmployeeDepartmentOne.Id = 1;
            var fakeEmployeeDepartmentTwo = new FakeEmployeeDepartment {
            }.Ignore(d => d.Id).Generate();

            fakeEmployeeDepartmentTwo.Id = 2;
            var fakeEmployeeDepartmentThree = new FakeEmployeeDepartment {
            }.Ignore(d => d.Id).Generate();

            fakeEmployeeDepartmentThree.Id = 3;

            //Act
            using (var context = new VisitPopDbContext(dbOptions))
            {
                context.EmployeeDepartments.AddRange(fakeEmployeeDepartmentOne, fakeEmployeeDepartmentTwo, fakeEmployeeDepartmentThree);
                context.SaveChanges();

                var service = new EmployeeDepartmentRepository(context, new SieveProcessor(sieveOptions));

                var EmployeeDepartmentRepo = await service.GetEmployeeDepartmentsAsync(new EmployeeDepartmentParametersDto { PageSize = 2 });

                //Assert
                EmployeeDepartmentRepo.Should()
                .NotBeEmpty()
                .And.HaveCount(2);

                EmployeeDepartmentRepo.Should().ContainEquivalentOf(fakeEmployeeDepartmentOne);
                EmployeeDepartmentRepo.Should().ContainEquivalentOf(fakeEmployeeDepartmentTwo);

                context.Database.EnsureDeleted();
            }
        }
Exemple #5
0
        public async void GetEmployeeDepartmentsAsync_FilterNameListWithExact()
        {
            //Arrange
            var dbOptions = new DbContextOptionsBuilder <VisitPopDbContext>()
                            .UseInMemoryDatabase(databaseName: $"EmployeeDepartmentDb{Guid.NewGuid()}")
                            .Options;
            var sieveOptions = Options.Create(new SieveOptions());

            var fakeEmployeeDepartmentOne = new FakeEmployeeDepartment {
            }.Generate();

            fakeEmployeeDepartmentOne.Name = "alpha";

            var fakeEmployeeDepartmentTwo = new FakeEmployeeDepartment {
            }.Generate();

            fakeEmployeeDepartmentTwo.Name = "bravo";

            var fakeEmployeeDepartmentThree = new FakeEmployeeDepartment {
            }.Generate();

            fakeEmployeeDepartmentThree.Name = "charlie";

            //Act
            using (var context = new VisitPopDbContext(dbOptions))
            {
                context.EmployeeDepartments.AddRange(fakeEmployeeDepartmentOne, fakeEmployeeDepartmentTwo, fakeEmployeeDepartmentThree);
                context.SaveChanges();

                var service = new EmployeeDepartmentRepository(context, new SieveProcessor(sieveOptions));

                var EmployeeDepartmentRepo = await service.GetEmployeeDepartmentsAsync(new EmployeeDepartmentParametersDto { Filters = $"Name == {fakeEmployeeDepartmentTwo.Name}" });

                //Assert
                EmployeeDepartmentRepo.Should()
                .HaveCount(1);

                context.Database.EnsureDeleted();
            }
        }
Exemple #6
0
        public async void GetEmployeeDepartmentsAsync_ListEmployeeDepartmentIdSortedInDescOrder()
        {
            //Arrange
            var dbOptions = new DbContextOptionsBuilder <VisitPopDbContext>()
                            .UseInMemoryDatabase(databaseName: $"EmployeeDepartmentDb{Guid.NewGuid()}")
                            .Options;
            var sieveOptions = Options.Create(new SieveOptions());

            var fakeEmployeeDepartmentOne = new FakeEmployeeDepartment {
            }.Generate();

            fakeEmployeeDepartmentOne.Id = 2;

            var fakeEmployeeDepartmentTwo = new FakeEmployeeDepartment {
            }.Generate();

            fakeEmployeeDepartmentTwo.Id = 1;

            var fakeEmployeeDepartmentThree = new FakeEmployeeDepartment {
            }.Generate();

            fakeEmployeeDepartmentThree.Id = 3;

            //Act
            using (var context = new VisitPopDbContext(dbOptions))
            {
                context.EmployeeDepartments.AddRange(fakeEmployeeDepartmentOne, fakeEmployeeDepartmentTwo, fakeEmployeeDepartmentThree);
                context.SaveChanges();

                var service = new EmployeeDepartmentRepository(context, new SieveProcessor(sieveOptions));

                var EmployeeDepartmentRepo = await service.GetEmployeeDepartmentsAsync(new EmployeeDepartmentParametersDto { SortOrder = "-Id" });

                //Assert
                EmployeeDepartmentRepo.Should()
                .ContainInOrder(fakeEmployeeDepartmentThree, fakeEmployeeDepartmentOne, fakeEmployeeDepartmentTwo);

                context.Database.EnsureDeleted();
            }
        }
        public void DeleteEmployeeDepartment_ReturnsProperCount()
        {
            //Arrange
            var dbOptions = new DbContextOptionsBuilder <VisitPopDbContext>()
                            .UseInMemoryDatabase(databaseName: $"EmployeeDepartmentDb{Guid.NewGuid()}")
                            .Options;
            var sieveOptions = Options.Create(new SieveOptions());

            var fakeEmployeeDepartmentOne = new FakeEmployeeDepartment {
            }.Generate();
            var fakeEmployeeDepartmentTwo = new FakeEmployeeDepartment {
            }.Generate();
            var fakeEmployeeDepartmentThree = new FakeEmployeeDepartment {
            }.Generate();

            //Act
            using (var context = new VisitPopDbContext(dbOptions))
            {
                context.EmployeeDepartments.AddRange(fakeEmployeeDepartmentOne, fakeEmployeeDepartmentTwo, fakeEmployeeDepartmentThree);

                var service = new EmployeeDepartmentRepository(context, new SieveProcessor(sieveOptions));
                service.DeleteEmployeeDepartment(fakeEmployeeDepartmentTwo);

                context.SaveChanges();

                //Assert
                var EmployeeDepartmentList = context.EmployeeDepartments.ToList();

                EmployeeDepartmentList.Should()
                .NotBeEmpty()
                .And.HaveCount(2);

                EmployeeDepartmentList.Should().ContainEquivalentOf(fakeEmployeeDepartmentOne);
                EmployeeDepartmentList.Should().ContainEquivalentOf(fakeEmployeeDepartmentThree);
                Assert.DoesNotContain(EmployeeDepartmentList, a => a == fakeEmployeeDepartmentTwo);

                context.Database.EnsureDeleted();
            }
        }
Exemple #8
0
        public async Task PatchEmployeeDepartment204AndFieldsWereSuccessfullyUpdated()
        {
            //Arrange
            var mapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <EmployeeDepartmentProfile>();
            }).CreateMapper();

            var lookupVal = "Easily Identified Value For Test"; // don't know the id at this scope, so need to have another value to lookup
            var fakeEmployeeDepartmentOne = new FakeEmployeeDepartment {
            }.Ignore(d => d.Id).Generate();

            var expectedFinalObject = mapper.Map <EmployeeDepartmentDto>(fakeEmployeeDepartmentOne);

            expectedFinalObject.Name = lookupVal;

            var appFactory = _factory;

            using (var scope = appFactory.Services.CreateScope())
            {
                var context = scope.ServiceProvider.GetRequiredService <VisitPopDbContext>();
                context.Database.EnsureCreated();

                context.EmployeeDepartments.RemoveRange(context.EmployeeDepartments);
                context.EmployeeDepartments.AddRange(fakeEmployeeDepartmentOne);
                context.SaveChanges();
            }

            var client = appFactory.CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });

            var patchDoc = new JsonPatchDocument <EmployeeDepartmentForUpdateDto>();

            patchDoc.Replace(a => a.Name, lookupVal);
            var serializedEmployeeDepartmentToUpdate = JsonConvert.SerializeObject(patchDoc);

            // Act
            // get the value i want to update. assumes I can use sieve for this field. if this is not an option, just use something else
            var getResult = await client.GetAsync($"api/EmployeeDepartments/?filters=Name=={fakeEmployeeDepartmentOne.Name}")
                            .ConfigureAwait(false);

            var getResponseContent = await getResult.Content.ReadAsStringAsync()
                                     .ConfigureAwait(false);

            //var getResponse = JsonConvert.DeserializeObject<IEnumerable<DepartamentoEmpleadoDto>>(getResponseContent);
            var getResponse = JsonConvert.DeserializeObject <PageListEmployeeDepartment>(getResponseContent).EmployeeDepartments;

            var id = getResponse.FirstOrDefault().Id;

            expectedFinalObject.Id = id;

            // patch it
            var method       = new HttpMethod("PATCH");
            var patchRequest = new HttpRequestMessage(method, $"api/EmployeeDepartments/{id}")
            {
                Content = new StringContent(serializedEmployeeDepartmentToUpdate,
                                            Encoding.Unicode, "application/json")
            };
            var patchResult = await client.SendAsync(patchRequest)
                              .ConfigureAwait(false);

            // get it again to confirm updates
            var checkResult = await client.GetAsync($"api/EmployeeDepartments/{id}")
                              .ConfigureAwait(false);

            var checkResponseContent = await checkResult.Content.ReadAsStringAsync()
                                       .ConfigureAwait(false);

            //var checkResponse = JsonConvert.DeserializeObject<DepartamentoEmpleadoDto>(checkResponseContent);
            var checkResponse = JsonConvert.DeserializeObject <EmployeeDepartmentResponseDto>(checkResponseContent).EmployeeDepartment;

            // Assert
            patchResult.StatusCode.Should().Be(204);
            checkResponse.Should().BeEquivalentTo(expectedFinalObject, options =>
                                                  options.ExcludingMissingMembers());
        }
Exemple #9
0
        public async Task PutEmployeeDepartmentReturnsBodyAndFieldsWereSuccessfullyUpdated()
        {
            //Arrange
            var mapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <EmployeeDepartmentProfile>();
            }).CreateMapper();

            var fakeEmployeeDepartmentOne = new FakeEmployeeDepartment {
            }.Ignore(d => d.Id).Generate();
            var expectedFinalObject = mapper.Map <EmployeeDepartmentDto>(fakeEmployeeDepartmentOne);

            expectedFinalObject.Name = "Easily Identified Value For Test";

            var appFactory = _factory;

            using (var scope = appFactory.Services.CreateScope())
            {
                var context = scope.ServiceProvider.GetRequiredService <VisitPopDbContext>();
                context.Database.EnsureCreated();

                //context.DepartamentoEmpleados.RemoveRange(context.DepartamentoEmpleados);
                context.EmployeeDepartments.AddRange(fakeEmployeeDepartmentOne);
                context.SaveChanges();
            }

            var client = appFactory.CreateClient(new WebApplicationFactoryClientOptions
            {
                AllowAutoRedirect = false
            });

            var serializedEmployeeDepartmentToUpdate = JsonConvert.SerializeObject(expectedFinalObject);

            // Act
            // get the value i want to update. assumes I can use sieve for this field. if this is not an option, just use something else
            var getResult = await client.GetAsync($"api/EmployeeDepartments/?filters=Name=={fakeEmployeeDepartmentOne.Name}")
                            .ConfigureAwait(false);

            var getResponseContent = await getResult.Content.ReadAsStringAsync()
                                     .ConfigureAwait(false);

            //var getResponse = JsonConvert.DeserializeObject<IEnumerable<DepartamentoEmpleadoDto>>(getResponseContent);
            var getResponse = JsonConvert.DeserializeObject <PageListEmployeeDepartment>(getResponseContent).EmployeeDepartments;

            var id = getResponse.FirstOrDefault().Id;

            expectedFinalObject.Id = id;

            // put it
            var patchResult = await client.PutAsJsonAsync($"api/EmployeeDepartments/{id}", expectedFinalObject)
                              .ConfigureAwait(false);

            // get it again to confirm updates
            var checkResult = await client.GetAsync($"api/EmployeeDepartments/{id}")
                              .ConfigureAwait(false);

            var checkResponseContent = await checkResult.Content.ReadAsStringAsync()
                                       .ConfigureAwait(false);

            //var checkResponse = JsonConvert.DeserializeObject<DepartamentoEmpleadoDto>(checkResponseContent);
            var checkResponse = JsonConvert.DeserializeObject <EmployeeDepartmentResponseDto>(checkResponseContent).EmployeeDepartment;

            // Assert
            patchResult.StatusCode.Should().Be(204);
            checkResponse.Should().BeEquivalentTo(expectedFinalObject, options =>
                                                  options.ExcludingMissingMembers());
        }