Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        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();
                        }
                    }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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();
        }