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 )