made tests cross os compatible
[dbsrgits/DBIx-Class-Fixtures.git] / t / 12-populate-basic.t
index e37f490..66bdc6d 100644 (file)
@@ -6,10 +6,11 @@ use lib qw(t/lib);
 use DBICTest;
 use Path::Class;
 use Data::Dumper;
+use IO::All;
 
 # set up and populate schema
 ok(my $schema = DBICTest->init_schema(), 'got schema');
-my $config_dir = 't/var/configs';
+my $config_dir = io->catfile(qw't var configs')->name;
 
 # do dump
 ok(my $fixtures = DBIx::Class::Fixtures->new({ 
@@ -25,18 +26,18 @@ foreach my $set ('simple', 'quantity', 'fetch', 'rules') {
   ok($fixtures->dump({ 
       config => "$set.json", 
       schema => $schema, 
-      directory => 't/var/fixtures' 
+      directory => io->catfile(qw't var fixtures')->name 
     }), "$set dump executed okay"
   );
   $fixtures->populate({ 
-    ddl => 't/lib/sqlite.sql', 
-    connection_details => ['dbi:SQLite:t/var/DBIxClass.db', '', ''], 
-    directory => 't/var/fixtures'
+    ddl => io->catfile(qw[t lib sqlite.sql])->name,
+    connection_details => ['dbi:SQLite:'.io->catfile(qw[ t var DBIxClass.db ])->name, '', ''], 
+    directory => io->catfile(qw't var fixtures')->name
   });
 
   $schema = DBICTest->init_schema( no_deploy => 1);
 
-  my $fixture_dir = dir('t/var/fixtures');
+  my $fixture_dir = dir(io->catfile(qw't var fixtures')->name);
   foreach my $class ($schema->sources) {
     my $source_dir = dir($fixture_dir, lc($class));
     is($schema->resultset($class)->count, 
@@ -68,16 +69,34 @@ $fixtures = DBIx::Class::Fixtures->new({
 ok( $fixtures->dump({
                config => "use_create.json",
                schema => $schema,
-               directory => 't/var/fixtures'
+               directory => io->catfile(qw't var fixtures')->name
        }), "use_create dump executed okay"
 );
 $schema = DBICTest->init_schema( no_populate => 1 );
 $fixtures->populate({
-       directory => 't/var/fixtures',
-       connection_details => ['dbi:SQLite:t/var/DBIxClass.db', '', ''], 
+       directory => io->catfile(qw't var fixtures')->name,
+       connection_details => ['dbi:SQLite:'.io->catfile(qw[ t var DBIxClass.db ])->name, '', ''], 
        schema => $schema,
        no_deploy => 1,
        use_create => 1
 });
 $schema = DBICTest->init_schema( no_deploy => 1, no_populate => 1 );
 is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "use_create => 1 ok" );
+
+$schema = DBICTest->init_schema( no_populate => 1 );
+$fixtures->populate({
+       directory => io->catfile(qw't var fixtures')->name,
+       connection_details => ['dbi:SQLite:'.io->catfile(qw[ t var DBIxClass.db ])->name, '', ''], 
+       schema => $schema,
+       no_deploy => 1,
+       use_find_or_create => 1
+});
+is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "use_find_or_create => 1 ok" );
+$fixtures->populate({
+       directory => io->catfile(qw't var fixtures')->name,
+       connection_details => ['dbi:SQLite:'.io->catfile(qw[ t var DBIxClass.db ])->name, '', ''], 
+       schema => $schema,
+       no_deploy => 1,
+       use_find_or_create => 1
+});
+is( $schema->resultset( "Artist" )->find({ artistid => 4 })->name, "Test Name", "idempotent use_find_or_create => 1 ok" );