require 'spec_helper' describe Migrator do before(:all) do @manifest_reader = ManifestReader.new @sql_reader = SqlReader.new @standard_builder = Builder.new(@manifest_reader, @sql_reader) @standard_migrator = Migrator.new(@manifest_reader, @sql_reader) @dbutil = DbUtility.new end it "migrate single_manifest" do def migrate_it(output_dir) @dbutil.connect_test_database do |conn| standard_migrator = Migrator.new(@manifest_reader, @sql_reader, :pgconn=>conn) standard_migrator.migrate(output_dir) conn.transaction do |transaction| transaction.exec("SELECT table_name FROM information_schema.tables WHERE table_name = $1", ["emp"]) do |result| result.ntuples.should == 1 result.getvalue(0, 0).should == "emp" end pg_migration_id = nil transaction.exec("SELECT * FROM pgmigrate.pg_migrations") do |result| result.ntuples.should == 1 result[0]["name"].should == "single1.sql" result[0]["ordinal"].should == "0" pg_migration_id = result[0]["pg_migrate_id"] end pg_migration_id.should_not == nil # verify that a database row in pg_migrate was created as side-effect transaction.exec("SELECT * FROM pgmigrate.pg_migrate WHERE id = $1", [pg_migration_id]) do |result| result.ntuples.should == 1 result[0]["template_version"].should == "0.1.0" result[0]["builder_version"].should == "pg_migrate_ruby-#{PgMigrate::VERSION}" result[0]["migrator_version"].should == "pg_migrate_ruby-#{PgMigrate::VERSION}" result[0]["database_version"].should_not be nil end end end end single_manifest=File.expand_path('spec/pg_migrate/input_manifests/single_manifest') single_manifest = File.join(single_manifest, '.') input_dir = nil target = Files.create :path => "target", :timestamp => false do input_dir = dir "input_single_manifest", :src => single_manifest do end end output_dir = File.join('target', 'output_single_manifest') @standard_builder.build(input_dir, output_dir, :force => true) @dbutil.create_new_test_database migrate_it(output_dir) migrate_it(output_dir) end end