dolly 3.1.1 → 3.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/test/mango_test.rb CHANGED
@@ -26,7 +26,9 @@ class MangoTest < Test::Unit::TestCase
26
26
 
27
27
  view_resp = build_view_response [data]
28
28
  empty_resp = build_view_response []
29
- not_found_resp = generic_response [{ key: "foo_bar/2", error: "not_found" }]
29
+
30
+ generic_response [{ key: "foo_bar/2", error: "not_found" }]
31
+
30
32
  @multi_resp = build_view_response all_docs
31
33
  @multi_type_resp = build_view_collation_response all_docs
32
34
 
@@ -68,22 +70,6 @@ class MangoTest < Test::Unit::TestCase
68
70
  assert_equal(FooBar.find_by(foo: 'bar').class, FooBar)
69
71
  end
70
72
 
71
- test '#find_by for a property that does not have an index' do
72
- #TODO: clean up all the fake request creation
73
- resp = { docs: [{ foo: 'bar', id: "foo_bar/1"} ] }
74
- key = 'date'
75
-
76
- stub_request(:post, query_base_path).
77
- to_return(body: resp.to_json)
78
-
79
- stub_request(:get, "#{all_docs_path}?key=\"_design/index_#{key}\"").
80
- to_return(body: { rows: [] }.to_json)
81
-
82
- assert_raise Dolly::IndexNotFoundError do
83
- FooBar.find_by(date: Date.today)
84
- end
85
- end
86
-
87
73
  test '#find_by with no returned data' do
88
74
  resp = { docs: [] }
89
75
 
@@ -125,22 +111,6 @@ class MangoTest < Test::Unit::TestCase
125
111
  assert_equal(FooBar.where(foo: { eq: 'bar' }).map(&:class).uniq, [FooBar])
126
112
  end
127
113
 
128
- test '#where for a property that does not have an index' do
129
- #TODO: clean up all the fake request creation
130
- resp = { docs: [{ foo: 'bar', id: "foo_bar/1"} ] }
131
-
132
- stub_request(:post, query_base_path).
133
- to_return(body: resp.to_json)
134
-
135
- key = 'date'
136
- stub_request(:get, "#{all_docs_path}?key=\"_design/index_#{key}\"").
137
- to_return(body: { rows: [] }.to_json)
138
-
139
- assert_raise Dolly::IndexNotFoundError do
140
- FooBar.where(date: Date.today)
141
- end
142
- end
143
-
144
114
  test '#where with no returned data' do
145
115
  resp = { docs: [] }
146
116
 
@@ -0,0 +1,38 @@
1
+ require 'test_helper'
2
+
3
+ class PartitionedDocumentTest < Test::Unit::TestCase
4
+ PARTITIONED_DB_PATH = 'http://localhost:5984/partitioned/'
5
+
6
+ test 'unpartitioned DB will raise exception' do
7
+ stub_request(:get, PARTITIONED_DB_PATH).
8
+ with(headers: { 'Content-Type'=>'application/json' }).
9
+ to_return(status: 200, body: { db_name: 'partitioned' }.to_json)
10
+
11
+ assert_raise(Dolly::PartitionedDataBaseExpectedError) do
12
+ class Partitioned < Dolly::Document
13
+ partitioned!
14
+ property :foo, class_name: String
15
+ end
16
+ end
17
+ end
18
+
19
+ test 'document id is partitioned' do
20
+ stub_request(:get, PARTITIONED_DB_PATH).
21
+ with(headers: { 'Content-Type'=>'application/json' }).
22
+ to_return(status: 200, body: { db_name: 'partitioned', props: { partitioned: true } }.to_json)
23
+
24
+ class Partitioned < Dolly::Document
25
+ set_namespace 'partitioned'
26
+ partitioned!
27
+
28
+ property :foo, class_name: String
29
+ end
30
+
31
+ assert_equal Partitioned.absolute_id("partitioned:abc"), "abc"
32
+
33
+ doc = Partitioned.new(foo: "something")
34
+ assert doc.id =~ /^partitioned:.+/
35
+ end
36
+ end
37
+
38
+
@@ -4,15 +4,17 @@ class TestDoc < Dolly::Document
4
4
  property :name, class_name: String
5
5
  property :email, class_name: String
6
6
  property :last_name, class_name: String
7
+ property :active, class_name: TrueClass
7
8
  end
8
9
 
9
10
  class PropertyManagerTest < Test::Unit::TestCase
