Пример #1
0
        public async Task GetChecklist_AllWarningsWithNoDataFiles()
        {
            var publication = new Publication();
            var release     = new Release
            {
                Publication = publication,
            };

            var contextId = Guid.NewGuid().ToString();

            await using (var context = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                await context.AddRangeAsync(release);

                await context.SaveChangesAsync();
            }

            await using (var context = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                var fileRepository = new Mock <IFileRepository>();

                fileRepository
                .Setup(r => r.ListDataFiles(release.Id))
                .ReturnsAsync(new List <File>());

                fileRepository
                .Setup(r => r.ListReplacementDataFiles(release.Id))
                .ReturnsAsync(new List <File>());

                var metaGuidanceService = new Mock <IMetaGuidanceService>();

                metaGuidanceService
                .Setup(s => s.Validate(release.Id))
                .ReturnsAsync(ValidationActionResult(PublicMetaGuidanceRequired));

                var service = BuildReleaseChecklistService(
                    context,
                    fileRepository: fileRepository.Object,
                    metaGuidanceService: metaGuidanceService.Object
                    );
                var checklist = await service.GetChecklist(release.Id);

                Assert.True(checklist.IsRight);

                Assert.False(checklist.Right.Valid);

                Assert.Equal(4, checklist.Right.Warnings.Count);
                Assert.Equal(NoMethodology, checklist.Right.Warnings[0].Code);
                Assert.Equal(NoNextReleaseDate, checklist.Right.Warnings[1].Code);
                Assert.Equal(NoDataFiles, checklist.Right.Warnings[2].Code);
                Assert.Equal(NoPublicPreReleaseAccessList, checklist.Right.Warnings[3].Code);
            }
        }
Пример #2
0
        public async Task GetChecklist_AllErrors()
        {
            var publication = new Publication
            {
                Methodology = new Methodology()
            };
            var originalRelease = new Release
            {
                Publication = publication,
                Version     = 0
            };
            var release = new Release
            {
                Publication     = publication,
                PreviousVersion = originalRelease,
                Version         = 1,
            };

            var contextId = Guid.NewGuid().ToString();

            await using (var context = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                await context.AddRangeAsync(release, originalRelease);

                await context.SaveChangesAsync();
            }

            await using (var context = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                var fileRepository = new Mock <IFileRepository>();

                fileRepository
                .Setup(r => r.ListDataFiles(release.Id))
                .ReturnsAsync(new List <File>());

                fileRepository
                .Setup(r => r.ListReplacementDataFiles(release.Id))
                .ReturnsAsync(
                    new List <File>
                {
                    new File()
                }
                    );

                var metaGuidanceService = new Mock <IMetaGuidanceService>();

                metaGuidanceService
                .Setup(s => s.Validate(release.Id))
                .ReturnsAsync(ValidationActionResult(PublicMetaGuidanceRequired));

                var tableStorageService = MockTableStorageService(
                    new List <DatafileImport>
                {
                    new DatafileImport()
                }
                    );

                var service = BuildReleaseChecklistService(
                    context,
                    fileRepository: fileRepository.Object,
                    metaGuidanceService: metaGuidanceService.Object,
                    tableStorageService: tableStorageService.Object
                    );
                var checklist = await service.GetChecklist(release.Id);

                Assert.True(checklist.IsRight);

                Assert.False(checklist.Right.Valid);

                Assert.Equal(5, checklist.Right.Errors.Count);

                Assert.Equal(DataFileImportsMustBeCompleted, checklist.Right.Errors[0].Code);
                Assert.Equal(DataFileReplacementsMustBeCompleted, checklist.Right.Errors[1].Code);

                var methodologyMustBeApprovedError =
                    Assert.IsType <MethodologyMustBeApprovedError>(checklist.Right.Errors[2]);
                Assert.Equal(MethodologyMustBeApproved, methodologyMustBeApprovedError.Code);
                Assert.Equal(publication.MethodologyId, methodologyMustBeApprovedError.MethodologyId);

                Assert.Equal(PublicMetaGuidanceRequired, checklist.Right.Errors[3].Code);
                Assert.Equal(ReleaseNoteRequired, checklist.Right.Errors[4].Code);
            }
        }
