dolly 1.1.5 → 3.1.0

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.
Files changed (87) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +78 -0
  3. data/lib/dolly.rb +2 -23
  4. data/lib/dolly/attachment.rb +29 -0
  5. data/lib/dolly/bulk_document.rb +27 -26
  6. data/lib/dolly/class_methods_delegation.rb +15 -0
  7. data/lib/dolly/collection.rb +32 -65
  8. data/lib/dolly/configuration.rb +35 -10
  9. data/lib/dolly/connection.rb +86 -22
  10. data/lib/dolly/depracated_database.rb +24 -0
  11. data/lib/dolly/document.rb +48 -198
  12. data/lib/dolly/document_creation.rb +20 -0
  13. data/lib/dolly/document_state.rb +66 -0
  14. data/lib/dolly/document_type.rb +47 -0
  15. data/lib/dolly/exceptions.rb +32 -0
  16. data/lib/dolly/identity_properties.rb +29 -0
  17. data/lib/dolly/mango.rb +156 -0
  18. data/lib/dolly/mango_index.rb +73 -0
  19. data/lib/dolly/properties.rb +36 -0
  20. data/lib/dolly/property.rb +58 -47
  21. data/lib/dolly/property_manager.rb +53 -0
  22. data/lib/dolly/property_set.rb +23 -0
  23. data/lib/dolly/query.rb +63 -75
  24. data/lib/dolly/query_arguments.rb +35 -0
  25. data/lib/dolly/request.rb +12 -105
  26. data/lib/dolly/request_header.rb +26 -0
  27. data/lib/dolly/timestamp.rb +24 -0
  28. data/lib/dolly/version.rb +1 -1
  29. data/lib/dolly/view_query.rb +21 -0
  30. data/lib/{dolly → railties}/railtie.rb +2 -1
  31. data/lib/refinements/hash_refinements.rb +27 -0
  32. data/lib/refinements/string_refinements.rb +28 -0
  33. data/lib/tasks/db.rake +27 -4
  34. data/test/bulk_document_test.rb +8 -5
  35. data/test/document_test.rb +132 -95
  36. data/test/document_type_test.rb +28 -0
  37. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  38. data/test/dummy/log/test.log +55435 -33484
  39. data/test/inheritance_test.rb +23 -0
  40. data/test/mango_index_test.rb +64 -0
  41. data/test/mango_test.rb +273 -0
  42. data/test/property_manager_test.rb +18 -0
  43. data/test/test_helper.rb +63 -18
  44. data/test/view_query_test.rb +27 -0
  45. metadata +66 -138
  46. data/Rakefile +0 -11
  47. data/lib/dolly/bulk_error.rb +0 -16
  48. data/lib/dolly/db_config.rb +0 -20
  49. data/lib/dolly/interpreter.rb +0 -5
  50. data/lib/dolly/logger.rb +0 -9
  51. data/lib/dolly/name_space.rb +0 -28
  52. data/lib/dolly/timestamps.rb +0 -21
  53. data/lib/exceptions/dolly.rb +0 -38
  54. data/test/collection_test.rb +0 -59
  55. data/test/configuration_test.rb +0 -9
  56. data/test/dummy/README.rdoc +0 -28
  57. data/test/dummy/Rakefile +0 -6
  58. data/test/dummy/app/assets/javascripts/application.js +0 -13
  59. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  60. data/test/dummy/app/controllers/application_controller.rb +0 -5
  61. data/test/dummy/app/helpers/application_helper.rb +0 -2
  62. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  63. data/test/dummy/bin/bundle +0 -3
  64. data/test/dummy/bin/rails +0 -4
  65. data/test/dummy/bin/rake +0 -4
  66. data/test/dummy/config.ru +0 -4
  67. data/test/dummy/config/application.rb +0 -27
  68. data/test/dummy/config/boot.rb +0 -5
  69. data/test/dummy/config/couchdb.yml +0 -13
  70. data/test/dummy/config/environment.rb +0 -5
  71. data/test/dummy/config/environments/development.rb +0 -29
  72. data/test/dummy/config/environments/production.rb +0 -80
  73. data/test/dummy/config/environments/test.rb +0 -36
  74. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  75. data/test/dummy/config/initializers/inflections.rb +0 -16
  76. data/test/dummy/config/initializers/mime_types.rb +0 -5
  77. data/test/dummy/config/initializers/secret_token.rb +0 -12
  78. data/test/dummy/config/initializers/session_store.rb +0 -3
  79. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  80. data/test/dummy/config/locales/en.yml +0 -23
  81. data/test/dummy/config/routes.rb +0 -56
  82. data/test/dummy/lib/couch_rest_adapter/railtie.rb +0 -10
  83. data/test/dummy/public/404.html +0 -58
  84. data/test/dummy/public/422.html +0 -58
  85. data/test/dummy/public/500.html +0 -57
  86. data/test/dummy/public/favicon.ico +0 -0
  87. data/test/factories/factories.rb +0 -8
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class Foo < Dolly::Document
4
+ end
5
+
6
+ class ViewQueryTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ all_docs = [ {foo: 'Foo B', bar: 'Bar B', type: 'foo_bar'}, {foo: 'Foo A', bar: 'Bar A', type: 'foo_bar'}]
10
+ @multi_type_resp = build_view_collation_response all_docs
11
+
12
+ stub_request(:get, "http://localhost:5984/test/_design/doc/_view/id?include_docs=true").
13
+ to_return(body: @multi_type_resp.to_json)
14
+
15
+ end
16
+
17
+ test 'raw_view' do
18
+ assert_equal(Foo.raw_view('doc', 'id'), @multi_type_resp)
19
+ assert_equal(Foo.raw_view('doc', 'id')[:rows].any?, true)
20
+ assert_equal(Foo.raw_view('doc', 'id')[:total_rows].nil?, false)
21
+ end
22
+
23
+ test 'view_value' do
24
+ expected = @multi_type_resp[:rows].flat_map{|res| res[:value]}
25
+ assert_equal(Foo.view_value('doc', 'id'), expected)
26
+ end
27
+ end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dolly
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - javierg
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-22 00:00:00.000000000 Z
11
+ date: 2021-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: railties
14
+ name: oj
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,49 +25,49 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: httparty
28
+ name: curb
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.9.8
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.9.8
41
41
  - !ruby/object:Gem::Dependency
