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