public static void ChildKey_PropertyGet_EqualsCtorArg()
        {
            const string childTableName  = "child_table";
            const string parentTableName = "parent_table";

            const ReferentialAction deleteAction = ReferentialAction.Cascade;
            Identifier keyName = "test_child_key";

            var childKeyMock = new Mock <IDatabaseKey>();

            childKeyMock.Setup(k => k.KeyType).Returns(DatabaseKeyType.Foreign);
            childKeyMock.Setup(k => k.Name).Returns(keyName);
            var childKey = childKeyMock.Object;

            var parentKeyMock = new Mock <IDatabaseKey>();

            parentKeyMock.Setup(k => k.KeyType).Returns(DatabaseKeyType.Primary);
            var parentKey = parentKeyMock.Object;

            var relationalKey = new OracleRelationalKey(childTableName, childKey, parentTableName, parentKey, deleteAction);

            Assert.Multiple(() =>
            {
                Assert.That(relationalKey.ChildKey.Name.UnwrapSome(), Is.EqualTo(keyName));
                Assert.That(relationalKey.ChildKey, Is.EqualTo(childKey));
            });
        }
        public static void ChildTable_PropertyGet_MatchesCtorArg()
        {
            const string            childTableName  = "child_table";
            const string            parentTableName = "parent_table";
            const ReferentialAction deleteAction    = ReferentialAction.NoAction;

            var childKeyMock = new Mock <IDatabaseKey>();

            childKeyMock.Setup(k => k.KeyType).Returns(DatabaseKeyType.Foreign);
            var childKey = childKeyMock.Object;

            var parentKeyMock = new Mock <IDatabaseKey>();

            parentKeyMock.Setup(k => k.KeyType).Returns(DatabaseKeyType.Primary);
            var parentKey = parentKeyMock.Object;

            var relationalKey = new OracleRelationalKey(childTableName, childKey, parentTableName, parentKey, deleteAction);

            Assert.That(relationalKey.ChildTable, Is.EqualTo(new Identifier(childTableName)));
        }
        public static void UpdateAction_PropertyGet_EqualsNone()
        {
            const string            childTableName  = "child_table";
            const string            parentTableName = "parent_table";
            const ReferentialAction deleteAction    = ReferentialAction.Cascade;

            var childKeyMock = new Mock <IDatabaseKey>();

            childKeyMock.Setup(k => k.KeyType).Returns(DatabaseKeyType.Foreign);
            var childKey = childKeyMock.Object;

            var parentKeyMock = new Mock <IDatabaseKey>();

            parentKeyMock.Setup(k => k.KeyType).Returns(DatabaseKeyType.Primary);
            var parentKey = parentKeyMock.Object;

            var relationalKey = new OracleRelationalKey(childTableName, childKey, parentTableName, parentKey, deleteAction);

            Assert.That(relationalKey.UpdateAction, Is.EqualTo(ReferentialAction.NoAction));
        }
        public static void ToString_WhenInvoked_ReturnsExpectedValues(
            string childTableSchema,
            string childTableLocal,
            string childKeyName,
            string parentTableSchema,
            string parentTableLocal,
            string parentKeyName,
            string expectedResult
            )
        {
            var childTableName     = Identifier.CreateQualifiedIdentifier(childTableSchema, childTableLocal);
            var childKeyIdentifier = !childKeyName.IsNullOrWhiteSpace()
                ? Option <Identifier> .Some(Identifier.CreateQualifiedIdentifier(childKeyName))
                : Option <Identifier> .None;

            var parentTableName     = Identifier.CreateQualifiedIdentifier(parentTableSchema, parentTableLocal);
            var parentKeyIdentifier = !parentKeyName.IsNullOrWhiteSpace()
                ? Option <Identifier> .Some(Identifier.CreateQualifiedIdentifier(parentKeyName))
                : Option <Identifier> .None;

            var childKeyMock = new Mock <IDatabaseKey>();

            childKeyMock.Setup(k => k.Name).Returns(childKeyIdentifier);
            childKeyMock.Setup(k => k.KeyType).Returns(DatabaseKeyType.Foreign);

            var parentKeyMock = new Mock <IDatabaseKey>();

            parentKeyMock.Setup(k => k.Name).Returns(parentKeyIdentifier);
            parentKeyMock.Setup(k => k.KeyType).Returns(DatabaseKeyType.Primary);

            const ReferentialAction deleteAction = ReferentialAction.NoAction;

            var key    = new OracleRelationalKey(childTableName, childKeyMock.Object, parentTableName, parentKeyMock.Object, deleteAction);
            var result = key.ToString();

            Assert.That(result, Is.EqualTo(expectedResult));
        }