Fix backwards compatability with existing code. Update the tests accordingly.

This commit is contained in:
Chris Nehren 2007-11-05 20:10:42 +00:00
parent 8688604ea4
commit a7c0ff0dec
2 changed files with 43 additions and 29 deletions

View file

@ -288,36 +288,52 @@ sub getJsonStatus {
my $queue = $queues{$queueName};
my $count = $queue->get_item_count;
# list of instances to be added to the %output structure in the event
# that a site name is provided
my @instances;
# and if there are items in that queue, add them to our data structure
if ($count > 0) {
QUEUEITEM:
foreach my $queueItem ($queue->peek_items(sub {1})) {
my($priority, $id, $instance) = @{$queueItem};
# if we were provided a sitename, keep the original behavior of
# only returning the data for that site.
if($sitename) {
next QUEUEITEM unless $instance->{sitename} eq $sitename;
# if a site name is provided, only process data for that site name,
# and only construct data for that site name
if($sitename ne '') {
foreach my $itemAref ($queue->peek_items(sub { shift()->{sitename} eq $sitename })) {
push @instances, $itemAref;
}
$output{$queueName} = \@instances;
}
# The site's name in the list of %output keys isn't a hashref;
# we haven't seen it yet
if(ref $output{$instance->{sitename}} ne 'HASH') {
$output{$instance->{sitename}} = {};
# otherwise, process data for all sites.
else {
foreach my $queueItem ($queue->peek_items(sub {1})) {
my($priority, $id, $instance) = @{$queueItem};
# The site's name in the list of %output keys isn't a hashref;
# we haven't seen it yet
if(ref $output{$instance->{sitename}} ne 'HASH') {
$output{$instance->{sitename}} = {};
}
# The queue name in the $output{sitename} hashref isn't an
# arrayref; we haven't seen it yet
if(ref $output{$instance->{sitename}}{$queueName} ne 'ARRAY') {
$output{$instance->{sitename}}{$queueName} = [];
}
# calculate originalPriority separately
$instance->{originalPriority} = ($instance->{priority} - 1) * 10;
# finally, add the instance to the returned data structure
push @{$output{$instance->{sitename}}{$queueName}}, $instance;
}
# The queue name in the $output{sitename} hashref isn't an
# arrayref; we haven't seen it yet
if(ref $output{$instance->{sitename}}{$queueName} ne 'ARRAY') {
$output{$instance->{sitename}}{$queueName} = [];
}
# calculate originalPriority separately
$instance->{originalPriority} = ($instance->{priority} - 1) * 10;
# finally, add the instance to the returned data structure
push @{$output{$instance->{sitename}}{$queueName}}, $instance;
}
}
# there's no items in this queue, but the version of this call that
# accepts a sitename expects an empty array ref anyway. Give it one.
else {
if($sitename) {
$output{$queueName} = \@instances;
}
}
}

View file

@ -27,9 +27,8 @@ use WRE::Spectre;
use POE::Component::IKC::ClientLite;
use JSON;
use Config::JSON;
use Data::Dumper;
use Test::More tests => 20; # increment this value for each test you create
use Test::More tests => 19; # increment this value for each test you create
$|++;
@ -85,7 +84,6 @@ SKIP: {
# then check it for the old style, single site result structure
ok($oneSiteStructure = jsonToObj($oneSiteResult), 'workflow/getJsonStatus for one site returns a proper JSON data structure');
isa_ok($oneSiteStructure, 'HASH', 'workflow/getJsonStatus for one site returns a JSON structure parseable into a Perl hashref');
ok(exists $oneSiteStructure->{$sitename}, "$sitename exists in one site result structure");
}
# Not sure how to handle these; the problem is that there may or may not be
@ -98,7 +96,7 @@ TODO: {
ok(exists $allSitesStructure->{$sitename}{$key}, "$key exists for $sitename in all sites structure");
isa_ok($allSitesStructure->{$sitename}{$key}, 'ARRAY', "$key is an arrayref in the $sitename hash in all sites structure");
ok(exists $oneSiteStructure->{$sitename}{$key}, "$key exists for $sitename in one site structure");
isa_ok($oneSiteStructure->{$sitename}{$key}, 'ARRAY', "$key is an arrayref in the $sitename hash in one site structure");
ok(exists $oneSiteStructure->{$key}, "$key exists for $sitename in one site structure");
isa_ok($oneSiteStructure->{$key}, 'ARRAY', "$key is an arrayref in the $sitename hash in one site structure");
}
}