private Project SetUpFullProject(string curtinId)
        {
            var dmp = Builder <DataManagementPlan> .CreateNew()
                      .With(o => o.ExistingDataDetail = Builder <ExistingDataDetail> .CreateNew()
                                                        .With(q => q.UseExistingData        = PickHelper.RandomBoolean())
                                                        .And(q => q.ExistingDataAccessTypes = PickHelper.RandomEnumsExcept(ExistingDataAccessTypes.None))
                                                        .Build())
                      .And(o => o.BackupPolicy  = Builder <BackupPolicy> .CreateNew().Build())
                      .And(o => o.NewDataDetail = Builder <NewDataDetail> .CreateNew()
                                                  .With(q => q.DataOwners = PickHelper.RandomEnumsExcept(DataOwners.None))
                                                  .Build())
                      .And(o => o.DataRelationshipDetail = Builder <DataRelationshipDetail> .CreateNew()
                                                           .With(q => q.RelationshipBetweenExistingAndNewData = PickHelper.RandomEnumExcept(DataRelationship.None))
                                                           .Build())
                      .And(o => o.DataDocumentation = Builder <DataDocumentation> .CreateNew()
                                                      .Build())
                      .And(o => o.Ethic = Builder <Ethic> .CreateNew()
                                          .With(q => q.EthicRequiresClearance = PickHelper.RandomBoolean())
                                          .Build())
                      .And(o => o.Confidentiality = Builder <Confidentiality> .CreateNew()
                                                    .With(q => q.IsSensitive = PickHelper.RandomBoolean())
                                                    .Build())
                      .And(o => o.DataStorage = Builder <DataStorage> .CreateNew()
                                                .With(q => q.InstitutionalStorageTypes = PickHelper.RandomEnumExcept(InstitutionalStorageTypes.ProjectStorageSpace))
                                                .And(q => q.ExternalStorageTypes       = PickHelper.RandomEnumExcept(ExternalStorageTypes.None))
                                                .And(q => q.PersonalStorageTypes       = PickHelper.RandomEnumExcept(PersonalStorageTypes.None))
                                                .And(q => q.MaxDataSize    = PickHelper.RandomEnumExcept(MaxDataSize.None))
                                                .And(q => q.VersionControl = PickHelper.RandomEnumsExcept(VersionControl.None))
                                                .Build())
                      .And(o => o.DataRetention = Builder <DataRetention> .CreateNew()
                                                  .With(q => q.DataRetentionLocations       = PickHelper.RandomEnumExcept(DataRetentionLocations.None))
                                                  .And(q => q.DataRetentionResponsibilities = PickHelper.RandomEnumExcept(DataResponsibilities.None))
                                                  .And(q => q.DataRetentionPeriod           = PickHelper.RandomEnumExcept <DataRetentionPeriod>())
                                                  .Build())
                      .And(o => o.DataSharing = Builder <DataSharing> .CreateNew()
                                                .With(q => q.DataSharingAvailability    = PickHelper.RandomEnumExcept <DataSharingAvailability>())
                                                .And(q => q.DataSharingAvailabilityDate = DateTime.Today.AddYears(1))
                                                .And(q => q.ShareAccess       = PickHelper.RandomEnumExcept(ShareAccess.NoAccess))
                                                .And(q => q.DataLicensingType = PickHelper.RandomEnumExcept <DataLicensingType>())
                                                .Build())
                      .Build();

            var projectParties = Builder <ProjectParty> .CreateListOfSize(5)
                                 .TheFirst(1)
                                 .With(q => q.Party       = Builder <Party> .CreateNew().With(r => r.UserId = curtinId).Build())
                                 .And(q => q.Relationship = ProjectRelationship.PrincipalInvestigator)
                                 .TheLast(4)
                                 .With(q => q.Party       = Builder <Party> .CreateNew().Build())
                                 .And(q => q.Relationship = PickHelper.RandomEnumExcept(ProjectRelationship.None, ProjectRelationship.PrincipalInvestigator))
                                 .Build();

            var project = Builder <Project> .CreateNew()
                          .With(o => o.DataManagementPlan = dmp)
                          .And(o => o.Title = "Feeding habits of polarbears (2011)")
                          .And(o => o.ProvisioningStatus = PickHelper.RandomEnumExcept <ProvisioningStatus>())
                          .Do(o => o.Parties.AddRange(projectParties))
                          .Build();

            return(project);
        }
        private Project SetUpFullProjectWithAuthentication(string userId = "XX12345")
        {
            CreateUser(userId);
            var dmp = Builder <DataManagementPlan> .CreateNew()
                      .With(o => o.ExistingDataDetail = Builder <ExistingDataDetail> .CreateNew()
                                                        .With(q => q.UseExistingData        = PickHelper.RandomBoolean())
                                                        .And(q => q.ExistingDataAccessTypes = PickHelper.RandomEnumsExcept(ExistingDataAccessTypes.None))
                                                        .Build())
                      .And(o => o.NewDataDetail = Builder <NewDataDetail> .CreateNew()
                                                  .With(q => q.DataOwners = PickHelper.RandomEnumsExcept(DataOwners.None))
                                                  .Build())
                      .And(o => o.DataRelationshipDetail = Builder <DataRelationshipDetail> .CreateNew()
                                                           .With(q => q.RelationshipBetweenExistingAndNewData = PickHelper.RandomEnumExcept(DataRelationship.None))
                                                           .Build())
                      .And(o => o.DataDocumentation = Builder <DataDocumentation> .CreateNew()
                                                      .Build())
                      .And(o => o.Ethic = Builder <Ethic> .CreateNew()
                                          .With(q => q.EthicRequiresClearance = PickHelper.RandomBoolean())
                                          .Build())
                      .And(o => o.Confidentiality = Builder <Confidentiality> .CreateNew()
                                                    .With(q => q.IsSensitive = PickHelper.RandomBoolean())
                                                    .Build())
                      .And(o => o.DataStorage = Builder <DataStorage> .CreateNew()
                                                .With(q => q.InstitutionalStorageTypes = PickHelper.RandomEnumExcept(InstitutionalStorageTypes.ProjectStorageSpace))
                                                .And(q => q.ExternalStorageTypes       = PickHelper.RandomEnumExcept(ExternalStorageTypes.None))
                                                .And(q => q.PersonalStorageTypes       = PickHelper.RandomEnumExcept(PersonalStorageTypes.None))
                                                .And(q => q.MaxDataSize    = PickHelper.RandomEnumExcept(MaxDataSize.None))
                                                .And(q => q.VersionControl = PickHelper.RandomEnumsExcept(VersionControl.None))
                                                .Build())
                      .And(o => o.DataRetention = Builder <DataRetention> .CreateNew()
                                                  .With(q => q.DataRetentionLocations       = PickHelper.RandomEnumExcept(DataRetentionLocations.None))
                                                  .And(q => q.DataRetentionResponsibilities = PickHelper.RandomEnumExcept(DataResponsibilities.None))
                                                  .And(q => q.DataRetentionPeriod           = PickHelper.RandomEnumExcept <DataRetentionPeriod>())
                                                  .And(q => q.DepositToRepository           = PickHelper.RandomBoolean())
                                                  .Build())
                      .And(o => o.DataSharing = Builder <DataSharing> .CreateNew()
                                                .With(q => q.DataSharingAvailability    = PickHelper.RandomEnumExcept <DataSharingAvailability>())
                                                .And(q => q.DataSharingAvailabilityDate = DateTime.Today.AddYears(1))
                                                .And(q => q.ShareAccess       = PickHelper.RandomEnumExcept(ShareAccess.NoAccess))
                                                .And(q => q.DataLicensingType = PickHelper.RandomEnumExcept <DataLicensingType>())
                                                .Build())
                      .Build();


            var project = Builder <Project> .CreateNew()
                          .With(o => o.DataManagementPlan = dmp)
                          .And(o => o.ProvisioningStatus  = PickHelper.RandomEnumExcept <ProvisioningStatus>(ProvisioningStatus.Error, ProvisioningStatus.TimeOut))
                          .Do(o => o.Parties.Add(Builder <ProjectParty> .CreateNew()
                                                 .With(q => q.Party       = Builder <Party> .CreateNew().With(r => r.UserId = userId).Build())
                                                 .And(q => q.Relationship = ProjectRelationship.PrincipalInvestigator)
                                                 .Build()))
                          .Build();

            project.Parties.Do(o => o.Project = project);
            _projectRepository.GetByDataManagementPlanId(project.DataManagementPlan.Id).Returns(project);

            return(project);
        }
