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 WritePrimitives_AddPrimaryKeyValue_ManualKeys_Test() { // Arrange var primaryKeyValues = new List<ColumnSymbol>(); const string keyValue1 = "ABCD"; const int keyValue2 = 5; const string catalogueName = "catABC"; const string schema = "schemaABC"; const string tableName = "XYZ"; ManualKeyPrimaryTable table; this.insertRecordService = new InsertRecordService( new RecordReference<ManualKeyPrimaryTable>( Helpers.GetTypeGeneratorMock( table = new ManualKeyPrimaryTable { Key1 = keyValue1, Key2 = keyValue2 }).Object, this.attributeDecorator), this.attributeDecorator, InsertRecordServiceTest.IsKeyReferenceCheckEnforced); // Act this.insertRecordService.WritePrimitives(this.writerMock.Object, catalogueName, schema, tableName, Helpers.GetColumns(table, this.attributeDecorator), primaryKeyValues); // Assert Assert.AreEqual(2, primaryKeyValues.Count); Assert.AreEqual(typeof (ManualKeyPrimaryTable), primaryKeyValues[0].TableType); Assert.AreEqual(keyValue1, primaryKeyValues[0].Value); Assert.AreEqual("Key1", primaryKeyValues[0].ColumnName); Assert.AreEqual(typeof (ManualKeyPrimaryTable), primaryKeyValues[1].TableType); Assert.AreEqual(keyValue2, primaryKeyValues[1].Value); Assert.AreEqual("Key2", primaryKeyValues[1].ColumnName); }
public void GetRegularColumns_NonAutoPrimaryKey_Test() { // Arrange var table = new ManualKeyPrimaryTable {Key1 = "ABCD", Key2 = 7}; var typeGeneratorMock = Helpers.GetTypeGeneratorMock(table); var recordReference = new RecordReference<ManualKeyPrimaryTable>(typeGeneratorMock.Object, this.attributeDecorator); recordReference.Populate(); var insertRecordService = new InsertRecordService(recordReference, this.attributeDecorator, InsertRecordServiceTest.IsKeyReferenceCheckEnforced); // Act List<Column> regularColumns = insertRecordService.GetRegularColumns(null).ToList(); // Assert Assert.AreEqual(2, regularColumns.Count); Column stringKey = regularColumns.First(c => c.Name == "Key1"); Column intKey = regularColumns.First(c => c.Name == "Key2"); Assert.AreEqual(table.Key1, stringKey.Value); Assert.AreEqual(table.Key2, intKey.Value); }
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); }