use strict;
use warnings;

use Test::More tests => 4;
use Test::Deep;

use TestRail::API;

{
    my $this = { this => 'thing' };
    my $that = { that => 'thing' };
    my $theOther = { other => 'thing'};

    no warnings qw{redefine once};
    local *TestRail::API::_doRequest= sub { return $this };
    use warnings;

    my $tr = bless({},'TestRail::API');

    is_deeply($tr->getCaseFields(),$this, "getCaseFields appears to operate correctly on initial hit");

    no warnings qw{redefine once};
    local *TestRail::API::_doRequest= sub { my ($self,$url, $method, $input) = @_; return $that unless $method; return $input };
    use warnings;

    is_deeply($tr->getCaseFields(),$this, "getCaseFields caches correctly");
    is_deeply($tr->addCaseField(%$theOther),$theOther,"addCaseField appears to grab and pass options correctly");

    is_deeply($tr->getCaseFields(),$that, "getCaseFields invalidates cache correctly");

}