3 use DBIx::Class::Fixtures;
4 use Test::More no_plan;
9 use Test::TempDir::Tiny;
12 my $tempdir = tempdir;
14 # set up and populate schema
15 ok(my $schema = DBICTest->init_schema(db_dir => $tempdir), 'got schema');
16 my $config_dir = io->catfile(qw't var configs')->name;
19 ok(my $fixtures = DBIx::Class::Fixtures->new({
20 config_dir => $config_dir,
22 }), 'object created with correct config dir'
25 foreach my $set ('simple', 'quantity', 'fetch', 'rules') {
26 no warnings 'redefine';
27 DBICTest->clear_schema($schema);
28 DBICTest->populate_schema($schema);
30 config => "$set.json",
33 }), "$set dump executed okay"
36 ddl => io->catfile(qw[t lib sqlite.sql])->name,
37 connection_details => ['dbi:SQLite:'.io->catfile($tempdir, qw[ DBIxClass.db ])->name, '', ''],
41 $schema = DBICTest->init_schema(db_dir => $tempdir, no_deploy => 1);
43 my $fixture_dir = dir($tempdir);
44 foreach my $class ($schema->sources) {
45 my $source_dir = dir($fixture_dir, lc($class));
46 is($schema->resultset($class)->count,
47 (-e $source_dir) ? scalar($source_dir->children) : 0,
48 "correct number of $set " . lc($class)
51 next unless (-e $source_dir);
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());
60 "$set " . lc($class) . " row " . $row->id . " imported okay"
67 $schema = DBICTest->init_schema(db_dir => $tempdir);
68 $fixtures = DBIx::Class::Fixtures->new({
69 config_dir => $config_dir,
73 config => "use_create.json",
76 }), "use_create dump executed okay"
78 $schema = DBICTest->init_schema(db_dir => $tempdir, no_populate => 1 );
80 directory => $tempdir,
81 connection_details => ['dbi:SQLite:'.io->catfile($tempdir, qw[ DBIxClass.db ])->name, '', ''],
86 $schema = DBICTest->init_schema(db_dir => $tempdir, no_deploy => 1, no_populate => 1 );
87 is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "use_create => 1 ok" );
89 $schema = DBICTest->init_schema(db_dir => $tempdir, no_populate => 1 );
91 directory => $tempdir,
92 connection_details => ['dbi:SQLite:'.io->catfile($tempdir, qw[ DBIxClass.db ])->name, '', ''],
95 use_find_or_create => 1
97 is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "use_find_or_create => 1 ok" );
99 directory => $tempdir,
100 connection_details => ['dbi:SQLite:'.io->catfile($tempdir, qw[ DBIxClass.db ])->name, '', ''],
103 use_find_or_create => 1
105 is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "idempotent use_find_or_create => 1 ok" );