public void ShouldSelectOneMultipleKeyData(Type fixtureType) { var fixture = Activator.CreateInstance(fixtureType) as CrudCommandFixtureBase; fixture.CreateDatabase(); fixture.CreateTables(); var first = fixture.CreateNewTwoKeysEntity(); var second = fixture.CreateNewTwoKeysEntity(); var valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { first, second }); var insertCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateInsertCommandBuilder(fixture.GetMultipleKeyDescriptor()); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); var selectOneCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateSelectOneCommandBuilder(fixture.GetMultipleKeyDescriptor()); var selectCommand = (fixtureType == typeof(CqlCrudCommandFixture)) ? selectOneCommandBuilder.GetCommand(1, 2, ((Mocks.Cql.TwoPrimaryKeyTable)first).Date) : selectOneCommandBuilder.GetCommand(1, 2); using (var reader = selectCommand.ExecuteReader()) { var mapper = new DatabaseReaderMapper(fixture.Connector, fixture.GetMultipleKeyDescriptor()); var results = mapper.Map(reader); results.Should().NotBeNull().And.HaveCount(1); } fixture.DropDatabase(); }
public void ShouldSelectAllMultipleKeyData(Type fixtureType) { var fixture = Activator.CreateInstance(fixtureType) as CrudCommandFixtureBase; fixture.CreateDatabase(); fixture.CreateTables(); var valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { fixture.CreateNewTwoKeysEntity(), fixture.CreateNewTwoKeysEntity() }); var insertCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateInsertCommandBuilder(fixture.GetMultipleKeyDescriptor()); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); var selectCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateSelectCommandBuilder(fixture.GetMultipleKeyDescriptor()); var selectCommand = selectCommandBuilder.GetCommand(); using (var reader = selectCommand.ExecuteReader()) { var mapper = new DatabaseReaderMapper(fixture.Connector, fixture.GetMultipleKeyDescriptor()); var results = mapper.Map(reader); results.Should().NotBeNull().And.HaveCount(2); } fixture.DropDatabase(); }
public void ShouldDeleteData(Type fixtureType) { var fixture = Activator.CreateInstance(fixtureType) as CrudCommandFixtureBase; fixture.Should().NotBeNull(); fixture.CreateDatabase(); fixture.CreateTables(); var first = fixture.CreateNewEntity(); var second = fixture.CreateNewEntity(); var insertCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateInsertCommandBuilder(fixture.GetParentDescriptor()); { var valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { first, second }); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); } var deleteCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateDeleteCommandBuilder(fixture.GetParentDescriptor()); { fixture.SetEntityId(first, second); var valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { first, second }); valueProvider.MoveNext(); var deleteCommand = deleteCommandBuilder.GetCommand(valueProvider); deleteCommand.Invoking(c => c.ExecuteNonQuery()).Should().NotThrow(); valueProvider.MoveNext(); deleteCommand = deleteCommandBuilder.GetCommand(valueProvider); deleteCommand.Invoking(c => c.ExecuteNonQuery()).Should().NotThrow(); } var selectCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateSelectCommandBuilder(fixture.GetParentDescriptor()); { var selectCommand = selectCommandBuilder.GetCommand(); using (var reader = selectCommand.ExecuteReader()) { var mapper = new DatabaseReaderMapper(fixture.Connector, fixture.GetParentDescriptor()); var results = mapper.Map(reader); results.Should().NotBeNull().And.HaveCount(0); } } fixture.DropDatabase(); }
public void ShouldSelectOneData(Type fixtureType) { var fixture = Activator.CreateInstance(fixtureType) as CrudCommandFixtureBase; fixture.Should().NotBeNull(); fixture.CreateDatabase(); fixture.CreateParentTable(); fixture.CreateChildTable(); var first = fixture.CreateNewEntity(); var second = fixture.CreateNewEntity(); var valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { first, second }); using (var insertCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateInsertCommandBuilder(fixture.GetParentDescriptor())) { valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); } using (var selectOneCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateSelectOneCommandBuilder(fixture.GetParentDescriptor())) { selectOneCommandBuilder.Should().NotBeNull(); var selectCommand = selectOneCommandBuilder.GetCommand(1); selectCommand.Should().NotBeNull(); selectCommand.CommandText.Should().Be(fixture.SelectOneStatement); using (var reader = selectCommand.ExecuteReader()) { reader.Should().NotBeNull(); var mapper = new DatabaseReaderMapper(fixture.Connector, fixture.GetParentDescriptor()); var results = mapper.Map(reader); results.Should().NotBeNull().And.HaveCount(1); } } fixture.DropDatabase(); }
public void ShouldMapPropertiesCorrectly(Type fixtureType, Type mappedType) { var fixture = Activator.CreateInstance(fixtureType) as ReaderMapperFixtureBase; fixture.Should().NotBeNull(); fixture.Invoking(x => x.CreateDatabase()).ShouldNotThrow(); fixture.CreateTable(); var entity = fixture.CreateNewEntity(); using (var databaseAccess = new DatabaseAccess(fixture.Connector, mappedType)) { databaseAccess.Insert(entity); } fixture.Connector.ExecuteReader(fixture.SelectStatement, reader => { // Test mapping here var results = new DatabaseReaderMapper(fixture.Connector, mappedType).Map(reader); results.Should().HaveCount(1); var retrievedEntity = results.First(); var properties = mappedType.GetTypeInfo().DeclaredProperties; // Compare properties by reflection foreach (var property in properties) { var name = property.Name; // Debugging purposes var expectedValue = property.GetValue(entity); var retrievedValue = property.GetValue(retrievedEntity); if (expectedValue is IEnumerable expectedCollection && retrievedValue is IEnumerable retrievedCollection) { var collection1 = expectedCollection.Cast <object>().ToList(); var collection2 = retrievedCollection.Cast <object>().ToList(); collection1.Count.Should().Be(collection2.Count); for (var i = 0; i < collection1.Count; i++) { collection1[i].Equals(collection2[i]).Should().BeTrue(); } }
public void ShouldUpdateData(Type fixtureType) { var fixture = Activator.CreateInstance(fixtureType) as CrudCommandFixtureBase; fixture.Should().NotBeNull(); fixture.CreateDatabase(); fixture.CreateParentTable(); fixture.CreateChildTable(); var first = fixture.CreateNewEntity(); var second = fixture.CreateNewEntity(); using (var insertCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateInsertCommandBuilder(fixture.GetParentDescriptor())) { var valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { first, second }); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); } using (var selectCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateSelectCommandBuilder(fixture.GetParentDescriptor())) { var selectCommand = selectCommandBuilder.GetCommand(); using (var reader = selectCommand.ExecuteReader()) { var mapper = new DatabaseReaderMapper(fixture.Connector, fixture.GetParentDescriptor()); var results = mapper.Map(reader); first = results[0]; second = results[1]; } } using (var updateCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateUpdateCommandBuilder(fixture.GetParentDescriptor())) { fixture.Update(first, second); var valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { first, second }); updateCommandBuilder.Should().NotBeNull(); valueProvider.MoveNext(); var updateCommand = updateCommandBuilder.GetCommand(valueProvider); updateCommand.Should().NotBeNull(); updateCommand.CommandText.Should().Be(fixture.UpdateStatement); updateCommand.Invoking(c => c.ExecuteNonQuery()).ShouldNotThrow(); valueProvider.MoveNext(); updateCommand = updateCommandBuilder.GetCommand(valueProvider); updateCommand.Should().NotBeNull(); updateCommand.CommandText.Should().Be(fixture.UpdateStatement); updateCommand.Invoking(c => c.ExecuteNonQuery()).ShouldNotThrow(); } using (var selectCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateSelectCommandBuilder(fixture.GetParentDescriptor())) { var selectCommand = selectCommandBuilder.GetCommand(); using (var reader = selectCommand.ExecuteReader()) { var mapper = new DatabaseReaderMapper(fixture.Connector, fixture.GetParentDescriptor()); var results = mapper.Map(reader); first = results[0]; second = results[1]; fixture.CheckUpdate(first, second); } } fixture.DropDatabase(); }
public void ShouldUpdateMultipleKeyData(Type fixtureType) { var fixture = Activator.CreateInstance(fixtureType) as CrudCommandFixtureBase; fixture.CreateDatabase(); fixture.CreateTables(); var first = fixture.CreateNewTwoKeysEntity(); var second = fixture.CreateNewTwoKeysEntity(); var insertCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateInsertCommandBuilder(fixture.GetMultipleKeyDescriptor()); var valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { first, second }); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); valueProvider.MoveNext(); insertCommandBuilder.GetCommand(valueProvider).ExecuteNonQuery(); var selectCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateSelectCommandBuilder(fixture.GetMultipleKeyDescriptor()); var selectCommand = selectCommandBuilder.GetCommand(); using (var reader = selectCommand.ExecuteReader()) { var mapper = new DatabaseReaderMapper(fixture.Connector, fixture.GetMultipleKeyDescriptor()); var results = mapper.Map(reader); first = results[0]; second = results[1]; } var updateCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateUpdateCommandBuilder(fixture.GetMultipleKeyDescriptor()); valueProvider = new ClassValueProvider(fixture.Connector, new List <object> { first, second }); valueProvider.MoveNext(); var updateCommand = updateCommandBuilder.GetCommand(valueProvider); updateCommand.Invoking(c => c.ExecuteNonQuery()).Should().NotThrow(); valueProvider.MoveNext(); updateCommand = updateCommandBuilder.GetCommand(valueProvider); updateCommand.Invoking(c => c.ExecuteNonQuery()).Should().NotThrow(); selectCommandBuilder = fixture.Connector.GetCommandBuilderFactory().CreateSelectCommandBuilder(fixture.GetMultipleKeyDescriptor()); selectCommand = selectCommandBuilder.GetCommand(); using (var reader = selectCommand.ExecuteReader()) { var mapper = new DatabaseReaderMapper(fixture.Connector, fixture.GetMultipleKeyDescriptor()); var results = mapper.Map(reader); results.Should().NotBeNullOrEmpty(); } fixture.DropDatabase(); }