From: John Napiorkowski Date: Tue, 21 Apr 2015 19:48:09 +0000 (-0500) Subject: Merge branch 'topic/parallelize-tests' of https://github.com/RsrchBoy/DBIx-Class... X-Git-Tag: v1.001_030~6^2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=dae128233dce5699a01fd021787b041b744c6525;hp=80c5378185a8b22c8520847544bdfbfb8693c7a6;p=dbsrgits%2FDBIx-Class-Fixtures.git Merge branch 'topic/parallelize-tests' of https://github.com/RsrchBoy/DBIx-Class-Fixtures into RsrchBoy-topic/parallelize-tests --- diff --git a/t/07-dump-all.t b/t/07-dump-all.t index 482ad41..111bfd6 100644 --- a/t/07-dump-all.t +++ b/t/07-dump-all.t @@ -11,7 +11,7 @@ use IO::All; my $tempdir = tempdir; use if $^O eq 'MSWin32','Devel::Confess'; -plan tests => 16; +plan tests => 18; # set up and populate schema ok(my $schema = DBICTest->init_schema(db_dir => $tempdir, ), 'got schema'); diff --git a/t/19-complex-hierarchy.t b/t/19-complex-hierarchy.t new file mode 100644 index 0000000..8fa5598 --- /dev/null +++ b/t/19-complex-hierarchy.t @@ -0,0 +1,49 @@ +#!perl + +use DBIx::Class::Fixtures; +use Test::More tests => 7; +use lib qw(t/lib); +use DBICTest; +use Path::Class; +use Data::Dumper; +use IO::All; + +use if $^O eq 'MSWin32','Devel::Confess'; +# set up and populate schema +ok(my $schema = DBICTest->init_schema(), 'got schema'); + +my $config_dir = io->catfile(qw't var configs')->name; + +# Add washedup + +ok my $artist = $schema->resultset("Artist")->find(1); +ok my $washed_up = $artist->create_related('washed_up', +{}); +ok $washed_up->fk_artistid; + + +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 + }, + "has_many" => { + "fetch" => 0 + }, + "sets" => [{ + "class" => "Artist::WashedUp", + "quantity" => 1 + }] + }, + schema => $schema, + directory => io->catfile(qw't var fixtures')->name, + }), 'simple dump executed okay'); + +ok( + $fixtures->dump({ + config => 'washed-up.json', + schema => $schema, + directory => io->catfile(qw't var fixtures')->name, + })); + + diff --git a/t/lib/DBICTest.pm b/t/lib/DBICTest.pm index 2bf19f8..db22971 100755 --- a/t/lib/DBICTest.pm +++ b/t/lib/DBICTest.pm @@ -156,6 +156,11 @@ sub populate_schema { [ 32948, 'Big PK' ], ]); + $schema->populate('Artist::WashedUp', [ + [ qw/fk_artistid/ ], + [ 2 ], + ]); + $schema->populate('CD', [ [ qw/cdid artist title year/ ], [ 1, 1, "Spoonful of bees", 1999 ], diff --git a/t/lib/DBICTest/Schema.pm b/t/lib/DBICTest/Schema.pm index 350eecc..23e03d6 100644 --- a/t/lib/DBICTest/Schema.pm +++ b/t/lib/DBICTest/Schema.pm @@ -5,6 +5,6 @@ use base qw/DBIx::Class::Schema/; no warnings qw/qw/; -__PACKAGE__->load_classes(qw/Artist CD Track Tag Producer CD_to_Producer/); +__PACKAGE__->load_classes(qw/Artist Artist::WashedUp CD Track Tag Producer CD_to_Producer/); 1; diff --git a/t/lib/DBICTest/Schema/Artist.pm b/t/lib/DBICTest/Schema/Artist.pm index f6d8180..3925cd6 100644 --- a/t/lib/DBICTest/Schema/Artist.pm +++ b/t/lib/DBICTest/Schema/Artist.pm @@ -22,6 +22,11 @@ __PACKAGE__->has_many( { order_by => 'year' }, ); +__PACKAGE__->might_have( + washed_up => 'DBICTest::Schema::Artist::WashedUp', + {'foreign.fk_artistid' => 'self.artistid'}, +); + sub new { my ( $class, $args ) = @_; diff --git a/t/lib/DBICTest/Schema/Artist/WashedUp.pm b/t/lib/DBICTest/Schema/Artist/WashedUp.pm new file mode 100644 index 0000000..998139f --- /dev/null +++ b/t/lib/DBICTest/Schema/Artist/WashedUp.pm @@ -0,0 +1,19 @@ +package # hide from PAUSE + DBICTest::Schema::Artist::WashedUp; + +use base 'DBIx::Class::Core'; + +__PACKAGE__->table('artist_washed_up'); +__PACKAGE__->add_columns( + 'fk_artistid' => { + data_type => 'integer', + }, +); + +__PACKAGE__->set_primary_key('fk_artistid'); +__PACKAGE__->belongs_to( + 'artist', 'DBICTest::Schema::Artist', + { 'foreign.artistid' => 'self.fk_artistid' } +); + +1; diff --git a/t/lib/mysql.sql b/t/lib/mysql.sql index ca1b034..47bad04 100644 --- a/t/lib/mysql.sql +++ b/t/lib/mysql.sql @@ -17,6 +17,13 @@ CREATE TABLE artist ( name varchar(100) ); +-- +-- Table: artist_washed_up +-- +DROP TABLE IF EXISTS artist_washed_up; +CREATE TABLE artist_washed_up ( + fk_artistid INTEGER PRIMARY KEY NOT NULL +); -- -- Table: cd diff --git a/t/lib/sqlite.sql b/t/lib/sqlite.sql index 1e21627..f863b03 100644 --- a/t/lib/sqlite.sql +++ b/t/lib/sqlite.sql @@ -21,6 +21,12 @@ CREATE TABLE artist ( name varchar(100) ); +-- +-- Table: artist_washed_up +-- +CREATE TABLE artist_washed_up ( + fk_artistid INTEGER PRIMARY KEY NOT NULL +); -- -- Table: cd diff --git a/t/var/configs/washed-up.json b/t/var/configs/washed-up.json new file mode 100644 index 0000000..ffcdc50 --- /dev/null +++ b/t/var/configs/washed-up.json @@ -0,0 +1,18 @@ +{ + "might_have" : { + "fetch" : 0 + }, + "belongs_to" : { + "fetch" : 0 + }, + "sets" : [ + { + "class" : "Artist::WashedUp", + "quantity" : "all" + } + ], + "has_many" : { + "fetch" : 0 + } +} +