10
11
  test 'write_attribute with nil value' do
11
- doc = TestDoc.new(name: 'name', last_name: nil, email: 'does not change')
12
+ doc = TestDoc.new(name: 'name', last_name: nil, email: 'does not change', active: 'true')
12
13
  assert_equal(doc.name, 'name')
13
14
  doc.update_properties(name: nil)
14
15
  assert_equal(doc.name, nil)
15
16
  assert_equal(doc.last_name, nil)
16
17
  assert_equal(doc.email, 'does not change')
18
+ assert_equal(doc.active, true)
17
19
  end
18
20
  end
@@ -0,0 +1,51 @@
1
+ require 'test_helper'
2
+
3
+ class SlugedDocument < Dolly::Document
4
+ include Dolly::Slugable
5
+ property :name, class_name: String
6
+ set_slug :name
7
+ end
8
+
9
+ class MultiSlugedDocument < Dolly::Document
10
+ include Dolly::Slugable
11
+ property :foo, class_name: String
12
+ property :bar, class_name: Integer
13
+
14
+ set_slug :foo, :bar
15
+ end
16
+
17
+ class CustomSeparatorSlug < Dolly::Document
18
+ include Dolly::Slugable
19
+ property :a, class_name: Integer
20
+ property :b, class_name: String
21
+ property :c, class_name: String
22
+
23
+ set_slug :a, :b, :c, separator: '*'
24
+ end
25
+
26
+ class SlugableDocumentTest < Test::Unit::TestCase
27
+ test 'default id of slugable document is name' do
28
+ assert_equal SlugedDocument.new(name: "a").id, "sluged_document/a"
29
+ end
30
+
31
+ test 'bundled slug id' do
32
+ assert_equal MultiSlugedDocument.new(foo: "a", bar: 1).id, "multi_sluged_document/a_1"
33
+ end
34
+
35
+ test 'bundled slug id cant be empty' do
36
+ assert_equal MultiSlugedDocument.new(foo: "a").id, "multi_sluged_document/a_"
37
+ end
38
+
39
+ test 'custom seperator slug' do
40
+ assert_equal CustomSeparatorSlug.new(a: 1, b: 'x', c: 'c').id, "custom_separator_slug/1*x*c"
41
+ end
42
+
43
+ test 'raise missing slug exception' do
44
+ assert_raise(Dolly::MissingSlugableProperties) do
45
+ class MissingSlugDocument < Dolly::Document
46
+ include Dolly::Slugable
47
+ set_slug :foo
48
+ end
49
+ end
50
+ end
51
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dolly
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - javierg
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-05 00:00:00.000000000 Z
11
+ date: 2022-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '13.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rexml
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: test-unit-full
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -141,6 +155,7 @@ files:
141
155
  - lib/dolly/query_arguments.rb
142
156
  - lib/dolly/request.rb
143
157
  - lib/dolly/request_header.rb
158
+ - lib/dolly/slugable.rb
144
159
  - lib/dolly/timestamp.rb
145
160
  - lib/dolly/version.rb
146
161
  - lib/dolly/view_query.rb
@@ -151,12 +166,12 @@ files:
151
166
  - test/bulk_document_test.rb
152
167
  - test/document_test.rb
153
168
  - test/document_type_test.rb
154
- - test/dummy/config/initializers/filter_parameter_logging.rb
155
- - test/dummy/log/test.log
156
169
  - test/inheritance_test.rb
157
170
  - test/mango_index_test.rb
158
171
  - test/mango_test.rb
172
+ - test/partitioned_document_test.rb
159
173
  - test/property_manager_test.rb
174
+ - test/slugable_document_test.rb
160
175
  - test/support/test.txt
161
176
  - test/test_helper.rb
162
177
  - test/view_query_test.rb
@@ -183,8 +198,8 @@ signing_key:
183
198
  specification_version: 4
184
199
  summary: will write something
185
200
  test_files:
186
- - test/dummy/config/initializers/filter_parameter_logging.rb
187
- - test/dummy/log/test.log
201
+ - test/partitioned_document_test.rb
202
+ - test/slugable_document_test.rb
188
203
  - test/inheritance_test.rb
189
204
  - test/document_type_test.rb
190
205
  - test/mango_index_test.rb
@@ -1,4 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Configure sensitive parameters which will be filtered from the log file.
4
- Rails.application.config.filter_parameters += [:password]