Select Git revision
footer.html
01-dispatching.t 6.24 KiB
use strict;
use warnings;
use Test::More tests => 30;
BEGIN { use_ok('RedMiner::API') };
#
# Tests for internal name dispatching
#
my $redminer = RedMiner::API->new(
host => '',
key => ''
);
my $r;
$r = $redminer->_dispatch_name;
ok(!defined $r, 'Must fail: undefined name');
$r = $redminer->_dispatch_name('read');
ok(!defined $r, 'Must fail: malformed name, no objects given');
$r = $redminer->_dispatch_name('readproject2');
ok(!defined $r, 'Must fail: malformed name, inappropriate object naming');
$r = $redminer->_dispatch_name('project', { id => 1 });
ok(!defined $r, 'Must fail: malformed object ID');
$r = $redminer->_dispatch_name('createProject');
ok(!defined $r, 'Must fail: malformed name, missing data argument for a create/update method');
$r = $redminer->_dispatch_name('updateProject', 1);
ok(!defined $r, 'Must fail: malformed name, missing data argument for a create/update method');
$r = $redminer->_dispatch_name('createProject', 1, 'scalar');
ok(!defined $r, 'Must fail: malformed name, inappropriate data type for a create/update method');
$r = $redminer->_dispatch_name('updateProject', 1, 'scalar');
ok(!defined $r, 'Must fail: malformed name, inappropriate data type for a create/update method');
#
# Testing basic CRUD API:
# * List existing objects (possibly with extra metadata)s
# * Read an object (possibly with extra metadata)
# * Create a new object
# * Update an existing object
# * Delete an existing object
#
$r = $redminer->_dispatch_name('projects', { limit => 10, offset => 9 });
is_deeply($r, {
method => 'GET',
path => 'projects',
content => undef,
query => { limit => 10, offset => 9 },
}, 'projects');
# ditto
$r = $redminer->_dispatch_name('Projects', { limit => 10, offset => 9 });
is_deeply($r, {
method => 'GET',
path => 'projects',
content => undef,
query => { limit => 10, offset => 9 },
}, 'projects');
# ditto
$r = $redminer->_dispatch_name('getProjects', { limit => 10, offset => 9 });