42
- name: rails
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '2.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.3'
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.3'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake
70
+ name: test-unit-full
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,49 +81,21 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: fakeweb
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 1.3.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 1.3.0
97
- - !ruby/object:Gem::Dependency
98
- name: factory_girl_rails
84
+ name: webmock
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - "~>"
87
+ - - ">="
102
88
  - !ruby/object:Gem::Version
103
- version: '4.2'
89
+ version: '0'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - "~>"
94
+ - - ">="
109
95
  - !ruby/object:Gem::Version
110
- version: '4.2'
96
+ version: '0'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: mocha
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.4'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.4'
125
- - !ruby/object:Gem::Dependency
126
- name: timecop
127
99
  requirement: !ruby/object:Gem::Requirement
128
100
  requirements:
129
101
  - - ">="
@@ -143,70 +115,54 @@ executables: []
143
115
  extensions: []
144
116
  extra_rdoc_files: []
145
117
  files:
146
- - Rakefile
118
+ - README.md
147
119
  - lib/dolly.rb
120
+ - lib/dolly/attachment.rb
148
121
  - lib/dolly/bulk_document.rb
149
- - lib/dolly/bulk_error.rb
122
+ - lib/dolly/class_methods_delegation.rb
150
123
  - lib/dolly/collection.rb
151
124
  - lib/dolly/configuration.rb
152
125
  - lib/dolly/connection.rb
153
- - lib/dolly/db_config.rb
126
+ - lib/dolly/depracated_database.rb
154
127
  - lib/dolly/document.rb
155
- - lib/dolly/interpreter.rb
156
- - lib/dolly/logger.rb
157
- - lib/dolly/name_space.rb
128
+ - lib/dolly/document_creation.rb
129
+ - lib/dolly/document_state.rb
130
+ - lib/dolly/document_type.rb
131
+ - lib/dolly/exceptions.rb
132
+ - lib/dolly/identity_properties.rb
133
+ - lib/dolly/mango.rb
134
+ - lib/dolly/mango_index.rb
135
+ - lib/dolly/properties.rb
158
136
  - lib/dolly/property.rb
137
+ - lib/dolly/property_manager.rb
138
+ - lib/dolly/property_set.rb
159
139
  - lib/dolly/query.rb
160
- - lib/dolly/railtie.rb
140
+ - lib/dolly/query_arguments.rb
161
141
  - lib/dolly/request.rb
