Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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());
        }