public async Task GetDatabasesByCreatorAsync_CorrectMatchingDatabaseNameSupplied_ReturnsCorrectNumberOfRows() { // Arrange var concreteWhitelistDatabaseNames = _db2QueryHelperConcrete.WhitelistDatabaseNamesToBeIngestedInSchemaAppendFilter( new List <string> { MatchingDatabase1String }, SharedConstants.Db2SchemaScrape.Db2SystemDatabaseNameOfAliasTables); _db2QueryHelper.Setup(x => x.WhitelistDatabaseNamesToBeIngestedInSchemaAppendFilter( It.IsAny <List <string> >(), SharedConstants.Db2SchemaScrape.Db2SystemDatabaseNameOfAliasTables)) .Returns(concreteWhitelistDatabaseNames); _db2QueryHelper.Setup(x => x.GetAliasTableDetailsWithinWhitelistedDatabaseNamesToMatch( It.IsAny <string>(), It.IsAny <List <string> >(), It.IsAny <List <string> >())) // Return the actual value from this method - no need to mock it. .Returns(_db2QueryHelperConcrete.GetAliasTableDetailsWithinWhitelistedDatabaseNamesToMatch( "main.TestSchemaTableModel", _listSchemaTables.Where(t => t.TYPE == RelevantTableTypes[0]).Select(t => t.NAME).ToList(), new List <string> { MatchingDatabase1String })); _db2QueryHelper.Setup(x => x.GetTableDetailsForEnvironmentQueryFormatted( "main.TestSchemaTableModel", concreteWhitelistDatabaseNames, string.Empty)) // Return the actual value from this method - no need to mock it. .Returns(_db2QueryHelperConcrete.GetTableDetailsForEnvironmentQueryFormatted( "main.TestSchemaTableModel", concreteWhitelistDatabaseNames, string.Empty)); var schemaTablesThatMatchOurQuery = _listSchemaTables .Where(x => x.CREATOR == MatchingCreatorString && RelevantTableTypes.Contains(x.TYPE)); var dbSchemaScrapeAccess = new Db2SchemaScrapeAccess(_logger.Object, _dbConnection.Object, _db2QueryHelper.Object); // Act var result = await dbSchemaScrapeAccess.GetDatabasesByCreatorAsync( MatchingCreatorString, MatchingLocationString, new List <string> { MatchingDatabase1String }); // Assert // There are multiple results loaded that match, but they have the same DBNAME, so should only be 1 distinct Database result returned. result.As <List <SchemaDatabaseModel> >().Should().Equals(schemaTablesThatMatchOurQuery.Select(x => x.DBNAME).Distinct()); }
public async Task GetListOfDatabaseNamesInEnvironmentAsync_ResultsFound_ReturnsDistinctResultsForMatchingTypeAndCreator() { // Arrange var dbSchemaScrapeAccess = new Db2SchemaScrapeAccess(_logger.Object, _dbConnection.Object, _db2QueryHelper.Object); // Act var result = await dbSchemaScrapeAccess.GetListOfDatabaseNamesInEnvironmentAsync(MatchingCreatorString, MatchingLocationString); // Assert - should only return Distinct Database names that match Tables or Aliases with the correct Creator value. // There are 2 results loaded that match, but they have the same DBNAME, so should only be 1 distinct result returned. result.As <List <string> >().Count.Should().Equals(_listSchemaTables.Where(x => x.CREATOR == MatchingCreatorString && RelevantTableTypes.Contains(x.TYPE)).Distinct()); }