The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

#!/usr/bin/env perl
use strict;
use Test::More tests => 8;
use_ok 'Net::FreshBooks::API';
my @caught_out_xml = ();
my @fake_return_xml = map { read_file( $_ ) . '' } (
't/test_data/client.list.res.xml', #
't/test_data/client.get.res.xml',
);
# Intercept the call to freshbooks with our own data
my $override = Sub::Override->new(
'Net::FreshBooks::API::Base::send_xml_to_freshbooks' => sub {
my $class = shift;
push @caught_out_xml, shift;
# warn $caught_out_xml[-1];
return shift @fake_return_xml;
}
);
my $fb = Net::FreshBooks::API->new(
{ auth_token => 'foo',
account_name => 'bar',
}
);
ok $fb, "created the FB object";
# create the list object.
my $list = $fb->client->list(
{ email => 'janedoe@freshbooks.com',
username => 'janedoe',
}
);
ok $list, "got a list";
isa_ok $list, 'Net::FreshBooks::API::Iterator';
# check that the correct xml was sent out.
is_xml(
$caught_out_xml[0],
read_file( 't/test_data/client.list.req.xml' ) . '',
"xml sent was correct for list"
);
# check that we have the correct number of results
is $list->total, 2, "got 2 entries in total";
is $list->pages, 1, "only one page of results";
# Get the first entry
my $client = $list->next;
ok $client, "got a client";
#is $client->credit, 123.45, "got correct credit";