baza_models 0.0.0 → 0.0.1

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +35 -0
  3. data/Gemfile +9 -3
  4. data/Gemfile.lock +90 -51
  5. data/README.md +98 -3
  6. data/Rakefile +20 -17
  7. data/VERSION +1 -1
  8. data/baza_models.gemspec +149 -0
  9. data/config/best_project_practice_rubocop.yml +2 -0
  10. data/config/best_project_practice_rubocop_todo.yml +35 -0
  11. data/lib/baza_models.rb +15 -0
  12. data/lib/baza_models/autoloader.rb +135 -0
  13. data/lib/baza_models/baza_orm_adapter.rb +39 -0
  14. data/lib/baza_models/can_can_adapter.rb +9 -0
  15. data/lib/baza_models/class_translation.rb +44 -0
  16. data/lib/baza_models/errors.rb +24 -2
  17. data/lib/baza_models/model.rb +236 -115
  18. data/lib/baza_models/model/belongs_to_relations.rb +49 -0
  19. data/lib/baza_models/model/custom_validations.rb +24 -0
  20. data/lib/baza_models/model/delegation.rb +21 -0
  21. data/lib/baza_models/model/has_many_relations.rb +85 -0
  22. data/lib/baza_models/model/has_one_relations.rb +93 -0
  23. data/lib/baza_models/model/manipulation.rb +123 -0
  24. data/lib/baza_models/model/queries.rb +45 -0
  25. data/lib/baza_models/model/scopes.rb +19 -0
  26. data/lib/baza_models/model/translation_functionality.rb +30 -0
  27. data/lib/baza_models/model/validations.rb +95 -0
  28. data/lib/baza_models/query.rb +447 -0
  29. data/lib/baza_models/query/inspector.rb +74 -0
  30. data/lib/baza_models/query/not.rb +34 -0
  31. data/lib/baza_models/ransacker.rb +30 -0
  32. data/lib/baza_models/test_database_cleaner.rb +23 -0
  33. data/lib/baza_models/validators/base_validator.rb +14 -0
  34. data/lib/baza_models/validators/confirmation_validator.rb +12 -0
  35. data/lib/baza_models/validators/format_validator.rb +11 -0
  36. data/lib/baza_models/validators/length_validator.rb +16 -0
  37. data/lib/baza_models/validators/uniqueness_validator.rb +21 -0
  38. data/shippable.yml +3 -1
  39. data/spec/baza_models/autoloader_spec.rb +57 -0
  40. data/spec/baza_models/baza_orm_adapter_spec.rb +52 -0
  41. data/spec/baza_models/class_translation_spec.rb +25 -0
  42. data/spec/baza_models/factory_girl_spec.rb +13 -0
  43. data/spec/baza_models/model/belongs_to_relations_spec.rb +26 -0
  44. data/spec/baza_models/model/custom_validations_spec.rb +18 -0
  45. data/spec/baza_models/model/delgation_spec.rb +16 -0
  46. data/spec/baza_models/model/has_many_relations_spec.rb +68 -0
  47. data/spec/baza_models/model/has_one_relations_spec.rb +35 -0
  48. data/spec/baza_models/model/manipulation_spec.rb +25 -0
  49. data/spec/baza_models/model/queries_spec.rb +59 -0
  50. data/spec/baza_models/model/scopes_spec.rb +23 -0
  51. data/spec/baza_models/model/translate_functionality_spec.rb +13 -0
  52. data/spec/baza_models/model/validations_spec.rb +52 -0
  53. data/spec/baza_models/model_spec.rb +75 -98
  54. data/spec/baza_models/query/not_spec.rb +16 -0
  55. data/spec/baza_models/query_spec.rb +155 -0
  56. data/spec/baza_models/ransacker_spec.rb +15 -0
  57. data/spec/baza_models/validators/confirmation_validator_spec.rb +28 -0
  58. data/spec/baza_models/validators/format_validator_spec.rb +17 -0
  59. data/spec/baza_models/validators/length_validator_spec.rb +19 -0
  60. data/spec/baza_models/validators/uniqueness_validator_spec.rb +24 -0
  61. data/spec/factories/organization.rb +5 -0
  62. data/spec/factories/user.rb +7 -0
  63. data/spec/spec_helper.rb +17 -5
  64. data/spec/support/database_helper.rb +87 -0
  65. data/spec/test_classes/organization.rb +3 -0
  66. data/spec/test_classes/person.rb +3 -0
  67. data/spec/test_classes/role.rb +12 -0
  68. data/spec/test_classes/user.rb +40 -0
  69. data/spec/test_classes/user_passport.rb +3 -0
  70. metadata +146 -7
  71. data/spec/test_classes/user_test.rb +0 -17
