baza_models 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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