groonga-client 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Groonga
18
18
  class Client
19
- VERSION = "0.3.3"
19
+ VERSION = "0.3.4"
20
20
  end
21
21
  end
@@ -0,0 +1,97 @@
1
+ # Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ class TestRequestSelectFilterParmater < Test::Unit::TestCase
18
+ def filter_parameter(expression, values=nil)
19
+ Groonga::Client::Request::Select::FilterParameter.new(expression, values)
20
+ end
21
+
22
+ def to_parameters(expression, values=nil)
23
+ filter_parameter(expression, values).to_parameters
24
+ end
25
+
26
+ sub_test_case("expression") do
27
+ def test_nil
28
+ assert_equal({},
29
+ to_parameters(nil))
30
+ end
31
+
32
+ def test_string
33
+ assert_equal({
34
+ :filter => "age <= 20",
35
+ },
36
+ to_parameters("age <= 20"))
37
+ end
38
+
39
+ def test_empty_string
40
+ assert_equal({},
41
+ to_parameters(""))
42
+ end
43
+ end
44
+
45
+ sub_test_case("values") do
46
+ def test_string
47
+ filter = <<-'FILTER'.strip
48
+ title == "[\"He\\ llo\"]"
49
+ FILTER
50
+ assert_equal({
51
+ :filter => filter,
52
+ },
53
+ to_parameters("title == %{value}",
54
+ :value => "[\"He\\ llo\"]"))
55
+ end
56
+
57
+ def test_symbol
58
+ assert_equal({
59
+ :filter => "title == \"Hello\"",
60
+ },
61
+ to_parameters("title == %{value}",
62
+ :value => :Hello))
63
+ end
64
+
65
+ def test_number
66
+ assert_equal({
67
+ :filter => "age <= 29",
68
+ },
69
+ to_parameters("age <= %{value}",
70
+ :value => 29))
71
+ end
72
+
73
+ def test_true
74
+ assert_equal({
75
+ :filter => "published == true",
76
+ },
77
+ to_parameters("published == %{value}",
78
+ :value => true))
79
+ end
80
+
81
+ def test_false
82
+ assert_equal({
83
+ :filter => "published == false",
84
+ },
85
+ to_parameters("published == %{value}",
86
+ :value => false))
87
+ end
88
+
89
+ def test_nil
90
+ assert_equal({
91
+ :filter => "function(null)",
92
+ },
93
+ to_parameters("function(%{value})",
94
+ :value => nil))
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,75 @@
1
+ # Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ class TestRequestSelectOutputColumnsParmater < Test::Unit::TestCase
18
+ def output_columns_parameter(prefix, output_columns)
19
+ Groonga::Client::Request::Select::OutputColumnsParameter.new(prefix,
20
+ output_columns)
21
+ end
22
+
23
+ def test_nil
24
+ assert_equal({},
25
+ output_columns_parameter("", nil).to_parameters)
26
+ end
27
+
28
+ def test_string
29
+ assert_equal({
30
+ :output_columns => "title",
31
+ },
32
+ output_columns_parameter("", "title").to_parameters)
33
+ end
34
+
35
+ def test_empty_string
36
+ assert_equal({},
37
+ output_columns_parameter("", "").to_parameters)
38
+ end
39
+
40
+ def test_symbol
41
+ assert_equal({
42
+ :output_columns => "title",
43
+ },
44
+ output_columns_parameter("", :title).to_parameters)
45
+ end
46
+
47
+ def test_array
48
+ assert_equal({
49
+ :output_columns => "title, body",
50
+ },
51
+ output_columns_parameter("", ["title", "body"]).to_parameters)
52
+ end
53
+
54
+ def test_empty_array
55
+ assert_equal({},
56
+ output_columns_parameter("", []).to_parameters)
57
+ end
58
+
59
+ def test_function
60
+ parameter = output_columns_parameter("", ["title", "snippet_html(body)"])
61
+ assert_equal({
62
+ :output_columns => "title, snippet_html(body)",
63
+ :command_version => "2",
64
+ },
65
+ parameter.to_parameters)
66
+ end
67
+
68
+ def test_prefix
69
+ parameter = output_columns_parameter("drilldowns[title].", "title")
70
+ assert_equal({
71
+ :"drilldowns[title].output_columns" => "title",
72
+ },
73
+ parameter.to_parameters)
74
+ end
75
+ end
@@ -0,0 +1,74 @@
1
+ # Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ class TestRequestSelectSortKeysParmater < Test::Unit::TestCase
18
+ def sort_keys_parameter(prefix, sort_keys)
19
+ Groonga::Client::Request::Select::SortKeysParameter.new(prefix, sort_keys)
20
+ end
21
+
22
+ def to_parameters(sort_keys)
23
+ sort_keys_parameter("", sort_keys).to_parameters
24
+ end
25
+
26
+ def test_nil
27
+ assert_equal({},
28
+ to_parameters(nil))
29
+ end
30
+
31
+ def test_string
32
+ assert_equal({
33
+ :sort_keys => "-_score, _id",
34
+ :sortby => "-_score, _id",
35
+ },
36
+ to_parameters("-_score, _id"))
37
+ end
38
+
39
+ def test_empty_string
40
+ assert_equal({},
41
+ to_parameters(""))
42
+ end
43
+
44
+ def test_symbol
45
+ assert_equal({
46
+ :sort_keys => "_score",
47
+ :sortby => "_score",
48
+ },
49
+ to_parameters(:_score))
50
+ end
51
+
52
+ def test_array
53
+ assert_equal({
54
+ :sort_keys => "-_score, _id",
55
+ :sortby => "-_score, _id",
56
+ },
57
+ to_parameters(["-_score", :_id]))
58
+ end
59
+
60
+ def test_empty_array
61
+ assert_equal({},
62
+ to_parameters([]))
63
+ end
64
+
65
+ def test_prefix
66
+ parameter = sort_keys_parameter("slices[tag].", "-_score, _id")
67
+
68
+ assert_equal({
69
+ :"slices[tag].sort_keys" => "-_score, _id",
70
+ :"slices[tag].sortby" => "-_score, _id",
71
+ },
72
+ parameter.to_parameters)
73
+ end
74
+ end
@@ -0,0 +1,58 @@
1
+ # Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ class TestRequestSelectValuesParmater < Test::Unit::TestCase
18
+ def values_parameter(values)
19
+ names = [:match_columns]
20
+ Groonga::Client::Request::ValuesParameter.new(names, values)
21
+ end
22
+
23
+ def test_nil
24
+ assert_equal({},
25
+ values_parameter(nil).to_parameters)
26
+ end
27
+
28
+ def test_string
29
+ assert_equal({
30
+ :match_columns => "title",
31
+ },
32
+ values_parameter("title").to_parameters)
33
+ end
34
+
35
+ def test_empty_string
36
+ assert_equal({},
37
+ values_parameter("").to_parameters)
38
+ end
39
+
40
+ def test_symbol
41
+ assert_equal({
42
+ :match_columns => "title",
43
+ },
44
+ values_parameter(:title).to_parameters)
45
+ end
46
+
47
+ def test_array
48
+ assert_equal({
49
+ :match_columns => "title, body",
50
+ },
51
+ values_parameter(["title", "body"]).to_parameters)
52
+ end
53
+
54
+ def test_empty_array
55
+ assert_equal({},
56
+ values_parameter([]).to_parameters)
57
+ end
58
+ end
@@ -0,0 +1,50 @@
1
+ # Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ class TestRequestBase < Test::Unit::TestCase
18
+ sub_test_case "#extensions" do
19
+ setup do
20
+ @request = Groonga::Client::Request::Base.new("status")
21
+ end
22
+
23
+ test "Module" do
24
+ assert do
25
+ not @request.respond_to?(:new_method)
26
+ end
27
+ extension = Module.new do
28
+ def new_method
29
+ end
30
+ end
31
+ extended_request = @request.extensions(extension)
32
+ assert do
33
+ extended_request.respond_to?(:new_method)
34
+ end
35
+ end
36
+
37
+ test "block" do
38
+ assert do
39
+ not @request.respond_to?(:new_method)
40
+ end
41
+ extended_request = @request.extensions do
42
+ def new_method
43
+ end
44
+ end
45
+ assert do
46
+ extended_request.respond_to?(:new_method)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,131 @@
1
+ # Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ class TestRequestSelect < Test::Unit::TestCase
18
+ setup do
19
+ @request = Groonga::Client::Request::Select.new("posts")
20
+ end
21
+
22
+ sub_test_case("#drilldowns") do
23
+ def drilldown
24
+ @request.drilldowns("label")
25
+ end
26
+
27
+ sub_test_case("#keys") do
28
+ test "String" do
29
+ assert_equal({
30
+ :table => "posts",
31
+ :"drilldowns[label].keys" => "tag",
32
+ },
33
+ drilldown.keys("tag").to_parameters)
34
+ end
35
+
36
+ test "Array" do
37
+ assert_equal({
38
+ :table => "posts",
39
+ :"drilldowns[label].keys" => "start, end",
40
+ },
41
+ drilldown.keys(["start", "end"]).to_parameters)
42
+ end
43
+ end
44
+
45
+ sub_test_case("#sort_keys") do
46
+ test "String" do
47
+ assert_equal({
48
+ :table => "posts",
49
+ :"drilldowns[label].sort_keys" => "-_nsubrecs",
50
+ :"drilldowns[label].sortby" => "-_nsubrecs",
51
+ },
52
+ drilldown.sort_keys("-_nsubrecs").to_parameters)
53
+ end
54
+
55
+ test "Array" do
56
+ assert_equal({
57
+ :table => "posts",
58
+ :"drilldowns[label].sort_keys" => "-_nsubrecs, name",
59
+ :"drilldowns[label].sortby" => "-_nsubrecs, name",
60
+ },
61
+ drilldown.sort_keys(["-_nsubrecs", "name"]).to_parameters)
62
+ end
63
+ end
64
+
65
+ sub_test_case("#output_columns") do
66
+ test "String" do
67
+ assert_equal({
68
+ :table => "posts",
69
+ :"drilldowns[label].output_columns" => "_key, -_nsubrecs",
70
+ },
71
+ drilldown.output_columns("_key, -_nsubrecs").to_parameters)
72
+ end
73
+
74
+ test "Array" do
75
+ assert_equal({
76
+ :table => "posts",
77
+ :"drilldowns[label].output_columns" => "_key, -_nsubrecs",
78
+ },
79
+ drilldown.output_columns(["_key, -_nsubrecs"]).to_parameters)
80
+ end
81
+ end
82
+
83
+ sub_test_case("#offset") do
84
+ test "Integer" do
85
+ assert_equal({
86
+ :table => "posts",
87
+ :"drilldowns[label].offset" => 29,
88
+ },
89
+ drilldown.offset(29).to_parameters)
90
+ end
91
+ end
92
+
93
+ sub_test_case("#limit") do
94
+ test "Integer" do
95
+ assert_equal({
96
+ :table => "posts",
97
+ :"drilldowns[label].limit" => 29,
98
+ },
99
+ drilldown.limit(29).to_parameters)
100
+ end
101
+ end
102
+
103
+ sub_test_case("#calc_types") do
104
+ test "String" do
105
+ assert_equal({
106
+ :table => "posts",
107
+ :"drilldowns[label].calc_types" => "COUNT|AVG",
108
+ },
109
+ drilldown.calc_types("COUNT|AVG").to_parameters)
110
+ end
111
+
112
+ test "Array" do
113
+ assert_equal({
114
+ :table => "posts",
115
+ :"drilldowns[label].calc_types" => "COUNT|AVG",
116
+ },
117
+ drilldown.calc_types(["COUNT", "AVG"]).to_parameters)
118
+ end
119
+ end
120
+
121
+ sub_test_case("#calc_target") do
122
+ test "Symbol" do
123
+ assert_equal({
124
+ :table => "posts",
125
+ :"drilldowns[label].calc_target" => "rank",
126
+ },
127
+ drilldown.calc_target(:rank).to_parameters)
128
+ end
129
+ end
130
+ end
131
+ end