Пример #1
0
        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);
            }
        }