public void DeleteVersionShouldExecuteDeleteDataExpression()
        {
            var processor = new Mock <IMigrationProcessor>();
            var runner    = new Mock <IMigrationRunner>();

            runner.SetupGet(r => r.Processor).Returns(processor.Object);

            var conventions = new MigrationConventions();
            var asm         = Assembly.GetExecutingAssembly();
            var loader      = new VersionLoader(runner.Object, asm, conventions);

            processor.Setup(p => p.Process(It.Is <DeleteDataExpression>(expression =>
                                                                        expression.SchemaName == loader.VersionTableMetaData.SchemaName &&
                                                                        expression.TableName == loader.VersionTableMetaData.TableName &&
                                                                        expression.Rows.All(
                                                                            definition =>
                                                                            definition.All(
                                                                                pair =>
                                                                                pair.Key == loader.VersionTableMetaData.ColumnName && pair.Value.Equals(1L))))))
            .Verifiable();

            loader.DeleteVersion(1);

            processor.VerifyAll();
        }
        public void DeleteVersionShouldExecuteDeleteDataExpression()
        {
            var processor = new Mock <IMigrationProcessor>();
            var runner    = new Mock <IMigrationRunner>();

            runner.SetupGet(r => r.Processor).Returns(processor.Object);

            var conventions = new MigrationConventions();
            var asm         = Assembly.GetExecutingAssembly();
            var loader      = new VersionLoader(runner.Object, asm, conventions);

            Func <IDataDefinition, bool> predicate =
                definition =>
            {
                if (definition is ExplicitDataDefinition)
                {
                    IDataValue kvp = ((ExplicitDataDefinition)definition).Data.First();

                    return(kvp.ColumnName == loader.VersionTableMetaData.ColumnName && kvp.Value.Equals(1L));
                }
                else
                {
                    return(false);
                }
            };

            processor.Setup(p => p.Process(It.Is <DeleteDataExpression>(expression =>
                                                                        expression.SchemaName == loader.VersionTableMetaData.SchemaName &&
                                                                        expression.TableName == loader.VersionTableMetaData.TableName &&
                                                                        expression.Rows.All(predicate)))).Verifiable();

            loader.DeleteVersion(1);

            processor.VerifyAll();
        }