From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!/usr/bin/env perl
use strictures 2;
subtest users => sub{
my @users = ();
my $next_id = 1;
my $api = GitLab::API::v4::Mock->new();
my @expected;
is( $api->users(), \@expected, 'users is empty' );
$api->create_user({});
push @expected, {id=>1};
is( $api->users(), \@expected, 'one user created' );
$api->create_user({});
push @expected, {id=>2};
$api->create_user({});
push @expected, {id=>3};
is( $api->users(), \@expected, 'two more users created' );
$api->edit_user( 3, {name=>'foo'});
$expected[2]->{name} = 'foo';
is( $api->users(), \@expected, 'user was updated' );
$api->delete_user( 2 );
splice @expected, 1, 1;
is( $api->users(), \@expected, 'user was deleted' );
};
subtest reqres => sub{
my $api = GitLab::API::v4::Mock->new();
is( $api->rest_client->http_tiny_request(), undef, 'no request' );
is( $api->rest_client->http_tiny_response(), undef, 'no response' );
$api->users();
is(
$api->rest_client->http_tiny_request(),
[ 'GET', 'https://example.com/api/v4/users', {headers=>{}} ],
'recorded request arrayref looks great',
);
is(
$api->rest_client->http_tiny_response(),
{ success=>1, status=>200, content=>'[]' },
'recorded response hashref looks great',
);
};
done_testing;