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.
- checksums.yaml +4 -4
- data/lib/dolly/collection.rb +3 -1
- data/lib/dolly/connection.rb +27 -8
- data/lib/dolly/depracated_database.rb +6 -6
- data/lib/dolly/document.rb +10 -12
- data/lib/dolly/document_creation.rb +10 -2
- data/lib/dolly/document_type.rb +27 -3
- data/lib/dolly/exceptions.rb +23 -0
- data/lib/dolly/mango.rb +2 -2
- data/lib/dolly/mango_index.rb +0 -1
- data/lib/dolly/properties.rb +20 -4
- data/lib/dolly/property.rb +2 -1
- data/lib/dolly/property_manager.rb +10 -6
- data/lib/dolly/property_set.rb +5 -2
- data/lib/dolly/query.rb +4 -5
- data/lib/dolly/request_header.rb +1 -1
- data/lib/dolly/slugable.rb +56 -0
- data/lib/dolly/version.rb +1 -1
- data/lib/dolly.rb +2 -0
- data/lib/tasks/db.rake +71 -0
- data/test/document_type_test.rb +4 -0
- data/test/inheritance_test.rb +2 -2
- data/test/mango_test.rb +3 -33
- data/test/partitioned_document_test.rb +38 -0
- data/test/property_manager_test.rb +3 -1
- data/test/slugable_document_test.rb +51 -0
- metadata +21 -6
- data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/test/dummy/log/test.log +0 -111345
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
|
-
|
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.
|
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:
|
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/
|
187
|
-
- test/
|
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
|