Finance-Bank-IE

 view release on metacpan or  search on metacpan

t/PTSB.t  view on Meta::CPAN


    Test::MockBank->globalstate( 'loggedin', 0 );
    ok( Finance::Bank::IE::PTSB->funds_transfer( $testaccount->nick, $testbeneficiary->nick, 1 ), "cached config (funds_transfer)" );

    ok( Finance::Bank::IE::PTSB->funds_transfer( $testaccount, $testbeneficiary->nick, 1 ), "funds_transfer accepts an Account object as a source" );

    ok( Finance::Bank::IE::PTSB->funds_transfer( $testaccount, $testbeneficiary, 1 ), "funds_transfer accepts an Account object as a destination" );

    ok( !Finance::Bank::IE::PTSB->funds_transfer( $testaccount, "bogus", 1 ),
        "funds_transfer fails to transfer to account not in beneficiaries list" );

  SKIP: {
        skip "no ambiguous beneficiaries", 1 unless $ambiguousbeneficiary;
        ok( !Finance::Bank::IE::PTSB->funds_transfer( $testaccount, $ambiguousbeneficiary, 1 ), "funds_transfer fails if destination is ambiguous" );
    }

    my $actual_funds_transfer_tests = $test_builder->current_test() - $first_funds_transfer_test;
    if ( $actual_funds_transfer_tests != $FUNDS_TRANSFER_TESTS ) {
        die "\$FUNDS_TRANSFER_TESTS needs to be updated to $actual_funds_transfer_tests\n";
    }
}

# test use of cached config (and first make sure we /have/ cached config)
Test::MockBank->globalstate( 'loggedin', 0 );
( @details ) = Finance::Bank::IE::PTSB->account_details( $testaccount->account_no, $config );
Test::MockBank->globalstate( 'loggedin', 0 );
( @details ) = Finance::Bank::IE::PTSB->account_details( $testaccount->account_no );
ok( @details, "cached config (account_details)" );
Test::MockBank->globalstate( 'loggedin', 0 );
@accounts = Finance::Bank::IE::PTSB->check_balance();
ok( @accounts, "cached config (check_balance)" );
Test::MockBank->globalstate( 'loggedin', 0 );
$beneficiaries = Finance::Bank::IE::PTSB->list_beneficiaries( $testaccount );
ok( $beneficiaries, "cached config (list beneficiaries)" );

Finance::Bank::IE::PTSB->reset and
    Test::MockBank->globalstate( 'loggedin', 0 );
( @details ) = Finance::Bank::IE::PTSB->account_details( $testaccount->account_no, $config );
ok( @details, "can fetch details directly" );

# _scrub_page
{
    local $/ = undef;
    open( my $unscrubbed, "<", "data/PTSB/unscrubbed" );
    my $content = <$unscrubbed>;
    my $scrubbed = Finance::Bank::IE::PTSB->_scrub_page( $content );
    # checking if it really is scrubbed is performed in scrubbed.t
    ok( $scrubbed, "_scrub_page" );
}

SKIP:
{
    skip "these tests don't work against the live site", 3 if $live;

    # some failure scenarios
    Finance::Bank::IE::PTSB->reset and
        Test::MockBank->globalstate( 'loggedin', 0 );

    # if we get a page failure, it should trip up the code but not
    # cause it to crash
    Test::MockBank->fail_on_iterations( 1 );
    @accounts = Finance::Bank::IE::PTSB->check_balance( $config );
    ok( !@accounts, "can handle page-load failure (check_balance)" );

    Finance::Bank::IE::PTSB->reset and
        Test::MockBank->globalstate( 'loggedin', 0 );
    Test::MockBank->fail_on_iterations( 1 );
    ( @details ) = Finance::Bank::IE::PTSB->account_details( $testaccount, $config );
    ok( !@details, "can handle page-load failure (account_detail)" );

    # this checks the _third_party code as well
    Finance::Bank::IE::PTSB->reset and
        Test::MockBank->globalstate( 'loggedin', 0 );
    Test::MockBank->fail_on_iterations( 5 );
    $beneficiaries = Finance::Bank::IE::PTSB->list_beneficiaries( $testaccount,
                                                                  $config );
    ok( !$beneficiaries, "can handle page-load failure (list_beneficiaries 1)")
        or diag Dumper($beneficiaries);

    Finance::Bank::IE::PTSB->reset and
        Test::MockBank->globalstate( 'loggedin', 0 );
    Test::MockBank->fail_on_iterations( 6 );
    $beneficiaries = Finance::Bank::IE::PTSB->list_beneficiaries( $testaccount,
                                                                  $config );
    ok( !$beneficiaries, "can handle page-load failure (list_beneficiaries 2)");

    Finance::Bank::IE::PTSB->reset and
        Test::MockBank->globalstate( 'loggedin', 0 );
    Test::MockBank->fail_on_iterations( 5 );
    $beneficiary_add = Finance::Bank::IE::PTSB->add_beneficiary( $testaccount, @new_beneficiary, $config );
    ok( !$beneficiary_add, "can handle page-load failure (add_beneficiary)");

    Finance::Bank::IE::PTSB->reset and
        Test::MockBank->globalstate( 'loggedin', 0 );
    Test::MockBank->fail_on_iterations( 7 );
    $beneficiary_add = Finance::Bank::IE::PTSB->add_beneficiary( $testaccount, @new_beneficiary, $config );
    ok( !$beneficiary_add, "can handle page-load failure (add_beneficiary 2)");

    Finance::Bank::IE::PTSB->reset and
        Test::MockBank->globalstate( 'loggedin', 0 );
    Test::MockBank->fail_on_iterations( 8 );
    $beneficiary_add = Finance::Bank::IE::PTSB->add_beneficiary( $testaccount, @new_beneficiary, $config );
    ok( !$beneficiary_add, "can handle page-load failure (add_beneficiary 2)");

    Finance::Bank::IE::PTSB->reset and
        Test::MockBank->globalstate( 'loggedin', 0 );
    Test::MockBank->fail_on_iterations( 9 );
    $beneficiary_add = Finance::Bank::IE::PTSB->add_beneficiary( $testaccount, @new_beneficiary, $config );
    ok( !$beneficiary_add, "can handle page-load failure (add_beneficiary 2)");

    # looping login page
    Test::MockBank->fail_on_iterations( 0 );
    Test::MockBank->globalstate( 'loggedin', 0 );
    Test::MockBank->globalstate( 'loop', 1 );
    @accounts = Finance::Bank::IE::PTSB->check_balance( $config );
    ok( !@accounts, "can handle looping login page" );

    Test::MockBank->globalstate( 'loop', 0 );
}

# utterly bogus URL (mainly for coverage)
Test::MockBank->globalstate( 'loggedin', 0 );
my $return = Finance::Bank::IE::PTSB->_get( 'breakit', $config );
ok( !defined( $return ), "bogus url" ) or diag "expected undef, got $return";
$return = Finance::Bank::IE::PTSB->_get( 'breakit' );
ok( !defined( $return ), "bogus url" ) or diag "expected undef, got $return";



( run in 1.007 second using v1.01-cache-2.11-cpan-d7f47b0818f )