public void CopyForeignKeyColumns_Test() { // Arrange var target = new ManualKeyForeignTable(); var recordReference = new RecordReference<ManualKeyForeignTable>(Helpers.GetTypeGeneratorMock(target).Object, this.attributeDecorator); recordReference.Populate(); this.insertRecordService = new InsertRecordService(recordReference, this.attributeDecorator, InsertRecordServiceTest.IsKeyReferenceCheckEnforced); var columns = new[] { new Column { Name = "ForeignKey1", Value = "ABCD" }, new Column { Name = "Two", Value = new Variable(null) }, new Column { Name = "ForeignKey2", Value = 3 }, }; // Act this.insertRecordService.CopyPrimaryToForeignKeyColumns(columns); // Assert Assert.AreEqual(columns[0].Value, target.ForeignKey1); Assert.AreEqual(columns[2].Value, target.ForeignKey2); }
public void Persists_KeyMapping_Test() { // Arrange var primaryTable = new ManualKeyPrimaryTable { Key1 = "ABCD", Key2 = 5 }; var primaryReference = new RecordReference<ManualKeyPrimaryTable>(Helpers.GetTypeGeneratorMock(primaryTable).Object, this.attributeDecorator); var foreignTable = new ManualKeyForeignTable(); var foreignReference = new RecordReference<ManualKeyForeignTable>(Helpers.GetTypeGeneratorMock(foreignTable).Object, this.attributeDecorator); foreignReference.AddPrimaryRecordReference(primaryReference); var deferredValueGeneratorMock = new Mock<IDeferredValueGenerator<LargeInteger>>(); var persistence = new MemoryPersistence(deferredValueGeneratorMock.Object, this.attributeDecorator); // Act primaryReference.Populate(); foreignReference.Populate(); persistence.Persist(new RecordReference[] { primaryReference, foreignReference}); // Assert Assert.AreEqual(primaryTable.Key1, foreignTable.ForeignKey1); Assert.AreEqual(primaryTable.Key2, foreignTable.ForeignKey2); }
public void CopyForeignKeyColumns_UnknownColumnThrows_Test() { // Arrange var target = new ManualKeyForeignTable(); var recordReference = new RecordReference<ManualKeyForeignTable>(Helpers.GetTypeGeneratorMock(target).Object, this.attributeDecorator); recordReference.Populate(); this.insertRecordService = new InsertRecordService(recordReference, this.attributeDecorator, InsertRecordServiceTest.IsKeyReferenceCheckEnforced); var columns = new[] { new Column { Name = "ForeignKey1", Value = "ABCD" }, new Column { Name = "Two", Value = new object() }, }; // Act // Assert Helpers.ExceptionTest( () => this.insertRecordService.CopyPrimaryToForeignKeyColumns(columns), typeof(InvalidOperationException), "Sequence contains no matching element"); }
public void ForeignKeysCopiedFromManualPrimaryKeys_Test() { // Arrange var primaryTable = new ManualKeyPrimaryTable {Key1 = "A", Key2 = 7}; var foreignTable = new ManualKeyForeignTable(); var primaryRecordReference = new RecordReference<ManualKeyPrimaryTable>(Helpers.GetTypeGeneratorMock(primaryTable).Object, this.attributeDecorator); primaryRecordReference.Populate(); var foreignRecordReference = new RecordReference<ManualKeyForeignTable>(Helpers.GetTypeGeneratorMock(foreignTable).Object, this.attributeDecorator); foreignRecordReference.Populate(); foreignRecordReference.AddPrimaryRecordReference(primaryRecordReference); const string catalogueName = "catABC"; const string schema = "schemaABC"; const string tableName = "ABCD"; var columns = new List<List<Column>>(); this.writePrimitivesMock.Setup(m => m.Insert(catalogueName, schema, tableName, It.IsAny<IEnumerable<Column>>())) .Callback<string, string, string, IEnumerable<Column>>((cat, s, t, col) => columns.Add(col.ToList())); // Act this.persistence.Persist(new RecordReference[] { foreignRecordReference, primaryRecordReference }); // Assert Assert.AreEqual(primaryTable.Key1, foreignTable.ForeignKey1); Assert.AreEqual(primaryTable.Key2, foreignTable.ForeignKey2); }