new test case with nested resultsources
John Napiorkowski [Fri, 6 Mar 2015 00:26:57 +0000 (18:26 -0600)]
t/19-complex-hierarchy.t
t/var/configs/washed-up.json [new file with mode: 0644]

index 4da70a5..8fa5598 100644 (file)
@@ -1,7 +1,7 @@
 #!perl
 
 use DBIx::Class::Fixtures;
-use Test::More tests => 4;
+use Test::More tests => 7;
 use lib qw(t/lib);
 use DBICTest;
 use Path::Class;
@@ -20,37 +20,9 @@ ok my $artist = $schema->resultset("Artist")->find(1);
 ok my $washed_up = $artist->create_related('washed_up', +{});
 ok $washed_up->fk_artistid;
 
-__END__
 
-{
-    # do dump
-    ok(my $fixtures = DBIx::Class::Fixtures->new({ config_dir => $config_dir, debug => 0 }), 'object created with correct config dir');
-    ok($fixtures->dump({ config => 'simple.json', schema => $schema, directory => io->catfile(qw't var fixtures')->name }), 'simple dump executed okay');
-
-    # check dump is okay
-    my $dir = dir(io->catfile(qw't var fixtures artist')->name);
-    ok(-e io->catfile(qw't var fixtures artist')->name, 'artist directory created');
-
-    my @children = $dir->children;
-    is(scalar(@children), 1, 'right number of fixtures created');
-
-    my $fix_file = $children[0];
-    my $HASH1; eval($fix_file->slurp());
-    is(ref $HASH1, 'HASH', 'fixture evals into hash');
-
-    is_deeply([sort $schema->source('Artist')->columns], [sort keys %{$HASH1}], 'fixture has correct keys');
-
-    my $artist = $schema->resultset('Artist')->find($HASH1->{artistid});
-    is_deeply({$artist->get_columns}, $HASH1, 'dumped fixture is equivalent to artist row');
-
-    $schema->resultset('Artist')->delete; # so we can create the row again on the next line
-    ok($schema->resultset('Artist')->create($HASH1), 'new dbic row created from fixture');
-}
-
-{
-    # do dump with hashref config
-    ok(my $fixtures = DBIx::Class::Fixtures->new({ config_dir => $config_dir, debug => 0 }), 'object created with correct config dir');
-    ok($fixtures->dump({
+ok(my $fixtures = DBIx::Class::Fixtures->new({ config_dir => $config_dir, debug => 0 }), 'object created with correct config dir');
+ok($fixtures->dump({
         config => {
             "might_have" => {
                 "fetch" => 0
@@ -59,7 +31,7 @@ __END__
                 "fetch" => 0
             },
             "sets" => [{
-                "class" => "Artist",
+                "class" => "Artist::WashedUp",
                 "quantity" => 1
             }]
         },
@@ -67,22 +39,11 @@ __END__
         directory => io->catfile(qw't var fixtures')->name,
     }), 'simple dump executed okay');
 
-    # check dump is okay
-    my $dir = dir(io->catfile(qw't var fixtures artist')->name);
-    ok(-e io->catfile(qw't var fixtures artist')->name, 'artist directory created');
-
-    my @children = $dir->children;
-    is(scalar(@children), 1, 'right number of fixtures created');
-
-    my $fix_file = $children[0];
-    my $HASH1; eval($fix_file->slurp());
-    is(ref $HASH1, 'HASH', 'fixture evals into hash');
-
-    is_deeply([sort $schema->source('Artist')->columns], [sort keys %{$HASH1}], 'fixture has correct keys');
+ok(
+  $fixtures->dump({
+    config => 'washed-up.json',
+    schema => $schema, 
+    directory => io->catfile(qw't var fixtures')->name,
+  }));
 
-    my $artist = $schema->resultset('Artist')->find($HASH1->{artistid});
-    is_deeply({$artist->get_columns}, $HASH1, 'dumped fixture is equivalent to artist row');
 
-    $schema->resultset('Artist')->delete; # so we can create the row again on the next line
-    ok($schema->resultset('Artist')->create($HASH1), 'new dbic row created from fixture');
-}
diff --git a/t/var/configs/washed-up.json b/t/var/configs/washed-up.json
new file mode 100644 (file)
index 0000000..ffcdc50
--- /dev/null
@@ -0,0 +1,18 @@
+{
+   "might_have" : {
+      "fetch" : 0
+   },
+   "belongs_to" : {
+      "fetch" : 0
+   },
+   "sets" : [
+      {
+         "class" : "Artist::WashedUp",
+         "quantity" : "all"
+      }
+   ],
+   "has_many" : {
+      "fetch" : 0
+   }
+}
+