The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

# This test was created in response to a bug that caused only one table to
# get loaded when calling fixtures_ok, without errors or warnings.

# Hard-code a plan to verify Test::DBIx::Class's fixtures_ok behavior.
use Test::More 'tests' => 11;

use Test::DBIx::Class {
  schema_class => 'Test::DBIx::Class::Example::Schema',
  connect_info => ['dbi:SQLite:dbname=:memory:','','', {on_connect_call => 'use_foreign_keys'}],
  fixture_class => '::Populate',
  fixture_path => [qw/t etc example3 fixtures/],
}, 'Person', 'Company';

fixtures_ok 'corearray', 'Install some fixtures from a file-based arrayref';

is_resultset Company;
is_resultset Person;

is_fields [qw/name/], Company, [
  ['Rockets'],
  ['Sprockets'],
], "Companies loaded ok";

is_fields [qw/name age email/], Person, [
    ['Mommy', 55, 'mom@moms.com'],
    ['Tommy', 8,  'tommy@toms.com'],
], "Persons ALSO loaded ok.  The key here being that both Companies and Persons were loaded";

fixtures_ok 'corehash', 'Install more fixtures to the same table.  This time from a file-based hashref to test a different code path';

is_fields [qw/name/], Company, [
  ['Lockets'],
  ['Rockets'],
  ['Sprockets'],
], "Second Company fixture loaded appended data, not replacing it";

is_fields [qw/name age email/], Person, [
    ['Mommy', 55, 'mom@moms.com'],
    ['Tommy', 8,  'tommy@toms.com'],
    ['Salami', 1, 'sal@ami.com'],
], "Second Person fixture ALSO loaded appended data, not replacing it";

fixtures_ok 'corenormal', 'Install more fixtures to the same table.  This time from a file with one resultset per hashref, in an arrayref';

is_fields [qw/name/], Company, [
  ['Lockets'],
  ['Rockets'],
  ['Sprockets'],
  ['Acme'],
], "Third Company fixture loaded appended data, not replacing it";

is_fields [qw/name age email/], Person, [
    ['Mommy', 55, 'mom@moms.com'],
    ['Tommy', 8,  'tommy@toms.com'],
    ['Salami', 1, 'sal@ami.com'],
    ['John', 40, 'john@nowehere.com'],
    ['Vincent', 15, 'vincent@home.com'],
    ['Vanessa', 35, 'vanessa@school.com'],
], "Third Person fixture ALSO loaded appended data, not replacing it";