162
- - lib/dolly/timestamps.rb
142
+ - lib/dolly/request_header.rb
143
+ - lib/dolly/timestamp.rb
163
144
  - lib/dolly/version.rb
164
- - lib/exceptions/dolly.rb
145
+ - lib/dolly/view_query.rb
146
+ - lib/railties/railtie.rb
147
+ - lib/refinements/hash_refinements.rb
148
+ - lib/refinements/string_refinements.rb
165
149
  - lib/tasks/db.rake
166
150
  - test/bulk_document_test.rb
167
- - test/collection_test.rb
168
- - test/configuration_test.rb
169
151
  - test/document_test.rb
170
- - test/dummy/README.rdoc
171
- - test/dummy/Rakefile
172
- - test/dummy/app/assets/javascripts/application.js
173
- - test/dummy/app/assets/stylesheets/application.css
174
- - test/dummy/app/controllers/application_controller.rb
175
- - test/dummy/app/helpers/application_helper.rb
176
- - test/dummy/app/views/layouts/application.html.erb
177
- - test/dummy/bin/bundle
178
- - test/dummy/bin/rails
179
- - test/dummy/bin/rake
180
- - test/dummy/config.ru
181
- - test/dummy/config/application.rb
182
- - test/dummy/config/boot.rb
183
- - test/dummy/config/couchdb.yml
184
- - test/dummy/config/environment.rb
185
- - test/dummy/config/environments/development.rb
186
- - test/dummy/config/environments/production.rb
187
- - test/dummy/config/environments/test.rb
188
- - test/dummy/config/initializers/backtrace_silencers.rb
189
- - test/dummy/config/initializers/inflections.rb
190
- - test/dummy/config/initializers/mime_types.rb
191
- - test/dummy/config/initializers/secret_token.rb
192
- - test/dummy/config/initializers/session_store.rb
193
- - test/dummy/config/initializers/wrap_parameters.rb
194
- - test/dummy/config/locales/en.yml
195
- - test/dummy/config/routes.rb
196
- - test/dummy/lib/couch_rest_adapter/railtie.rb
152
+ - test/document_type_test.rb
153
+ - test/dummy/config/initializers/filter_parameter_logging.rb
197
154
  - test/dummy/log/test.log
198
- - test/dummy/public/404.html
199
- - test/dummy/public/422.html
200
- - test/dummy/public/500.html
201
- - test/dummy/public/favicon.ico
202
- - test/factories/factories.rb
155
+ - test/inheritance_test.rb
156
+ - test/mango_index_test.rb
157
+ - test/mango_test.rb
158
+ - test/property_manager_test.rb
203
159
  - test/support/test.txt
204
160
  - test/test_helper.rb
205
- homepage: ''
206
- licenses:
207
- - MIT
161
+ - test/view_query_test.rb
162
+ homepage: https://www.amco.me
163
+ licenses: []
208
164
  metadata: {}
209
- post_install_message:
165
+ post_install_message:
210
166
  rdoc_options: []
211
167
  require_paths:
212
168
  - lib
@@ -221,48 +177,20 @@ required_rubygems_version: !ruby/object:Gem::Requirement
221
177
  - !ruby/object:Gem::Version
222
178
  version: '0'
223
179
  requirements: []
224
- rubyforge_project:
225
- rubygems_version: 2.4.5
226
- signing_key:
180
+ rubygems_version: 3.0.3
181
+ signing_key:
227
182
  specification_version: 4
228
183
  summary: will write something
229
184
  test_files:
230
- - test/bulk_document_test.rb
231
- - test/collection_test.rb
232
- - test/configuration_test.rb
233
- - test/document_test.rb
234
- - test/dummy/app/assets/javascripts/application.js
235
- - test/dummy/app/assets/stylesheets/application.css
236
- - test/dummy/app/controllers/application_controller.rb
237
- - test/dummy/app/helpers/application_helper.rb
238
- - test/dummy/app/views/layouts/application.html.erb
239
- - test/dummy/bin/bundle
240
- - test/dummy/bin/rails
241
- - test/dummy/bin/rake
242
- - test/dummy/config/application.rb
243
- - test/dummy/config/boot.rb
244
- - test/dummy/config/couchdb.yml
245
- - test/dummy/config/environment.rb
246
- - test/dummy/config/environments/development.rb
247
- - test/dummy/config/environments/production.rb
248
- - test/dummy/config/environments/test.rb
249
- - test/dummy/config/initializers/backtrace_silencers.rb
250
- - test/dummy/config/initializers/inflections.rb
251
- - test/dummy/config/initializers/mime_types.rb
252
- - test/dummy/config/initializers/secret_token.rb
253
- - test/dummy/config/initializers/session_store.rb
254
- - test/dummy/config/initializers/wrap_parameters.rb
255
- - test/dummy/config/locales/en.yml
256
- - test/dummy/config/routes.rb
257
- - test/dummy/config.ru
258
- - test/dummy/lib/couch_rest_adapter/railtie.rb
185
+ - test/dummy/config/initializers/filter_parameter_logging.rb
259
186
  - test/dummy/log/test.log
