dolly 3.1.1 → 3.1.3

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.
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]