private void CreateExternalCohortTableReference() { ExternalCohortTable alreadyExisting = DataExportRepository.GetAllObjects <ExternalCohortTable>() .SingleOrDefault(external => external.Name.Equals(ExternalCohortTableNameInCatalogue)); if (alreadyExisting != null) { //remove dependencies cohorts ExtractableCohort toCleanup = DataExportRepository.GetAllObjects <ExtractableCohort>().SingleOrDefault(ec => ec.OriginID == cohortIDInTestData); if (toCleanup != null) { //cleanup any configs that use the cohort foreach ( var configToCleanup in DataExportRepository.GetAllObjects <ExtractionConfiguration>() .Where(config => config.Cohort_ID == toCleanup.ID)) { configToCleanup.DeleteInDatabase(); } toCleanup.DeleteInDatabase(); } alreadyExisting.DeleteInDatabase(); } var newExternal = new ExternalCohortTable(DataExportRepository, "TestExternalCohort", DatabaseType.MicrosoftSQLServer) { Database = CohortDatabaseName, Server = _cohortDatabase.Server.Name, DefinitionTableName = definitionTableName, TableName = cohortTableName, Name = ExternalCohortTableNameInCatalogue, Username = _cohortDatabase.Server.ExplicitUsernameIfAny, Password = _cohortDatabase.Server.ExplicitPasswordIfAny, PrivateIdentifierField = "PrivateID", ReleaseIdentifierField = "ReleaseID", DefinitionTableForeignKeyField = "cohortDefinition_id" }; newExternal.SaveToDatabase(); _externalCohortTable = newExternal; }
public void EndToEndTest() { var cohortDatabaseNameWillBe = TestDatabaseNames.GetConsistentName("TbvCohort"); _discoveredCohortDatabase = DiscoveredServerICanCreateRandomDatabasesAndTablesOn.ExpectDatabase(cohortDatabaseNameWillBe); //cleanup if (_discoveredCohortDatabase.Exists()) { _discoveredCohortDatabase.Drop(); } //create a normal catalogue CreateANormalCatalogue(); //create a cohort database using wizard CreateNewCohortDatabaseWizard cohortDatabaseWizard = new CreateNewCohortDatabaseWizard(_discoveredCohortDatabase, CatalogueRepository, DataExportRepository, false); _externalCohortTable = cohortDatabaseWizard.CreateDatabase( new PrivateIdentifierPrototype(_nonTvfExtractionIdentifier) , new ThrowImmediatelyCheckNotifier()); //create a table valued function CreateTvfCatalogue(cohortDatabaseNameWillBe); //Test 1 TestThatQueryBuilderWithoutParametersBeingSetThrowsQueryBuildingException(); PopulateCohortDatabaseWithRecordsFromNonTvfCatalogue(); //Test 2 TestWithParameterValueThatRowsAreReturned(); //Test 3 TestUsingTvfForAggregates(); //Test 4 TestAddingTvfToCIC(); //Test 5 TestDataExportOfTvf(); //tear down DataExportRepository.GetAllObjects <ExtractableCohort>().Single().DeleteInDatabase(); _externalCohortTable.DeleteInDatabase(); _database.ExpectTable("NonTVFTable").Drop(); _database.ExpectTableValuedFunction("GetTopXRandom").Drop(); //delete global parameter ((AnyTableSqlParameter)_aggregate.GetAllParameters().Single()).DeleteInDatabase(); //delete aggregate _aggregate.DeleteInDatabase(); ((AnyTableSqlParameter)_cicAggregate.GetAllParameters().Single()).DeleteInDatabase(); //delete aggregate _cicAggregate.DeleteInDatabase(); //get rid of the cohort identification configuration _cic.DeleteInDatabase(); _pipe.DeleteInDatabase(); //get rid of the cohort database _discoveredCohortDatabase.Drop(); _nonTvfCatalogue.DeleteInDatabase(); _nonTvfTableInfo.DeleteInDatabase(); _tvfCatalogue.DeleteInDatabase(); _tvfTableInfo.DeleteInDatabase(); }