260
- - test/dummy/public/404.html
261
- - test/dummy/public/422.html
262
- - test/dummy/public/500.html
263
- - test/dummy/public/favicon.ico
264
- - test/dummy/Rakefile
265
- - test/dummy/README.rdoc
266
- - test/factories/factories.rb
187
+ - test/inheritance_test.rb
188
+ - test/document_type_test.rb
189
+ - test/mango_index_test.rb
190
+ - test/bulk_document_test.rb
191
+ - test/view_query_test.rb
192
+ - test/mango_test.rb
267
193
  - test/support/test.txt
268
194
  - test/test_helper.rb
195
+ - test/document_test.rb
196
+ - test/property_manager_test.rb
data/Rakefile DELETED
@@ -1,11 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require 'rake/testtask'
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << 'lib'
6
- t.libs << 'test'
7
- t.pattern = 'test/**/*_test.rb'
8
- t.verbose = false
9
- end
10
-
11
- task default: :test
@@ -1,16 +0,0 @@
1
- module Dolly
2
- class BulkError
3
- attr_accessor :obj, :name, :message
4
-
5
- def initialize options = {}
6
- self.obj = options['obj']
7
- self.name = options['error']
8
- self.message = options['reason']
9
- end
10
-
11
- def to_s
12
- message
13
- end
14
-
15
- end
16
- end
@@ -1,20 +0,0 @@
1
- module Dolly
2
- module DbConfig
3
- attr_accessor :config_file
4
-
5
- def parse_config
6
- @config_data ||= File.read(config_file)
7
- raise Dolly::InvalidConfigFileError unless @config_data.present?
8
- YAML::load( ERB.new(@config_data).result )
9
- end
10
-
11
- def env
12
- parse_config[Rails.env]
13
- end
14
-
15
- def config_file
16
- root = Rails.root || File.expand_path("../../../test/dummy/", __FILE__)
17
- File.join(root, 'config', 'couchdb.yml')
18
- end
19
- end
20
- end
@@ -1,5 +0,0 @@
1
- module Dolly
2
- module Interpreter
3
-
4
- end
5
- end
data/lib/dolly/logger.rb DELETED
@@ -1,9 +0,0 @@
1
- module Dolly
2
- class Logger < DelegateClass(::Logger)
3
- def initialize config
4
- logger = ::Logger.new(config.log_path)
5
- logger.progname = Dolly.name
6
- super logger
7
- end
8
- end
9
- end
@@ -1,28 +0,0 @@
1
- module Dolly
2
- module NameSpace
3
-
4
- def name_paramitized
5
- underscore name.split("::").last
6
- end
7
-
8
- def base_id id
9
- id = URI.unescape id
10
- id.sub %r~^#{name_paramitized}/~, ''
11
- end
12
-
13
- def namespace id
14
- return id if id =~ %r~^#{name_paramitized}/~
15
- "#{name_paramitized}/#{id}"
16
- end
17
-
18
- #FROM ActiveModel::Name
19
- def underscore(camel_cased_word)
20
- camel_cased_word.to_s.gsub(/::/, '/').
21
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
22
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
23
- tr("-", "_").
24
- downcase
25
- end
26
-
27
- end
28
- end
@@ -1,21 +0,0 @@
1
- module Dolly
2
- module Timestamps
3
-
4
- def timestamps!
5
- property :created_at, :updated_at, class_name: Time
6
-
7
- self.timestamps[self.name] = true
8
-
9
- self.class_eval do
10
-
11
- def set_created_at
12
- doc['created_at'] ||= Time.now
13
- end
14
-
15
- def set_updated_at
16
- doc['updated_at'] = Time.now
17
- end
18
- end
19
- end
20
- end
21
- end