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); }
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); }
public static void AnalyseTables_GivenNullTables_ThrowsArgumentNullException() { var rule = new NoSurrogatePrimaryKeyRule(RuleLevel.Error); Assert.That(() => rule.AnalyseTables(null), Throws.ArgumentNullException); }
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); }