[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