@@ -0,0 +1,40 @@
1
+ class User < BazaModels::Model
2
+ attr_accessor :custom_valid, :before_save_block_called, :validate_confirmation, :validate_uniqueness
3
+
4
+ belongs_to :organization
5
+ has_one :person, dependent: :restrict_with_error
6
+ has_one :user_passport, dependent: :destroy
7
+
8
+ has_many :roles, dependent: :destroy
9
+ has_many :admin_roles, -> { where(role: "administrator") }, class_name: "Role", dependent: :restrict_with_error
10
+
11
+ validates :email, presence: true, length: {minimum: 2, maximum: 100}, format: {with: /\A(.+)@(.+)\.(.+)\Z/}
12
+ validate :validate_custom_errors
13
+ validates_uniqueness_of :email, scope: :organization_id, if: :validate_uniqueness
14
+ validates_confirmation_of :email, if: :validate_confirmation
15
+
16
+ scope :admin_roles_scope, -> { joins(:roles).where(roles: {role: "administrator"}) }
17
+
18
+ before_save do
19
+ self.before_save_block_called ||= 0
20
+ self.before_save_block_called += 1
21
+ end
22
+
23
+ # Used to test callbacks.
24
+ BazaModels::Model::CALLBACK_TYPES.each do |callback_type|
25
+ attr_reader "#{callback_type}_called"
26
+ __send__(callback_type, :add_callback, callback_type)
27
+ end
28
+
29
+ private
30
+
31
+ def add_callback(callback_type)
32
+ variable_name = "@#{callback_type}_called"
33
+ instance_variable_set(variable_name, 0) unless instance_variable_get(variable_name)
34
+ instance_variable_set(variable_name, instance_variable_get(variable_name) + 1)
35
+ end
36
+
37
+ def validate_custom_errors
38
+ errors.add(:base, "Custom validate failed") if custom_valid == false
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ class UserPassport < BazaModels::Model
2
+ belongs_to :user
3
+ end
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baza_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaspernj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-17 00:00:00.000000000 Z
11
+ date: 2015-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: array_enumerator
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: baza
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: 0.0.15
33
+ version: 0.0.20
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: 0.0.15
40
+ version: 0.0.20
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: string-cases
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +58,14 @@ dependencies:
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 2.8.0
61
+ version: 3.3.0
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 2.8.0
68
+ version: 3.3.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rdoc
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: 2.0.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: factory_girl
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: sqlite3
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +136,62 @@ dependencies:
108
136
  - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: jdbc-sqlite3
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: best_practice_project
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: orm_adapter
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
111
195
  description: ActiveRecord like models for the Baza database framework
112
196
  email: k@spernj.org
113
197
  executables: []
@@ -118,22 +202,77 @@ extra_rdoc_files:
118
202
  files:
119
203
  - ".document"
120
204
  - ".rspec"
205
+ - ".rubocop_todo.yml"
121
206
  - Gemfile
122
207
  - Gemfile.lock
123
208
  - LICENSE.txt
124
209
  - README.md
125
210
  - Rakefile
126
211
  - VERSION
212
+ - baza_models.gemspec
213
+ - config/best_project_practice_rubocop.yml
214
+ - config/best_project_practice_rubocop_todo.yml
127
215
  - lib/baza_models.rb
216
+ - lib/baza_models/autoloader.rb
217
+ - lib/baza_models/baza_orm_adapter.rb
218
+ - lib/baza_models/can_can_adapter.rb
219
+ - lib/baza_models/class_translation.rb
128
220
  - lib/baza_models/errors.rb
