diff options
Diffstat (limited to 't/07_map_reduce.t')
-rw-r--r-- | t/07_map_reduce.t | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/t/07_map_reduce.t b/t/07_map_reduce.t new file mode 100644 index 0000000..26fdfc0 --- /dev/null +++ b/t/07_map_reduce.t @@ -0,0 +1,66 @@ +use lib 't/lib'; +use Test::More; +use Test::Riak; + +# JS source map reduce +test_riak { + my ($client, $bucket_name) = @_; + my $bucket = $client->bucket($bucket_name); + my $obj = $bucket->new_object('foo', [2])->store; + my $result = + $client->add($bucket_name, 'foo') + ->map("function (v) {return [JSON.parse(v.values[0].data)];}")->run; + is_deeply $result, [[2]], 'got valid result'; +}; + +# JS source map reduce +test_riak { + my ($client, $bucket_name) = @_; + my $bucket = $client->bucket($bucket_name); + my $obj = $bucket->new_object('foo', [2])->store; + $obj = $bucket->new_object('bar', [3])->store; + $bucket->new_object('baz', [4])->store; + my $result = + $client->add($bucket_name, "foo")->add($bucket_name, "bar") + ->add($bucket_name, "baz")->map("function (v) { return [1]; }") + ->reduce("function (v) { return [v.length]; }")->run; + is $result->[0], 3, "success map reduce"; +}; + +# JS named map reduce +test_riak { + my ($client, $bucket_name) = @_; + my $bucket = $client->bucket($bucket_name); + my $obj = $bucket->new_object("foo", [2])->store; + $obj = $bucket->new_object("bar", [3])->store; + $obj = $bucket->new_object("baz", [4])->store; + my $result = + $client->add($bucket_name, "foo")->add($bucket_name, "bar") + ->add($bucket_name, "baz")->map("Riak.mapValuesJson") + ->reduce("Riak.reduceSum")->run(); + ok $result->[0]; +}; + +# JS bucket map reduce +test_riak { + my ($client, $bucket_name) = @_; + my $bucket = $client->bucket("bucket_".int(rand(10))); + $bucket->new_object("foo", [2])->store; + $bucket->new_object("bar", [3])->store; + $bucket->new_object("baz", [4])->store; + my $result = + $client->add($bucket->name)->map("Riak.mapValuesJson") + ->reduce("Riak.reduceSum")->run; + ok $result->[0]; +}; + +# JS map reduce from object +test_riak { + my ($client, $bucket_name) = @_; + my $bucket = $client->bucket($bucket_name); + $bucket->new_object("foo", [2])->store; + my $obj = $bucket->get("foo"); + my $result = $obj->map("Riak.mapValuesJson")->run; + is_deeply $result->[0], [2], 'valid content'; +}; + |