summaryrefslogtreecommitdiff
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';
+};
+