[Jifty-commit] r4893 - in Net-Jifty: . t
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Mon Jan 21 00:56:04 EST 2008
Author: sartak
Date: Mon Jan 21 00:56:03 2008
New Revision: 4893
Added:
Net-Jifty/t/004-search.t
Modified:
Net-Jifty/ (props changed)
Net-Jifty/Changes
Net-Jifty/lib/Net/Jifty.pm
Log:
r50615 at onn: sartak | 2008-01-21 00:55:56 -0500
Allow search arguments to be arrayrefs, to facilitate using hashes for them.
e.g: 'id => [1, 5]' is equivalent to 'id => 1, id => 5'
Modified: Net-Jifty/Changes
==============================================================================
--- Net-Jifty/Changes (original)
+++ Net-Jifty/Changes Mon Jan 21 00:56:03 2008
@@ -2,6 +2,8 @@
0.05
Removed canonicalize_action and canonicalize_model
+ Allow search arguments to be arrayrefs, to facilitate using hashes for
+ them. e.g: 'id => [1, 5]' is equivalent to 'id => 1, id => 5'
0.04 Mon Dec 7 15:28:23
Work around an HTTP::Cookies bug with 'localhost'
Modified: Net-Jifty/lib/Net/Jifty.pm
==============================================================================
--- Net-Jifty/lib/Net/Jifty.pm (original)
+++ Net-Jifty/lib/Net/Jifty.pm Mon Jan 21 00:56:03 2008
@@ -436,8 +436,25 @@
sub search {
my $self = shift;
my $model = shift;
+ my @args;
- return $self->get(["search", $model, @_]);
+ while (@_) {
+ if (@_ == 1) {
+ push @args, shift;
+ }
+ else {
+ # id => [1,2,3] maps to id/1/id/2/id/3
+ if (ref($_[1]) eq 'ARRAY') {
+ push @args, map { $_[0] => $_ } @{ $_[1] };
+ splice @_, 0, 2;
+ }
+ else {
+ push @args, splice @_, 0, 2;
+ }
+ }
+ }
+
+ return $self->get(["search", $model, @args]);
}
=head2 get_sid
Added: Net-Jifty/t/004-search.t
==============================================================================
--- (empty file)
+++ Net-Jifty/t/004-search.t Mon Jan 21 00:56:03 2008
@@ -0,0 +1,49 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More tests => 18;
+use lib 't/lib';
+use Net::Jifty::Test;
+
+my $j = Net::Jifty::Test->new();
+
+search('http://jifty.org/=/search/Foo/id/1/created/today.yml',
+ "Foo", id => 1, created => "today");
+
+search('http://jifty.org/=/search/Foo/id/1/id/2/created/today.yml',
+ "Foo", id => 1, id => 2, created => "today");
+
+search('http://jifty.org/=/search/Foo/id/1/id/2/created/today.yml',
+ "Foo", id => [1, 2], created => "today");
+
+search('http://jifty.org/=/search/Foo/id/1/created/today/out.yml',
+ "Foo", id => 1, created => "today", "out");
+
+search('http://jifty.org/=/search/Foo/id/1/id/2/created/today/out.yml',
+ "Foo", id => 1, id => 2, created => "today", "out");
+
+search('http://jifty.org/=/search/Foo/id/1/id/2/created/today/out.yml',
+ "Foo", id => [1, 2], created => "today", "out");
+
+search('http://jifty.org/=/search/Foo/id/1/id/2/id.yml',
+ "Foo", id => [1, 2], "id");
+
+search('http://jifty.org/=/search/Foo/id/1/id/2/id/3/id/4/id.yml',
+ "Foo", id => [1, 2], id => [3, 4], "id");
+
+search('http://jifty.org/=/search/Foo/id/1/id/2/inner/hi/id/3/id/4/id.yml',
+ "Foo", id => [1, 2], inner => "hi", id => [3, 4], "id");
+
+sub search {
+ my $url = shift;
+ my @args = @_;
+
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+ $j->ua->clear;
+ $j->search(@_);
+ my ($name, $args) = $j->ua->next_call();
+ is($name, 'get', 'ua->get method called for search');
+ is($args->[1], $url, 'correct URL');
+}
+
More information about the Jifty-commit
mailing list