public void ForeignKeyCopiedFromAutoPrimaryKey_InCorrectOrder_Test() { // Arrange var primaryTable = new PrimaryTable(); var primaryRecordReference = new RecordReference<PrimaryTable>(Helpers.GetTypeGeneratorMock(primaryTable).Object, this.attributeDecorator); primaryRecordReference.Populate(); var foreignTable = new ForeignTable(); var foreignRecordReference = new RecordReference<ForeignTable>(Helpers.GetTypeGeneratorMock(foreignTable).Object, this.attributeDecorator); foreignRecordReference.Populate(); foreignRecordReference.AddPrimaryRecordReference(primaryRecordReference); var expected = new object[] {"Key", 1, "Guid", Guid.NewGuid(), "Key", 2}; this.writePrimitivesMock.Setup(m => m.Execute()).Returns(expected); // Act // Note the foreign key record is being passed in before the primary key record. // This is to test that the primary key record that wrote first gets the first return // data element and the foreign key record gets the subsequent one. this.persistence.Persist(new RecordReference[] { foreignRecordReference, primaryRecordReference }); // Assert Assert.AreEqual(expected[1], primaryTable.Key); Assert.AreEqual(expected[5], foreignTable.Key); }
public void Initialize() { XmlConfigurator.Configure(); this.foreignKeyTable = new ForeignTable(); this.attributeDecorator = new StandardAttributeDecorator(attributeDecorator => null, null); this.typeGeneratorMock = Helpers.GetTypeGeneratorMock(this.foreignKeyTable); this.recordReference = new RecordReference<ForeignTable>(this.typeGeneratorMock.Object, this.attributeDecorator); this.recordReference.Populate(); this.insertRecordService = new InsertRecordService(this.recordReference, this.attributeDecorator, InsertRecordServiceTest.IsKeyReferenceCheckEnforced); this.writerMock = new Mock<IWritePrimitives>(); this.peers = Enumerable.Empty<AbstractRepositoryOperation>(); this.mainTableColumns = Helpers.GetColumns(this.foreignKeyTable, this.attributeDecorator); }
public void InsertsInProperOrder_Test() { // Arrange var primaryTable = new PrimaryTable { Integer = 1}; var primaryRecordReference = new RecordReference<PrimaryTable>(Helpers.GetTypeGeneratorMock(primaryTable).Object, this.attributeDecorator); primaryRecordReference.Populate(); var foreignTable = new ForeignTable {Integer = 1}; var foreignRecordReference = new RecordReference<ForeignTable>(Helpers.GetTypeGeneratorMock(foreignTable).Object, this.attributeDecorator); foreignRecordReference.Populate(); foreignRecordReference.AddPrimaryRecordReference(primaryRecordReference); var columns = new List<List<Column>>(); this.writePrimitivesMock.Setup(m => m.Insert(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<IEnumerable<Column>>())) .Callback<string, string, string, IEnumerable<Column>>((cat, s, t, col) => columns.Add(col.ToList())); this.writePrimitivesMock.Setup(m => m.SelectIdentity(It.IsAny<string>())).Returns(new Variable(null)); this.writePrimitivesMock.Setup(m => m.Execute()).Returns(new object[] {"Key", 0, "Guid", Guid.NewGuid(), "Key", 0}); // Act // Note the foreign key record is being passed in before the primary key record // to test that the primary key record writes first regardless which insert operation's // Write method is called. this.persistence.Persist(new RecordReference[] { foreignRecordReference, primaryRecordReference}); // Assert Assert.AreEqual(primaryTable.Integer, columns[0].First(c => c.Name == "Integer").Value); Assert.AreEqual(foreignTable.Integer, columns[1].First(c => c.Name == "Integer").Value); }