public async Task ListPublicationContributors() { var publication = new Publication(); var release1 = new Release { Publication = publication, ReleaseName = "2000", TimePeriodCoverage = TimeIdentifier.AcademicYear, }; var release2Original = new Release { Publication = publication, ReleaseName = "2001", TimePeriodCoverage = TimeIdentifier.AcademicYear, }; var release2Amendment = new Release { Publication = publication, ReleaseName = "2001", TimePeriodCoverage = TimeIdentifier.AcademicYear, PreviousVersion = release2Original, }; var user1 = new User { FirstName = "User1", LastName = "One", Email = "*****@*****.**", }; var user1ReleaseRole1 = new UserReleaseRole { User = user1, Release = release1, Role = Contributor, }; var user2 = new User { FirstName = "User2", LastName = "Two", Email = "*****@*****.**", }; var user2ReleaseRole1 = new UserReleaseRole { User = user2, Release = release2Amendment, Role = Contributor, }; var user3 = new User(); var user3ReleaseRoleIgnored1 = new UserReleaseRole // Ignored because different publication { User = user3, Release = new Release { Publication = new Publication() }, Role = Contributor, }; var user3ReleaseRoleIgnored2 = new UserReleaseRole // Ignored because not Contributor role { User = user3, Release = release1, Role = PrereleaseViewer, }; var user3ReleaseRoleIgnored3 = new UserReleaseRole // Ignored because not latest version of release { User = user3, Release = release2Original, Role = Contributor, Deleted = DateTime.UtcNow, }; var contentDbContextId = Guid.NewGuid().ToString(); await using (var contentDbContext = InMemoryApplicationDbContext(contentDbContextId)) { await contentDbContext.AddRangeAsync(release1, release2Original, release2Amendment, user1ReleaseRole1, user2ReleaseRole1, user3ReleaseRoleIgnored1, user3ReleaseRoleIgnored2, user3ReleaseRoleIgnored3); await contentDbContext.SaveChangesAsync(); } await using (var contentDbContext = InMemoryApplicationDbContext(contentDbContextId)) { var service = SetupReleasePermissionService(contentDbContext); var result = await service.ListPublicationContributors(publication.Id); var viewModel = result.AssertRight(); Assert.Equal(2, viewModel.Count); Assert.Equal(user1.Id, viewModel[0].UserId); Assert.Equal(user1.DisplayName, viewModel[0].UserDisplayName); Assert.Equal(user1.Email, viewModel[0].UserEmail); Assert.Equal(user2.Id, viewModel[1].UserId); Assert.Equal(user2.DisplayName, viewModel[1].UserDisplayName); Assert.Equal(user2.Email, viewModel[1].UserEmail); } }
public async Task ListUserReleaseRolesByPublication() { var release1 = new Release { Id = Guid.NewGuid(), }; var release2 = new Release { Id = Guid.NewGuid(), }; var publication = new Publication { Id = Guid.NewGuid(), Releases = ListOf(release1, release2), }; var releaseIgnored1 = new Release // Ignored because different publication { Id = Guid.NewGuid(), PublicationId = Guid.NewGuid(), }; var userReleaseRole1 = new UserReleaseRole { User = new User { Id = Guid.NewGuid() }, Release = release1, Role = Contributor, }; var userReleaseRole2 = new UserReleaseRole { User = new User { Id = Guid.NewGuid() }, Release = release1, Role = Contributor, }; var userReleaseRole3 = new UserReleaseRole { User = new User { Id = Guid.NewGuid() }, Release = release2, Role = Contributor, }; var userReleaseRoleIgnored1 = new UserReleaseRole // Ignored because not Contributor role { User = new User { Id = Guid.NewGuid() }, Release = release1, Role = Lead, }; var userReleaseRoleIgnored2 = new UserReleaseRole // Ignored because Deleted set { User = new User { Id = Guid.NewGuid() }, Release = release1, Role = Contributor, Deleted = DateTime.UtcNow, }; var userReleaseRoleIgnored3 = new UserReleaseRole // Ignored due to release under different publication { User = new User { Id = Guid.NewGuid() }, Release = releaseIgnored1, Role = Contributor, }; var contentDbContextId = Guid.NewGuid().ToString(); await using (var contentDbContext = InMemoryApplicationDbContext(contentDbContextId)) { await contentDbContext.AddRangeAsync( publication, userReleaseRole1, userReleaseRole2, userReleaseRole3, userReleaseRoleIgnored1, userReleaseRoleIgnored2, userReleaseRoleIgnored3); await contentDbContext.SaveChangesAsync(); } await using (var contentDbContext = InMemoryApplicationDbContext(contentDbContextId)) { var service = SetupUserReleaseRoleService(contentDbContext); var userReleaseRoles = await service.ListUserReleaseRolesByPublication(Contributor, publication.Id); Assert.Equal(3, userReleaseRoles.Count); Assert.Equal(userReleaseRole1.Id, userReleaseRoles[0].Id); Assert.Equal(userReleaseRole1.UserId, userReleaseRoles[0].UserId); Assert.Equal(userReleaseRole1.ReleaseId, userReleaseRoles[0].ReleaseId); Assert.Equal(userReleaseRole1.Role, userReleaseRoles[0].Role); Assert.Equal(userReleaseRole2.Id, userReleaseRoles[1].Id); Assert.Equal(userReleaseRole2.UserId, userReleaseRoles[1].UserId); Assert.Equal(userReleaseRole2.ReleaseId, userReleaseRoles[1].ReleaseId); Assert.Equal(userReleaseRole2.Role, userReleaseRoles[1].Role); Assert.Equal(userReleaseRole3.Id, userReleaseRoles[2].Id); Assert.Equal(userReleaseRole3.UserId, userReleaseRoles[2].UserId); Assert.Equal(userReleaseRole3.ReleaseId, userReleaseRoles[2].ReleaseId); Assert.Equal(userReleaseRole3.Role, userReleaseRoles[2].Role); } }