summary refs log tree commit diff
path: root/t/07_map_reduce.t
diff options
context:
space:
mode:
Diffstat (limited to 't/07_map_reduce.t')
-rw-r--r--t/07_map_reduce.t66
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';
+};
+