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); }
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(); } }
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(); } }
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(); } }
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()); }
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()); }