public async Task Should_Create_With_Minimum_Fields_Defined() { // Arrange var createDto = new ProjectCreateDto { Title = "New Project", ShortTitle = "Shorty", Code = "123XYZ,", }; var expectedDto = new ProjectDto { Title = createDto.Title, ShortTitle = createDto.ShortTitle, Code = createDto.Code, IsCompleted = false, CreatedBy = _staff.DisplayName, CreatedAt = FakeDateTime.UtcNow }; // Act HttpResponseMessage responseMessage = await _authenticatedServer .CreateClient() .AuthenticateWith(_staff) .PostAsync(ApiEndpoints.ProjectsController.Post(), BuildStringContent(createDto)); // Assert responseMessage.StatusCode.Should().Be(HttpStatusCode.Created); ProjectDto result = await DeserializeResponseMessageAsync <ProjectDto>(responseMessage); result.Should().BeEquivalentTo(expectedDto, opt => opt.Excluding(r => r.Id)); result.Id.Should().NotBeEmpty(); responseMessage.Headers.Location.AbsolutePath.Should().Be($"/{ApiEndpoints.ProjectsController.Get(result.Id)}"); }
private async Task CheckProjectsAddedToDatabase(ProjectDto project, int expectedCount) { var context = GetService <TimeTrackingDbContext>(); var projectInDatabase = await context.Projects.LastAsync(); context.Projects.Should().HaveCount(expectedCount); project.Should().BeEquivalentTo(projectInDatabase, opt => opt.ExcludingMissingMembers()); }
public void Should_Map() { // Arrange Domain.Entities.Project project = FakeProjects.RockingXMas; project.Urls.Remove(project.Urls.First()); ProjectDto expectedDto = ProjectDtoData.RockingXMasForPerformer; // Act ProjectDto dto = _mapper.Map <ProjectDto>(project); // Assert dto.Should().BeEquivalentTo(expectedDto); }
public async Task Should_Create_With_All_Fields_Defined() { // Arrange var createDto = new ProjectCreateDto { Title = "New Project", ShortTitle = "ShortName", Description = "New project description", Code = "0815XY", TypeId = SelectValueMappingSeedData.ProjectTypeMappings[0].Id, GenreId = SelectValueMappingSeedData.ProjectGenreMappings[0].Id, StartDate = new DateTime(2021, 01, 01), EndDate = new DateTime(2021, 01, 31), StateId = SelectValueMappingSeedData.ProjectStateMappings[0].Id, ParentId = ProjectSeedData.HoorayForHollywood.Id, }; var expectedDto = new ProjectDto { Title = createDto.Title, ShortTitle = createDto.ShortTitle, Description = createDto.Description, Code = createDto.Code, TypeId = createDto.TypeId, GenreId = createDto.GenreId, StartDate = createDto.StartDate, EndDate = createDto.EndDate, StateId = createDto.StateId, ParentId = createDto.ParentId, IsCompleted = false, CreatedBy = _staff.DisplayName, CreatedAt = FakeDateTime.UtcNow }; // Act HttpResponseMessage responseMessage = await _authenticatedServer .CreateClient() .AuthenticateWith(_staff) .PostAsync(ApiEndpoints.ProjectsController.Post(), BuildStringContent(createDto)); // Assert responseMessage.StatusCode.Should().Be(HttpStatusCode.Created); ProjectDto result = await DeserializeResponseMessageAsync <ProjectDto>(responseMessage); result.Should().BeEquivalentTo(expectedDto, opt => opt.Excluding(r => r.Id)); result.Id.Should().NotBeEmpty(); responseMessage.Headers.Location.AbsolutePath.Should().Be($"/{ApiEndpoints.ProjectsController.Get(result.Id)}"); }
public async Task Should_Get_By_Id() { // Arrange ProjectDto expectedProject = ProjectDtoData.HoorayForHollywood; // Act HttpResponseMessage responseMessage = await _authenticatedServer .CreateClient() .AuthenticateWith(_performer) .GetAsync(ApiEndpoints.ProjectsController.Get(expectedProject.Id)); // Assert responseMessage.StatusCode.Should().Be(HttpStatusCode.OK); ProjectDto result = await DeserializeResponseMessageAsync <ProjectDto>(responseMessage); result.Should().BeEquivalentTo(expectedProject); }
public async Task Should_Modify() { // Arrange Project projectToModify = ProjectSeedData.HoorayForHollywood; HttpClient client = _authenticatedServer .CreateClient() .AuthenticateWith(_staff); var modifyDto = new ProjectModifyBodyDto { Title = "changed " + projectToModify.Title, ShortTitle = "changed " + projectToModify.ShortTitle, Description = "changed " + projectToModify.Description, Code = "X-" + projectToModify.Code, TypeId = SelectValueMappingSeedData.ProjectTypeMappings[2].Id, GenreId = SelectValueMappingSeedData.ProjectGenreMappings[2].Id, StartDate = new DateTime(2021, 02, 02), EndDate = new DateTime(2021, 02, 28), StateId = SelectValueMappingSeedData.ProjectStateMappings[2].Id, ParentId = ProjectSeedData.RockingXMas.Id }; // Act HttpResponseMessage responseMessage = await client .PutAsync(ApiEndpoints.ProjectsController.Put(projectToModify.Id), BuildStringContent(modifyDto)); // Assert responseMessage.StatusCode.Should().Be(HttpStatusCode.NoContent); // check now, if modification really did make it into the database. Fetch the (now modified) project again via GetById // Act responseMessage = await client .GetAsync(ApiEndpoints.ProjectsController.Get(projectToModify.Id)); // Assert responseMessage.StatusCode.Should().Be(HttpStatusCode.OK); ProjectDto result = await DeserializeResponseMessageAsync <ProjectDto>(responseMessage); result.Should().BeEquivalentTo(modifyDto); result.Id.Should().Be(projectToModify.Id); result.ModifiedBy.Should().Be(_staff.DisplayName); result.ModifiedAt.Should().Be(FakeDateTime.UtcNow); }