Пример #3
0
        public void Generate_Datatable_from_DataManagementPlans()
        {
            const string userId         = "GA37493";
            var          projectParties = Builder <ProjectParty> .CreateListOfSize(5)
                                          .TheFirst(1)
                                          .With(q => q.Party       = Builder <Party> .CreateNew().With(r => r.UserId = userId).Build())
                                          .And(q => q.Relationship = ProjectRelationship.PrincipalInvestigator)
                                          .TheLast(4)
                                          .With(q => q.Party       = Builder <Party> .CreateNew().Build())
                                          .And(q => q.Relationship = PickHelper.RandomEnumExcept(ProjectRelationship.None, ProjectRelationship.PrincipalInvestigator))
                                          .Build();

            var dataManagementPlan = Builder <DataManagementPlan> .CreateNew()
                                     .With(o => o.ExistingDataDetail = Builder <ExistingDataDetail> .CreateNew()
                                                                       .With(q => q.UseExistingData        = PickHelper.RandomBoolean())
                                                                       .And(q => q.ExistingDataAccessTypes = PickHelper.RandomEnumsExcept(ExistingDataAccessTypes.None))
                                                                       .Build())
                                     .And(o => o.BackupPolicy  = Builder <BackupPolicy> .CreateNew().Build())
                                     .And(o => o.NewDataDetail = Builder <NewDataDetail> .CreateNew()
                                                                 .With(q => q.DataOwners = PickHelper.RandomEnumsExcept(DataOwners.None))
                                                                 .Build())
                                     .And(o => o.DataRelationshipDetail = Builder <DataRelationshipDetail> .CreateNew()
                                                                          .With(q => q.RelationshipBetweenExistingAndNewData = PickHelper.RandomEnumExcept(DataRelationship.None))
                                                                          .Build())
                                     .And(o => o.DataDocumentation = Builder <DataDocumentation> .CreateNew()
                                                                     .Build())
                                     .And(o => o.Ethic = Builder <Ethic> .CreateNew()
                                                         .With(q => q.EthicRequiresClearance = PickHelper.RandomBoolean())
                                                         .Build())
                                     .And(o => o.Confidentiality = Builder <Confidentiality> .CreateNew()
                                                                   .With(q => q.IsSensitive = PickHelper.RandomBoolean())
                                                                   .Build())
                                     .And(o => o.DataStorage = Builder <DataStorage> .CreateNew()
                                                               .With(q => q.InstitutionalStorageTypes = PickHelper.RandomEnumExcept(InstitutionalStorageTypes.ProjectStorageSpace))
                                                               .And(q => q.ExternalStorageTypes       = PickHelper.RandomEnumExcept(ExternalStorageTypes.None))
                                                               .And(q => q.PersonalStorageTypes       = PickHelper.RandomEnumExcept(PersonalStorageTypes.None))
                                                               .And(q => q.MaxDataSize    = PickHelper.RandomEnumExcept(MaxDataSize.None))
                                                               .And(q => q.VersionControl = PickHelper.RandomEnumsExcept(VersionControl.None))
                                                               .Build())
                                     .And(o => o.DataRetention = Builder <DataRetention> .CreateNew()
                                                                 .With(q => q.DataRetentionLocations       = PickHelper.RandomEnumExcept(DataRetentionLocations.None))
                                                                 .And(q => q.DataRetentionResponsibilities = PickHelper.RandomEnumExcept(DataResponsibilities.None))
                                                                 .And(q => q.DataRetentionPeriod           = PickHelper.RandomEnumExcept <DataRetentionPeriod>())
                                                                 .Build())
                                     .And(o => o.DataSharing = Builder <DataSharing> .CreateNew()
                                                               .With(q => q.DataSharingAvailability    = PickHelper.RandomEnumExcept <DataSharingAvailability>())
                                                               .And(q => q.DataSharingAvailabilityDate = DateTime.Today.AddYears(1))
                                                               .And(q => q.ShareAccess       = PickHelper.RandomEnumExcept(ShareAccess.NoAccess))
                                                               .And(q => q.DataLicensingType = PickHelper.RandomEnumExcept <DataLicensingType>())
                                                               .Build())
                                     .Build();

            var projects = Builder <Project> .CreateListOfSize(5)
                           .All()
                           .With(o => o.DataManagementPlan = dataManagementPlan)
                           .And(o => o.ProvisioningStatus  = PickHelper.RandomEnumExcept <ProvisioningStatus>())
                           .Do(o => o.Parties.AddRange(projectParties))
                           .Build();

            var dataManagementPlansTable = _csvHelper.DataManagementPlansToDataTable(projects);

            Assert.That(dataManagementPlansTable, Is.Not.Null);
            Assert.That(dataManagementPlansTable.Columns.Count, Is.EqualTo(DataManagementColumnCount), "Incorrect number of columns");
            Assert.That(dataManagementPlansTable.Rows.Count, Is.EqualTo(5));

            for (var index = 0; index < projects.Count; index++)
            {
                var dmp     = projects[index].DataManagementPlan;
                var dataRow = dataManagementPlansTable.Rows[index];

                Assert.That(dataRow["ExistingDataAccessTypes"], Is.EqualTo(dmp.ExistingDataDetail.ExistingDataAccessTypes.ToString()));
                Assert.That(dataRow["ExistingDataOwner"], Is.EqualTo(dmp.ExistingDataDetail.ExistingDataOwner));
                Assert.That(dataRow["InstitutionalOtherTypeDescription"], Is.EqualTo(dmp.DataStorage.InstitutionalOtherTypeDescription));
                Assert.That(dataRow["DataRetentionLocations"], Is.EqualTo(dmp.DataRetention.DataRetentionLocations.ToString()));
                Assert.That(dataRow["VersionControl"], Is.EqualTo(dmp.DataStorage.VersionControl.ToString()));
                Assert.That(dataRow["EthicRequiresClearance"], Is.EqualTo(dmp.Ethic.EthicRequiresClearance));
                Assert.That(dataRow["ConfidentialityComments"], Is.EqualTo(dmp.Confidentiality.ConfidentialityComments));
                Assert.That(dataRow["RelationshipBetweenExistingAndNewData"], Is.EqualTo(dmp.DataRelationshipDetail.RelationshipBetweenExistingAndNewData.ToString()));
                Assert.That(dataRow["DataSharingAvailabilityDate"], Is.EqualTo(dmp.DataSharing.DataSharingAvailabilityDate));

                var parties = dataRow["AccessRoles"].ToString().Split('%');
                Assert.That(parties.Length, Is.EqualTo(5));
            }
        }
        private Project SetUpFullProjectWithAuthentication(string userId = "XX12345")
        {
            CreateUser(userId);
            var dmp = Builder <DataManagementPlan> .CreateNew()
                      .With(o => o.ExistingDataDetail = Builder <ExistingDataDetail> .CreateNew()
                                                        .With(q => q.UseExistingData        = PickHelper.RandomBoolean())
                                                        .And(q => q.ExistingDataAccessTypes = PickHelper.RandomEnumsExcept(ExistingDataAccessTypes.None))
                                                        .Build())
                      .And(o => o.NewDataDetail = Builder <NewDataDetail> .CreateNew()
                                                  .With(q => q.DataOwners = PickHelper.RandomEnumsExcept(DataOwners.None))
                                                  .Build())
                      .And(o => o.DataRelationshipDetail = Builder <DataRelationshipDetail> .CreateNew()
                                                           .With(q => q.RelationshipBetweenExistingAndNewData = PickHelper.RandomEnumExcept(DataRelationship.None))
                                                           .Build())
                      .And(o => o.DataDocumentation = Builder <DataDocumentation> .CreateNew()
                                                      .Build())
                      .And(o => o.Ethic = Builder <Ethic> .CreateNew()
                                          .With(q => q.EthicRequiresClearance = PickHelper.RandomBoolean())
                                          .Build())
                      .And(o => o.Confidentiality = Builder <Confidentiality> .CreateNew()
                                                    .With(q => q.IsSensitive = PickHelper.RandomBoolean())
                                                    .Build())
                      .And(o => o.DataStorage = Builder <DataStorage> .CreateNew()
                                                .With(q => q.InstitutionalStorageTypes = PickHelper.RandomEnumExcept(InstitutionalStorageTypes.ProjectStorageSpace))
                                                .And(q => q.ExternalStorageTypes       = PickHelper.RandomEnumExcept(ExternalStorageTypes.None))
                                                .And(q => q.PersonalStorageTypes       = PickHelper.RandomEnumExcept(PersonalStorageTypes.None))
                                                .And(q => q.MaxDataSize    = PickHelper.RandomEnumExcept(MaxDataSize.None))
                                                .And(q => q.VersionControl = PickHelper.RandomEnumsExcept(VersionControl.None))
                                                .Build())
                      .And(o => o.DataRetention = Builder <DataRetention> .CreateNew()
                                                  .With(q => q.DataRetentionLocations       = PickHelper.RandomEnumExcept(DataRetentionLocations.None))
                                                  .And(q => q.DataRetentionResponsibilities = PickHelper.RandomEnumExcept(DataResponsibilities.None))
                                                  .And(q => q.DataRetentionPeriod           = PickHelper.RandomEnumExcept <DataRetentionPeriod>())
                                                  .And(q => q.DepositToRepository           = PickHelper.RandomBoolean())
                                                  .Build())
                      .And(o => o.DataSharing = Builder <DataSharing> .CreateNew()
                                                .With(q => q.DataSharingAvailability    = PickHelper.RandomEnumExcept <DataSharingAvailability>())
                                                .And(q => q.DataSharingAvailabilityDate = DateTime.Today.AddYears(1))
                                                .And(q => q.ShareAccess       = PickHelper.RandomEnumExcept(ShareAccess.NoAccess))
                                                .And(q => q.DataLicensingType = PickHelper.RandomEnumExcept <DataLicensingType>())
                                                .Build())
                      .Build();

            var socioEconomicObjectives = Builder <SocioEconomicObjective> .CreateListOfSize(5).Build();

            var fieldsOfResearch = Builder <FieldOfResearch> .CreateListOfSize(6).Build();

            var parties = Builder <Party> .CreateListOfSize(7)
                          .TheFirst(1)
                          .With(o => o.UserId   = userId)
                          .And(o => o.FirstName = Pick <string> .RandomItemFrom(new[] { "Alan", "Albert", "Adrian" }))
                          .And(o => o.LastName  = Pick <string> .RandomItemFrom(new[] { "Wallace", "Willis", "Waylan" }))
                          .TheNext(3)
                          .And(o => o.FirstName = Pick <string> .RandomItemFrom(new[] { "Bastian", "Bruce", "Brian", "Julian", "James", "Jones" }))
                          .And(o => o.LastName  = Pick <string> .RandomItemFrom(new[] { "Dallas", "Donga", "Dulles", "Frost", "Feller", "Frist" }))
                          .TheNext(3)
                          .With(o => o.UserId      = null)
                          .And(o => o.Organisation = null)
                          .And(o => o.Email        = null)
                          .And(o => o.FirstName    = Pick <string> .RandomItemFrom(new[] { "George", "Gerald", "Gordon", "Hally", "Harvey", "Harry" }))
                          .And(o => o.LastName     = Pick <string> .RandomItemFrom(new [] { "Pepper", "Prince", "Pulse", "Tommy", "Thors", "Tallis" }))
                          .All()
                          .With(o => o.FullName = string.Format("{0} {1}", o.FirstName, o.LastName))
                          .TheFirst(4)
                          .With(o => o.Organisation = "Your University")
                          .And(o => o.Email         = string.Format("{0}.{1}@domain.edu.au", o.FirstName, o.LastName))
                          .Build();


            var project = Builder <Project> .CreateNew()
                          .With(o => o.DataManagementPlan = dmp)
                          .And(o => o.ProvisioningStatus  = PickHelper.RandomEnumExcept <ProvisioningStatus>())
                          .And(o => o.Status            = PickHelper.RandomEnumExcept(ProjectStatus.Completed))
                          .And(o => o.SourceProjectType = SourceProjectType.DMP)
                          .And(o => o.StartDate         = DateTime.Today.AddMonths(-3))
                          .And(o => o.EndDate           = DateTime.Today.AddMonths(9))
                          .Do(o =>
            {
                o.Parties.AddRange(Builder <ProjectParty> .CreateListOfSize(parties.Count)
                                   .All()
                                   .With(q => q.Party = parties[q.Id - 1])
                                   .TheFirst(1)
                                   .With(q => q.Relationship = ProjectRelationship.PrincipalInvestigator)
                                   .And(q => q.Role          = AccessRole.Owners)
                                   .TheNext(3)
                                   .With(q => q.Relationship = Pick <ProjectRelationship> .RandomItemFrom(new[] { ProjectRelationship.Student, ProjectRelationship.SupportStaff, ProjectRelationship.Investigator, ProjectRelationship.PartnerInvestigator }))
                                   .And(q => q.Role          = Pick <AccessRole> .RandomItemFrom(new[] { AccessRole.Members, AccessRole.Visitors }))
                                   .TheNext(3)
                                   .With(q => q.Relationship = ProjectRelationship.ExternalResearcher)
                                   .And(q => q.Role          = Pick <AccessRole> .RandomItemFrom(new[] { AccessRole.Members, AccessRole.Visitors }))
                                   .Build()
                                   );

                o.SocioEconomicObjectives.AddRange(Builder <ProjectSocioEconomicObjective> .CreateListOfSize(socioEconomicObjectives.Count)
                                                   .All()
                                                   .With(q => q.Code = socioEconomicObjectives[q.Id - 1])
                                                   .Build());

                o.FieldsOfResearch.AddRange(Builder <ProjectFieldOfResearch> .CreateListOfSize(fieldsOfResearch.Count)
                                            .All()
                                            .With(q => q.Code = fieldsOfResearch[q.Id = 1])
                                            .Build());

                o.Funders.AddRange(Builder <ProjectFunder> .CreateListOfSize(2)
                                   .TheFirst(1)
                                   .With(q => q.Funder = Funder.ARC)
                                   .TheLast(1)
                                   .With(q => q.Funder = Funder.NMHRC)
                                   .All()
                                   .With(q => q.GrantNumber = Pick <string> .RandomItemFrom(new[] { "ABC123", "DEF456", "GHI789" }))
                                   .Build());
            }).Build();

            project.Parties.Do(o => o.Project = project);
            _projectRepository.Get(Arg.Is(project.Id)).Returns(project);

            return(project);
        }