changelog and bump
[dbsrgits/DBIx-Class-Fixtures.git] / t / 12-populate-basic.t
CommitLineData
4fb695f4 1#!perl
2
3use DBIx::Class::Fixtures;
675669cc 4use Test::More no_plan;
4fb695f4 5use lib qw(t/lib);
6use DBICTest;
7use Path::Class;
3c528252 8use Data::Dumper;
01a3246a 9use Test::TempDir::Tiny;
66d02e24 10use IO::All;
4fb695f4 11
01a3246a 12my $tempdir = tempdir;
13
4fb695f4 14# set up and populate schema
01a3246a 15ok(my $schema = DBICTest->init_schema(db_dir => $tempdir), 'got schema');
66d02e24 16my $config_dir = io->catfile(qw't var configs')->name;
4fb695f4 17
18# do dump
8a1df391 19ok(my $fixtures = DBIx::Class::Fixtures->new({
20 config_dir => $config_dir,
21 debug => 0
22 }), 'object created with correct config dir'
23);
4fb695f4 24
3c528252 25foreach my $set ('simple', 'quantity', 'fetch', 'rules') {
26 no warnings 'redefine';
27 DBICTest->clear_schema($schema);
28 DBICTest->populate_schema($schema);
8a1df391 29 ok($fixtures->dump({
30 config => "$set.json",
01a3246a 31 schema => $schema,
32 directory => $tempdir
8a1df391 33 }), "$set dump executed okay"
34 );
35 $fixtures->populate({
66d02e24 36 ddl => io->catfile(qw[t lib sqlite.sql])->name,
01a3246a 37 connection_details => ['dbi:SQLite:'.io->catfile($tempdir, qw[ DBIxClass.db ])->name, '', ''],
38 directory => $tempdir
8a1df391 39 });
40
01a3246a 41 $schema = DBICTest->init_schema(db_dir => $tempdir, no_deploy => 1);
3c528252 42
01a3246a 43 my $fixture_dir = dir($tempdir);
3c528252 44 foreach my $class ($schema->sources) {
45 my $source_dir = dir($fixture_dir, lc($class));
8a1df391 46 is($schema->resultset($class)->count,
47 (-e $source_dir) ? scalar($source_dir->children) : 0,
48 "correct number of $set " . lc($class)
49 );
50
3c528252 51 next unless (-e $source_dir);
52
53 my $rs = $schema->resultset($class);
54 foreach my $row ($rs->all) {
55 my $file = file($source_dir, $row->id . '.fix');
56 my $HASH1; eval($file->slurp());
8a1df391 57 is_deeply(
58 $HASH1,
59 {$row->get_columns},
60 "$set " . lc($class) . " row " . $row->id . " imported okay"
61 );
3c528252 62 }
63 }
64}
65a80d4e 65
66# use_create => 1
01a3246a 67$schema = DBICTest->init_schema(db_dir => $tempdir);
65a80d4e 68$fixtures = DBIx::Class::Fixtures->new({
69 config_dir => $config_dir,
70 debug => 0
71});
72ok( $fixtures->dump({
73 config => "use_create.json",
74 schema => $schema,
01a3246a 75 directory => $tempdir
65a80d4e 76 }), "use_create dump executed okay"
77);
01a3246a 78$schema = DBICTest->init_schema(db_dir => $tempdir, no_populate => 1 );
65a80d4e 79$fixtures->populate({
01a3246a 80 directory => $tempdir,
81 connection_details => ['dbi:SQLite:'.io->catfile($tempdir, qw[ DBIxClass.db ])->name, '', ''],
65a80d4e 82 schema => $schema,
83 no_deploy => 1,
84 use_create => 1
85});
01a3246a 86$schema = DBICTest->init_schema(db_dir => $tempdir, no_deploy => 1, no_populate => 1 );
65a80d4e 87is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "use_create => 1 ok" );
e54ab7f3 88
01a3246a 89$schema = DBICTest->init_schema(db_dir => $tempdir, no_populate => 1 );
e54ab7f3 90$fixtures->populate({
01a3246a 91 directory => $tempdir,
92 connection_details => ['dbi:SQLite:'.io->catfile($tempdir, qw[ DBIxClass.db ])->name, '', ''],
e54ab7f3 93 schema => $schema,
94 no_deploy => 1,
95 use_find_or_create => 1
96});
97is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "use_find_or_create => 1 ok" );
98$fixtures->populate({
01a3246a 99 directory => $tempdir,
100 connection_details => ['dbi:SQLite:'.io->catfile($tempdir, qw[ DBIxClass.db ])->name, '', ''],
e54ab7f3 101 schema => $schema,
102 no_deploy => 1,
103 use_find_or_create => 1
104});
105is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "idempotent use_find_or_create => 1 ok" );