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 Read_AutoKey_Test() { // Arrange var record = new PrimaryTable(); this.recordReferenceMock.Setup(m => m.RecordObject).Returns(record); this.recordReferenceMock.Setup(m => m.RecordType).Returns(record.GetType()); var streamReadPointer = new Counter(); const int expected = 8; var returnValue = new object[] { "Key", expected, "Guid", Guid.NewGuid() }; // Act this.insertRecord.Write(this.breakerMock.Object, this.writePrimitivesMock.Object, new Counter(), new AbstractRepositoryOperation[1]); this.insertRecord.Read(streamReadPointer, returnValue); // Assert Assert.AreEqual(expected, record.Key); Assert.AreEqual(4, streamReadPointer.Value); }
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); }
public void Insert_Test() { // Arrange var primaryTable = new PrimaryTable { Integer = 5, Text = "Text"}; var primaryRecordReference = new RecordReference<PrimaryTable>(Helpers.GetTypeGeneratorMock(primaryTable).Object, this.attributeDecorator); primaryRecordReference.Populate(); string tableName = typeof(PrimaryTable).Name; List<Column> primaryTableColumns = null; this.writePrimitivesMock.Setup(m => m.Insert(null, It.IsAny<string>(), tableName, It.IsAny<IEnumerable<Column>>())) .Callback<string, string, string, IEnumerable<Column>>((cat, s, t, col) => primaryTableColumns = col.ToList()); this.writePrimitivesMock.Setup(m => m.Execute()).Returns(new object[] {"Key", 0, "Guid", Guid.NewGuid()}); // Act var recordReferenceArray = new RecordReference[] {primaryRecordReference}; this.persistence.Persist(recordReferenceArray); // Assert this.writePrimitivesMock.Verify(m => m.Insert(null, It.IsAny<string>(), tableName, It.IsAny<IEnumerable<Column>>()), Times.Once()); this.deferredValueGeneratorMock.Verify( m => m.Execute(It.Is<IEnumerable<RecordReference>>(e => e.First() == recordReferenceArray[0])), Times.Once); Assert.IsNotNull(primaryTableColumns); Assert.AreEqual(4, primaryTableColumns.Count); Assert.AreEqual("Text", primaryTableColumns[0].Name); Assert.AreEqual(primaryTable.Text, primaryTableColumns[0].Value); Assert.AreEqual("Integer", primaryTableColumns[1].Name); Assert.AreEqual(primaryTable.Integer, primaryTableColumns[1].Value); }
public void Persist_Test() { // Arrange var deferredValueGeneratorMock = new Mock<IDeferredValueGenerator<LargeInteger>>(); var persistence = new MemoryPersistence(deferredValueGeneratorMock.Object, this.attributeDecorator); var primaryTable = new PrimaryTable { Integer = 5, Text = "Text" }; var primaryRecordReference = new RecordReference<PrimaryTable>( Helpers.GetTypeGeneratorMock(primaryTable).Object, this.attributeDecorator); var recordReferenceArray = new RecordReference[] { primaryRecordReference }; // Act persistence.Persist(recordReferenceArray); // Assert deferredValueGeneratorMock.Verify( m => m.Execute(It.Is<IEnumerable<RecordReference>>(e => e.First() == recordReferenceArray[0])), Times.Once); }