The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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();
}