use Test::More; {
## This test uses an 'old school' deploy and test setup. You can use it to
## compare with the Test::DBIx::Class rewrite. Also, we just need to test
## our Example Schema and make sure it's all good.
use strict;
use warnings;
require_ok 'Test::DBIx::Class::Example::Schema';
## Connect and Deploy a Schema
ok my @connect = (
$ENV{TEST_DBIX_CLASS_EXAMPLE_DNS} || 'dbi:SQLite:dbname=:memory:',
$ENV{TEST_DBIX_CLASS_EXAMPLE_USER} || '',
$ENV{TEST_DBIX_CLASS_EXAMPLE_PASS} || ''
) => 'Created connect info';
ok my $schema = Test::DBIx::Class::Example::Schema->connect(@connect)
=> 'Connected to sqlite in memory database';
eval {
$schema->deploy();
};
is $@, ''
=> 'Got no deploy error';
## Populate Jobs
ok my $job_rs = $schema->resultset('Job')
=> 'Found Job';
ok my ($programmer, $marketer, $admin) = $job_rs->populate([
[name => 'description'],
[programmer => 'who writes the code'],
[marketer => 'who sells the code'],
[admin => 'who runs the code'],
]) => 'Successful populate on Job';
is_deeply
[map { [@$_{qw/name description/}] } sort {$a->{name} cmp $b->{name}} $job_rs->hri_dump],
[
["admin", "who runs the code"],
["marketer", "who sells the code"],
["programmer", "who writes the code"],
], 'Got Expected Data';
## Populate Companies
ok my $company_rs = $schema->resultset('Company')
=> 'Found Company';
ok my ($bms, $takkle, $safehorizons) = $company_rs->populate([
['name'],
['Bristol Myers Squibb'],
['Takkle'],
['Safe Horizons'],
]) => 'Successful populate on Company';
## Populate Persons
ok my $person_rs = $schema->resultset('Person')
=> 'Found Person';
ok my ($john, $vincent, $vanessa) = $person_rs->populate([
['name', 'age', 'email'],
['John', 40, 'john@nowehere.com'],
['Vincent', 15, 'vincent@home.com'],
['Vanessa', 35, 'vanessa@school.com'],
]) => 'Successful populate on Person';
## Populate Phone
ok my $phone_rs = $schema->resultset('Phone')
=> 'Found Phone';
$john->add_to_phone_rs({number=>2123879509});
$john->add_to_phone_rs({number=>6467081837});
$vincent->add_to_phone_rs({number=>2123879509});
$vanessa->add_to_phone_rs({number=>2123879509});
## Make someone an employee
ok my $person_employee = $schema->resultset('Person::Employee')
=> 'Found Person::Employee';
ok my $john_employee = $person_employee->create({person=>$john})
=> 'Make john an employee';
## Add them to a company
$bms->add_to_employees(
$john_employee, {
job=>$programmer,
started=>'01/01/1996',
ended=>'01/01/2004',
}
);
## Make some Persons into an Artist
ok my $person_artist = $schema->resultset('Person::Artist')
=> 'Found Person::Artist';
ok my $vanessa_artist = $person_artist->create({person=>$vanessa})
=> 'Vanessa is now an artist';
ok my $john_artist = $person_artist->create({person=>$john})
=> 'John is now an artist';
## Create some CDs
ok my $cd_rs = $schema->resultset('CD'),
=> 'Got the CD Resultset';
ok my $first_album = $cd_rs->create({
name => 'My First Album',
track_rs => [
{position=>1, title=>'the first song'},
{position=>2, title=>'yet another song'},
],
cd_artist_rs=> [
{person_artist=>$vanessa_artist},
{person_artist=>$john_artist},
],
});
done_testing();
}