129
221
  - lib/baza_models/model.rb
222
+ - lib/baza_models/model/belongs_to_relations.rb
223
+ - lib/baza_models/model/custom_validations.rb
224
+ - lib/baza_models/model/delegation.rb
225
+ - lib/baza_models/model/has_many_relations.rb
226
+ - lib/baza_models/model/has_one_relations.rb
227
+ - lib/baza_models/model/manipulation.rb
228
+ - lib/baza_models/model/queries.rb
229
+ - lib/baza_models/model/scopes.rb
230
+ - lib/baza_models/model/translation_functionality.rb
231
+ - lib/baza_models/model/validations.rb
232
+ - lib/baza_models/query.rb
233
+ - lib/baza_models/query/inspector.rb
234
+ - lib/baza_models/query/not.rb
235
+ - lib/baza_models/ransacker.rb
236
+ - lib/baza_models/test_database_cleaner.rb
130
237
  - lib/baza_models/validators/base_validator.rb
238
+ - lib/baza_models/validators/confirmation_validator.rb
239
+ - lib/baza_models/validators/format_validator.rb
240
+ - lib/baza_models/validators/length_validator.rb
131
241
  - lib/baza_models/validators/presence_validator.rb
242
+ - lib/baza_models/validators/uniqueness_validator.rb
132
243
  - shippable.yml
244
+ - spec/baza_models/autoloader_spec.rb
245
+ - spec/baza_models/baza_orm_adapter_spec.rb
246
+ - spec/baza_models/class_translation_spec.rb
247
+ - spec/baza_models/factory_girl_spec.rb
248
+ - spec/baza_models/model/belongs_to_relations_spec.rb
249
+ - spec/baza_models/model/custom_validations_spec.rb
250
+ - spec/baza_models/model/delgation_spec.rb
251
+ - spec/baza_models/model/has_many_relations_spec.rb
252
+ - spec/baza_models/model/has_one_relations_spec.rb
253
+ - spec/baza_models/model/manipulation_spec.rb
254
+ - spec/baza_models/model/queries_spec.rb
255
+ - spec/baza_models/model/scopes_spec.rb
256
+ - spec/baza_models/model/translate_functionality_spec.rb
257
+ - spec/baza_models/model/validations_spec.rb
133
258
  - spec/baza_models/model_spec.rb
259
+ - spec/baza_models/query/not_spec.rb
260
+ - spec/baza_models/query_spec.rb
261
+ - spec/baza_models/ransacker_spec.rb
262
+ - spec/baza_models/validators/confirmation_validator_spec.rb
263
+ - spec/baza_models/validators/format_validator_spec.rb
264
+ - spec/baza_models/validators/length_validator_spec.rb
265
+ - spec/baza_models/validators/uniqueness_validator_spec.rb
134
266
  - spec/baza_models_spec.rb
267
+ - spec/factories/organization.rb
268
+ - spec/factories/user.rb
135
269
  - spec/spec_helper.rb
136
- - spec/test_classes/user_test.rb
270
+ - spec/support/database_helper.rb
271
+ - spec/test_classes/organization.rb
272
+ - spec/test_classes/person.rb
273
+ - spec/test_classes/role.rb
274
+ - spec/test_classes/user.rb
275
+ - spec/test_classes/user_passport.rb
137
276
  homepage: http://github.com/kaspernj/baza_models
138
277
  licenses:
139
278
  - MIT
@@ -1,17 +0,0 @@
1
- class UserTest < BazaModels::Model
2
- validates :email, presence: true
3
-
4
- # Used to test callbacks.
5
- BazaModels::Model::CALLBACK_TYPES.each do |callback_type|
6
- attr_reader "#{callback_type}_called"
7
- __send__(callback_type, :set_callback, callback_type)
8
- end
9
-
10
- private
11
-
12
- def set_callback(callback_type)
13
- variable_name = "@#{callback_type}_called"
14
- instance_variable_set(variable_name, 0) unless instance_variable_get(variable_name)
15
- instance_variable_set(variable_name, instance_variable_get(variable_name) + 1)
16
- end
17
- end