Пример #3
0
        public async Task GetChecklist_FullyValid()
        {
            var publication = new Publication
            {
                Methodology = new Methodology
                {
                    Status = MethodologyStatus.Approved
                }
            };

            var originalRelease = new Release
            {
                Publication = publication,
                Version     = 0
            };
            var release = new Release
            {
                Publication          = publication,
                PreviousVersion      = originalRelease,
                Version              = 1,
                MetaGuidance         = "Test meta guidance",
                PreReleaseAccessList = "Test access list",
                NextReleaseDate      = new PartialDate
                {
                    Month = "12",
                    Year  = "2021"
                },
                Updates = new List <Update>
                {
                    new Update
                    {
                        Reason  = "Test reason 1",
                        Release = originalRelease
                    },
                    new Update
                    {
                        Reason = "Test reason 2"
                    }
                },
            };

            var contextId = Guid.NewGuid().ToString();

            await using (var context = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                await context.AddRangeAsync(release, originalRelease);

                await context.SaveChangesAsync();
            }

            await using (var context = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                var subject = new Subject
                {
                    Id = Guid.NewGuid()
                };

                var fileRepository = new Mock <IFileRepository>();

                fileRepository
                .Setup(r => r.ListDataFiles(release.Id))
                .ReturnsAsync(
                    new List <File>
                {
                    new File
                    {
                        Id        = Guid.NewGuid(),
                        Filename  = "test-file-1.csv",
                        Type      = FileType.Data,
                        Release   = release,
                        ReleaseId = release.Id,
                        SubjectId = subject.Id,
                    },
                }
                    );

                fileRepository
                .Setup(r => r.ListReplacementDataFiles(release.Id))
                .ReturnsAsync(new List <File>());

                var metaGuidanceService = new Mock <IMetaGuidanceService>();

                metaGuidanceService
                .Setup(s => s.Validate(release.Id))
                .ReturnsAsync(Unit.Instance);

                var footnoteRepository = new Mock <IFootnoteRepository>();

                footnoteRepository
                .Setup(r => r.GetSubjectsWithNoFootnotes(release.Id))
                .ReturnsAsync(new List <Subject>());

                var dataBlockService = new Mock <IDataBlockService>();

                dataBlockService
                .Setup(s => s.List(release.Id))
                .ReturnsAsync(
                    new List <DataBlockViewModel>
                {
                    new DataBlockViewModel
                    {
                        HighlightName = "Test highlight name"
                    },
                }
                    );

                var service = BuildReleaseChecklistService(
                    context,
                    metaGuidanceService: metaGuidanceService.Object,
                    fileRepository: fileRepository.Object,
                    footnoteRepository: footnoteRepository.Object,
                    dataBlockService: dataBlockService.Object
                    );
                var checklist = await service.GetChecklist(release.Id);

                Assert.True(checklist.IsRight);

                Assert.Empty(checklist.Right.Errors);
                Assert.Empty(checklist.Right.Warnings);
                Assert.True(checklist.Right.Valid);
            }
        }
Пример #4
0
        public async Task GetChecklist_AllWarningsWithDataFiles()
        {
            var publication = new Publication();
            var release     = new Release
            {
                Publication = publication,
            };

            var contextId = Guid.NewGuid().ToString();

            await using (var context = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                await context.AddRangeAsync(release);

                await context.SaveChangesAsync();
            }

            await using (var context = ContentDbUtils.InMemoryContentDbContext(contextId))
            {
                var subject = new Subject
                {
                    Id = Guid.NewGuid()
                };
                var otherSubject = new Subject
                {
                    Id = Guid.NewGuid(),
                };

                var fileRepository = new Mock <IFileRepository>();

                fileRepository
                .Setup(r => r.ListDataFiles(release.Id))
                .ReturnsAsync(
                    new List <File>
                {
                    new File
                    {
                        Id        = Guid.NewGuid(),
                        Filename  = "test-file-1.csv",
                        Type      = FileType.Data,
                        Release   = release,
                        ReleaseId = release.Id,
                        SubjectId = subject.Id
                    },
                    new File
                    {
                        Id        = Guid.NewGuid(),
                        Filename  = "test-file-2.csv",
                        Type      = FileType.Data,
                        Release   = release,
                        ReleaseId = release.Id,
                        SubjectId = otherSubject.Id
                    }
                }
                    );

                var metaGuidanceService = new Mock <IMetaGuidanceService>();

                metaGuidanceService
                .Setup(s => s.Validate(release.Id))
                .ReturnsAsync(ValidationActionResult(PublicMetaGuidanceRequired));

                var footnoteRepository = new Mock <IFootnoteRepository>();

                footnoteRepository
                .Setup(r => r.GetSubjectsWithNoFootnotes(release.Id))
                .ReturnsAsync(
                    new List <Subject>
                {
                    subject,
                }
                    );

                fileRepository
                .Setup(r => r.ListReplacementDataFiles(release.Id))
                .ReturnsAsync(new List <File>());

                var dataBlockService = new Mock <IDataBlockService>();

                dataBlockService
                .Setup(s => s.List(release.Id))
                .ReturnsAsync(
                    new List <DataBlockViewModel>
                {
                    new DataBlockViewModel(),
                    new DataBlockViewModel(),
                }
                    );

                var service = BuildReleaseChecklistService(
                    context,
                    fileRepository: fileRepository.Object,
                    metaGuidanceService: metaGuidanceService.Object,
                    footnoteRepository: footnoteRepository.Object,
                    dataBlockService: dataBlockService.Object
                    );
                var checklist = await service.GetChecklist(release.Id);

                Assert.True(checklist.IsRight);

                Assert.False(checklist.Right.Valid);

                Assert.Equal(5, checklist.Right.Warnings.Count);
                Assert.Equal(NoMethodology, checklist.Right.Warnings[0].Code);
                Assert.Equal(NoNextReleaseDate, checklist.Right.Warnings[1].Code);

                var noFootnotesWarning = Assert.IsType <NoFootnotesOnSubjectsWarning>(checklist.Right.Warnings[2]);
                Assert.Equal(NoFootnotesOnSubjects, noFootnotesWarning.Code);
                Assert.Equal(1, noFootnotesWarning.TotalSubjects);

                Assert.Equal(NoTableHighlights, checklist.Right.Warnings[3].Code);
                Assert.Equal(NoPublicPreReleaseAccessList, checklist.Right.Warnings[4].Code);
            }
        }