Interchange6-Schema
view release on metacpan or search on metacpan
t/lib/Test/Zone.pm view on Meta::CPAN
$rset = $self->zones->search( { zone => 'EU member states' } );
cmp_ok( $rset->count, '==', 1, "Found zone: EU member states" );
$result = $rset->next;
cmp_ok( $result->country_count, '==', 28, "has 28 countries" );
cmp_ok( $result->state_count, '==', 0, "has 0 states" );
ok( $result->has_country( $countries{MT} ),
"includes Malta (country obj)" );
ok( $result->has_country('MT'), "includes Malta (MT)" );
ok( $result->has_country('Malta'), "includes Malta" );
is( $result->has_country('IM'), 0, "does not include Isle of Man (IM)" );
is( $result->has_country('Isle of Man'), 0,
"does not include Isle of Man" );
is( $result->has_country( $states{'US_CA'} ),
0, "countries does not include Caliornia (state obj)" );
$rset = $self->zones->search( { zone => 'EU VAT countries' } );
cmp_ok( $rset->count, '==', 1, "Found zone: EU VAT countries" );
$result = $rset->next;
cmp_ok( $result->country_count, '==', 29, "has 29 countries" );
cmp_ok( $result->state_count, '==', 0, "has 0 states" );
ok( $result->has_country('MT'), "includes Malta" );
ok( $result->has_country('IM'), "includes Isle of Man" );
is( $result->has_country('CH'), 0, "does not include Switzerland" );
# other zone tests
# Canada
throws_ok(
sub { $result = $self->zones->create( { zone => 'Canada' } ); },
qr/unique|duplicate/i,
"Fail to create zone Canada which already exists (populate)"
);
lives_ok(
sub { $result = $self->zones->create( { zone => 'Canada test' } ); },
"Create zone: Canada test" );
lives_ok(
sub { $result->add_countries( $countries{CA} ) },
"Create relationship to Country for Canada in zone Canada"
);
cmp_ok( $result->country_count, '==', 1, "1 country in zone" );
throws_ok(
sub { $result->remove_countries( $countries{US} ) },
qr/Country does not exist in zone: United States/,
"Fail to remove country US from zone Canada"
);
lives_ok( sub { $result->remove_countries( $countries{CA} ) },
"Remove country CA from zone Canada" );
cmp_ok( $result->country_count, '==', 0, "0 country in zone" );
$rset = $self->ic6s_schema->resultset('ZoneCountry')
->search( { zones_id => $result->zones_id } );
cmp_ok( $rset->count, '==', 0, "check cascade delete in ZoneCountry" );
$rset = $self->countries->search( { country_iso_code => 'CA' } );
cmp_ok( $rset->count, '==', 1, "check cascade delete in Country" );
lives_ok(
sub { $result->add_countries( $countries{CA} ) },
"Create relationship to Country for Canada in zone Canada"
);
throws_ok(
sub { $result->remove_countries('FooBar') },
qr/Bad country: FooBar/,
"Fail remove country FooBar from zone Canada"
);
throws_ok(
sub { $result->remove_countries( ['FooBar'] ) },
qr/Bad country: FooBar/,
"Fail remove country FooBar (arrayref) from zone Canada"
);
throws_ok(
sub { $result->remove_countries( [ $states{'US_CA'} ] ) },
qr/Country cannot be a Interchange6::Schema::Result::State/,
"Fail remove_countries(state_obj)"
);
lives_ok(
sub { $result->remove_countries( [ $countries{CA} ] ) },
"Remove country CA (arrayref) from zone Canada"
);
lives_ok(
sub { $result->add_countries( $countries{CA} ) },
"Create relationship to Country for Canada in zone Canada"
);
lives_ok( sub { $result->add_countries( $countries{US} ) },
"Create relationship to Country for United States in zone Canada" );
throws_ok(
sub { $result->add_states( $states{'CA_BC'} ) },
qr /Cannot add state to zone with multiple countries/,
"Cannot add state to zone with multiple countries"
);
lives_ok( sub { $result->remove_countries( $countries{US} ) },
"Remove United States from zone Canada" );
throws_ok(
sub { $result->add_states( $countries{CA} ) },
qr /State cannot be a Interchange6::Schema::Result::Country/,
"Cannot add country with add_states"
);
lives_ok( sub { $result->add_states( $states{'CA_BC'} ) }, "Add BC to CA" );
throws_ok(
sub { $result->add_states( [ $states{'CA_NT'}, 'FooBar' ] ) },
qr/Bad state: FooBar/,
"Fail add FooBar state to CA in arrayref"
);
throws_ok(
( run in 1.366 second using v1.01-cache-2.11-cpan-fe3c2283af0 )