Exemplo n.º 1
0
        public static async Task AnalyseTables_GivenTableWithSingleColumnPrimaryKey_ProducesNoMessages()
        {
            var rule = new NoSurrogatePrimaryKeyRule(RuleLevel.Error);

            var testColumn = new DatabaseColumn(
                "test_column",
                Mock.Of <IDbType>(),
                false,
                null,
                null
                );
            var testPrimaryKey = new DatabaseKey(
                Option <Identifier> .Some("test_primary_key"),
                DatabaseKeyType.Primary,
                new[] { testColumn },
                true
                );

            var table = new RelationalDatabaseTable(
                "test",
                new List <IDatabaseColumn>(),
                testPrimaryKey,
                Array.Empty <IDatabaseKey>(),
                Array.Empty <IDatabaseRelationalKey>(),
                Array.Empty <IDatabaseRelationalKey>(),
                Array.Empty <IDatabaseIndex>(),
                Array.Empty <IDatabaseCheckConstraint>(),
                Array.Empty <IDatabaseTrigger>()
                );
            var tables = new[] { table };

            var hasMessages = await rule.AnalyseTables(tables).AnyAsync().ConfigureAwait(false);

            Assert.That(hasMessages, Is.False);
        }
Exemplo n.º 2
0
        public static async Task AnalyseTables_GivenTableWithMissingPrimaryKey_ProducesNoMessages()
        {
            var rule = new NoSurrogatePrimaryKeyRule(RuleLevel.Error);

            var table = new RelationalDatabaseTable(
                "test",
                new List <IDatabaseColumn>(),
                null,
                Array.Empty <IDatabaseKey>(),
                Array.Empty <IDatabaseRelationalKey>(),
                Array.Empty <IDatabaseRelationalKey>(),
                Array.Empty <IDatabaseIndex>(),
                Array.Empty <IDatabaseCheckConstraint>(),
                Array.Empty <IDatabaseTrigger>()
                );
            var tables = new[] { table };

            var hasMessages = await rule.AnalyseTables(tables).AnyAsync().ConfigureAwait(false);

            Assert.That(hasMessages, Is.False);
        }
Exemplo n.º 3
0
        public static void AnalyseTables_GivenNullTables_ThrowsArgumentNullException()
        {
            var rule = new NoSurrogatePrimaryKeyRule(RuleLevel.Error);

            Assert.That(() => rule.AnalyseTables(null), Throws.ArgumentNullException);
        }
Exemplo n.º 4
0
        public static async Task AnalyseTables_GivenTableWithMultiColumnPrimaryKeyContainingAllForeignKeyColumns_ProducesNoMessages()
        {
            var rule = new NoSurrogatePrimaryKeyRule(RuleLevel.Error);

            var testColumnA = new DatabaseColumn(
                "test_column_a",
                Mock.Of <IDbType>(),
                false,
                null,
                null
                );
            var testColumnB = new DatabaseColumn(
                "test_column_b",
                Mock.Of <IDbType>(),
                false,
                null,
                null
                );
            var testPrimaryKey = new DatabaseKey(
                Option <Identifier> .Some("test_primary_key"),
                DatabaseKeyType.Primary,
                new[] { testColumnA, testColumnB },
                true
                );

            var testForeignKey1 = new DatabaseKey(
                Option <Identifier> .Some("test_fk1"),
                DatabaseKeyType.Foreign,
                new[] { testColumnA },
                true
                );
            var testForeignKey2 = new DatabaseKey(
                Option <Identifier> .Some("test_fk2"),
                DatabaseKeyType.Foreign,
                new[] { testColumnB },
                true
                );

            var relationalKey1 = new DatabaseRelationalKey(
                "test",
                testForeignKey1,
                "test",
                testPrimaryKey,
                ReferentialAction.Cascade,
                ReferentialAction.Cascade
                );
            var relationalKey2 = new DatabaseRelationalKey(
                "test",
                testForeignKey2,
                "test",
                testPrimaryKey,
                ReferentialAction.Cascade,
                ReferentialAction.Cascade
                );

            var table = new RelationalDatabaseTable(
                "test",
                new List <IDatabaseColumn>(),
                testPrimaryKey,
                Array.Empty <IDatabaseKey>(),
                new[] { relationalKey1, relationalKey2 },
                Array.Empty <IDatabaseRelationalKey>(),
                Array.Empty <IDatabaseIndex>(),
                Array.Empty <IDatabaseCheckConstraint>(),
                Array.Empty <IDatabaseTrigger>()
                );
            var tables = new[] { table };

            var hasMessages = await rule.AnalyseTables(tables).AnyAsync().ConfigureAwait(false);

            Assert.That(hasMessages, Is.False);
        }