#!/usr/bin/env perl use lib 't/lib'; use Test::Most; use DBIx::Class::Migration; use File::Spec::Functions 'catfile'; use File::Path 'rmtree'; ok( my $migration = DBIx::Class::Migration->new(schema_class=>'Local::Schema'), 'created migration with schema_class'); isa_ok( my $schema = $migration->schema, 'Local::Schema', 'got a reasonable looking schema'); like( ($migration->_build_schema_args)->[0], qr/local-schema\.db$/, 'generated schema_args seem ok'); is( DBIx::Class::Migration::_infer_database_from_schema($schema), 'SQLite', 'can correctly infer a database DBD'); $migration->prepare; ok( (my $target_dir = $migration->target_dir), 'got a good target directory'); ok -d catfile($target_dir, 'fixtures'), 'got fixtures'; ok -e catfile($target_dir, 'fixtures','1','conf','all_tables.json'), 'got the all_tables.json'; ok -d catfile($target_dir, 'migrations'), 'got migrations'; ok -e catfile($target_dir, 'migrations','SQLite','deploy','1','001-auto.sql'), 'found DDL'; open( my $perl_run, ">", catfile($target_dir, 'migrations', 'SQLite', 'deploy', '1', '002-artists.pl') ) || die "Cannot open: $!"; print $perl_run <<'END'; use DBIx::Class::Migration::RunScript; use Test::Most; ok $ENV{DBIC_MIGRATION_TARGET_DIR}; builder { 'SchemaLoader', sub { my $self = shift; $self->schema->resultset('Country') ->populate([ ['code'], ['bel'], ['deu'], ['fra'], ]); }; }; END close($perl_run); $migration->install; ok $schema->resultset('Country')->find({code=>'fra'}), 'got some previously inserted data'; $migration->dump_all_sets; ok -e catfile($target_dir, 'fixtures','1','all_tables','country','1.fix'), 'found a fixture'; rmtree catfile($target_dir, 'fixtures','1','all_tables'); $migration->dump_named_sets('all_tables'); ok -e catfile($target_dir, 'fixtures','1','all_tables','country','1.fix'), 'found a fixture'; $migration->delete_table_rows; $migration->populate('all_tables'); ok $schema->resultset('Country')->find({code=>'fra'}), 'got some previously inserted data'; $migration->drop_tables; NEW_SCOPE_FOR_SCHEMA: { my $migration = DBIx::Class::Migration->new( schema_class=>'Local::Schema'); $migration->install; ok $schema->resultset('Country')->find({code=>'fra'}), 'got some previously inserted data'; $migration->delete_table_rows; $migration->populate('all_tables'); ok $schema->resultset('Country')->find({code=>'bel'}), 'got some previously inserted data'; } done_testing; END { rmtree catfile($migration->target_dir, 'migrations'); rmtree catfile($migration->target_dir, 'fixtures'); unlink catfile($migration->target_dir, 'local-schema.db'); }