baza_models 0.0.9 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +134 -25
  3. data/.rubocop_todo.yml +47 -32
  4. data/.ruby-version +1 -0
  5. data/Gemfile +17 -19
  6. data/Gemfile.lock +126 -110
  7. data/Rakefile +5 -7
  8. data/VERSION +1 -1
  9. data/baza_models.gemspec +71 -65
  10. data/lib/baza_models/autoloader.rb +1 -0
  11. data/lib/baza_models/class_translation.rb +4 -0
  12. data/lib/baza_models/errors.rb +2 -3
  13. data/lib/baza_models/helpers/ransacker_helper.rb +2 -2
  14. data/lib/baza_models/model.rb +43 -23
  15. data/lib/baza_models/model/belongs_to_relations.rb +1 -3
  16. data/lib/baza_models/model/has_many_relations.rb +2 -2
  17. data/lib/baza_models/model/has_one_relations.rb +2 -2
  18. data/lib/baza_models/model/manipulation.rb +24 -15
  19. data/lib/baza_models/model/queries.rb +2 -0
  20. data/lib/baza_models/model/scopes.rb +1 -0
  21. data/lib/baza_models/model/validations.rb +1 -0
  22. data/lib/baza_models/query.rb +16 -14
  23. data/lib/baza_models/query/inspector.rb +2 -0
  24. data/lib/baza_models/query/pagination.rb +5 -7
  25. data/lib/baza_models/query/sql_generator.rb +3 -3
  26. data/lib/baza_models/ransacker.rb +3 -1
  27. data/lib/baza_models/ransacker/relationship_scanner.rb +4 -1
  28. data/lib/baza_models/validators/confirmation_validator.rb +1 -3
  29. data/lib/baza_models/validators/uniqueness_validator.rb +2 -4
  30. data/peak_flow.yml +4 -0
  31. data/spec/baza_models/autoloader_spec.rb +1 -1
  32. data/spec/baza_models/baza_orm_adapter_spec.rb +1 -1
  33. data/spec/baza_models/class_translation_spec.rb +4 -0
  34. data/spec/baza_models/model/has_many_relations_spec.rb +1 -1
  35. data/spec/baza_models/model/manipulation_spec.rb +3 -3
  36. data/spec/baza_models/model_spec.rb +46 -3
  37. data/spec/baza_models/query_spec.rb +14 -6
  38. data/spec/factories/organization.rb +2 -2
  39. data/spec/factories/user.rb +2 -2
  40. data/spec/spec_helper.rb +3 -6
  41. data/spec/support/database_helper.rb +6 -3
  42. data/spec/test_classes/user.rb +2 -1
  43. metadata +81 -54
  44. data/shippable.yml +0 -11
  45. data/spec/baza_models_spec.rb +0 -4
@@ -45,7 +45,7 @@ describe BazaModels::Model::HasManyRelations do
45
45
  end
46
46
  end
47
47
 
48
- context "#<<" do
48
+ describe "#<<" do
49
49
  it "adds models to persisted parent" do
50
50
  organization.save!
51
51
  organization.users << User.create!(email: "test@example.com")
@@ -10,17 +10,17 @@ describe BazaModels::Model::Manipulation do
10
10
  it "#created_at" do
11
11
  expect(user.created_at).to eq nil
12
12
  user.save!
13
- expect(user.created_at).to_not eq nil
13
+ expect(user.created_at).not_to eq nil
14
14
  end
15
15
 
16
16
  it "#updated_at" do
17
17
  expect(user.updated_at).to eq nil
18
18
  user.save!
19
- expect(user.updated_at).to_not eq nil
19
+ expect(user.updated_at).not_to eq nil
20
20
  old_updated_at = user.updated_at
21
21
  sleep 1
22
22
  user.email = "test2@example.com"
23
23
  user.save!
24
- expect(user.updated_at).to_not eq old_updated_at
24
+ expect(user.updated_at).not_to eq old_updated_at
25
25
  end
26
26
  end
@@ -22,8 +22,8 @@ describe "BazaModels::Model" do
22
22
  expect(user.id).to eq nil
23
23
  expect(user.to_param).to eq nil
24
24
  user.save!
25
- expect(user.id).to_not eq nil
26
- expect(user.to_param).to_not eq nil
25
+ expect(user.id).not_to eq nil
26
+ expect(user.to_param).not_to eq nil
27
27
  expect(user.to_param).to eq user.id.to_s
28
28
  end
29
29
 
@@ -62,12 +62,30 @@ describe "BazaModels::Model" do
62
62
  end
63
63
  end
64
64
 
65
+ it "#update" do
66
+ user.save!
67
+ expect(user.update(email: "newemail@example.com")).to eq true
68
+ expect(user.email).to eq "newemail@example.com"
69
+ end
70
+
71
+ it "#update!" do
72
+ user.save!
73
+ user.update!(email: "newemail@example.com")
74
+ expect(user.email).to eq "newemail@example.com"
75
+ end
76
+
65
77
  it "#update_attributes" do
66
78
  user.save!
67
79
  expect(user.update_attributes(email: "newemail@example.com")).to eq true
68
80
  expect(user.email).to eq "newemail@example.com"
69
81
  end
70
82
 
83
+ it "#update_attributes!" do
84
+ user.save!
85
+ user.update_attributes!(email: "newemail@example.com")
86
+ expect(user.email).to eq "newemail@example.com"
87
+ end
88
+
71
89
  it "#before_save, #after_save" do
72
90
  expect(user.before_save_called).to eq nil
73
91
  expect(user.after_save_called).to eq nil
@@ -162,7 +180,7 @@ describe "BazaModels::Model" do
162
180
  end
163
181
 
164
182
  it "#attribute_names" do
165
- expect(User.attribute_names).to eq %w(id organization_id email email_confirmation created_at updated_at admin)
183
+ expect(User.attribute_names).to eq %w[id organization_id email email_confirmation created_at updated_at admin]
166
184
  end
167
185
 
168
186
  it "#columns" do
@@ -210,4 +228,29 @@ describe "BazaModels::Model" do
210
228
  user = User.new("email" => "test@example.com")
211
229
  expect(user.email).to eq "test@example.com"
212
230
  end
231
+
232
+ describe "#to_a" do
233
+ it "does not respond to it, because it will fuck up Array(ModelClass)" do
234
+ expect { User.to_a }.to raise_error(NoMethodError)
235
+ expect { User.to_ary }.to raise_error(NoMethodError)
236
+ end
237
+ end
238
+
239
+ describe "#attribute_before_last_save" do
240
+ it "returns the value as it was before the save" do
241
+ user.save!
242
+
243
+ user.update!(email: "test2@example.com")
244
+
245
+ expect(user.email_before_last_save).to eq "test@example.com"
246
+ end
247
+ end
248
+
249
+ describe "#will_save_change_to_attribute?" do
250
+ it "returns true if the attribute will change" do
251
+ user.save!
252
+ user.email = "test2@example.com"
253
+ expect(user.will_save_change_to_email?).to eq true
254
+ end
255
+ end
213
256
  end
@@ -7,7 +7,7 @@ describe BazaModels::Query do
7
7
  let(:role_user) { Role.new(user: user, role: "user") }
8
8
  let(:role_admin) { Role.new(user: user, role: "administrator") }
9
9
 
10
- context "#average" do
10
+ describe "#average" do
11
11
  it "calculates the average" do
12
12
  5.times do |n|
13
13
  User.create! id: n + 1, email: "user#{n}@example.com"
@@ -18,7 +18,7 @@ describe BazaModels::Query do
18
18
  end
19
19
  end
20
20
 
21
- context "#where" do
21
+ describe "#where" do
22
22
  before do
23
23
  user.save!
24
24
  end
@@ -29,6 +29,14 @@ describe BazaModels::Query do
29
29
  expect(query.to_a).to eq [user]
30
30
  end
31
31
 
32
+ it "supports hashes with nils" do
33
+ user.update!(email_confirmation: nil)
34
+
35
+ query = User.where(users: {email_confirmation: nil})
36
+ expect(query.to_sql).to eq "SELECT `users`.* FROM `users` WHERE `users`.`email_confirmation` IS NULL"
37
+ expect(query.to_a).to eq [user]
38
+ end
39
+
32
40
  it "supports strings" do
33
41
  query = User.where("email = 'test@example.com'")
34
42
  expect(query.to_sql).to eq "SELECT `users`.* FROM `users` WHERE (email = 'test@example.com')"
@@ -49,7 +57,7 @@ describe BazaModels::Query do
49
57
  end
50
58
  end
51
59
 
52
- context "#ids" do
60
+ describe "#ids" do
53
61
  it "returns the ids of the models" do
54
62
  5.times do |n|
55
63
  User.create! id: n + 1, email: "user#{n}@example.com"
@@ -60,7 +68,7 @@ describe BazaModels::Query do
60
68
  end
61
69
  end
62
70
 
63
- context "#joins" do
71
+ describe "#joins" do
64
72
  before do
65
73
  user.save!
66
74
  role_admin.save!
@@ -94,7 +102,7 @@ describe BazaModels::Query do
94
102
  end
95
103
  end
96
104
 
97
- context "#group, #order" do
105
+ describe "#group, #order" do
98
106
  before do
99
107
  user
100
108
  role_user
@@ -109,7 +117,7 @@ describe BazaModels::Query do
109
117
  roles = Role.group(:role).order(:role).to_a
110
118
 
111
119
  expect(roles.length).to eq 2
112
- expect(roles.map(&:role)).to eq %w(administrator user)
120
+ expect(roles.map(&:role)).to eq %w[administrator user]
113
121
  end
114
122
  end
115
123
 
@@ -1,5 +1,5 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  factory :organization do
3
- name "Test organization"
3
+ name { "Test organization" }
4
4
  end
5
5
  end
@@ -1,7 +1,7 @@
1
- FactoryGirl.define do
1
+ FactoryBot.define do
2
2
  factory :user do
3
3
  organization
4
4
 
5
- email "user@example.com"
5
+ email { "user@example.com" }
6
6
  end
7
7
  end
@@ -1,12 +1,9 @@
1
- require "codeclimate-test-reporter"
2
- CodeClimate::TestReporter.start
3
-
4
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
5
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
3
 
7
4
  require "rspec"
8
5
  require "baza_models"
9
- require "factory_girl"
6
+ require "factory_bot"
10
7
 
11
8
  Dir.foreach("spec/test_classes") do |file|
12
9
  require "test_classes/#{file}" if file.end_with?(".rb")
@@ -18,8 +15,8 @@ end
18
15
 
19
16
  # Requires supporting files with custom matchers and macros, etc,
20
17
  # in ./support/ and its subdirectories.
21
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
18
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].sort.each { |f| require f }
22
19
 
23
20
  RSpec.configure do |config|
24
- config.include FactoryGirl::Syntax::Methods
21
+ config.include FactoryBot::Syntax::Methods
25
22
  end
@@ -53,7 +53,8 @@ module DatabaseHelper
53
53
  {name: :updated_at, type: :datetime},
54
54
  {name: :admin, type: :tinyint}
55
55
  ],
56
- indexes: [:organization_id, :email])
56
+ indexes: [:organization_id, :email]
57
+ )
57
58
 
58
59
  @db.tables.create(
59
60
  :user_passports,
@@ -64,7 +65,8 @@ module DatabaseHelper
64
65
  ],
65
66
  indexes: [
66
67
  :user_id
67
- ])
68
+ ]
69
+ )
68
70
 
69
71
  @db.tables.create(
70
72
  :persons,
@@ -72,7 +74,8 @@ module DatabaseHelper
72
74
  {name: :id, type: :int, primarykey: true, autoincr: true},
73
75
  {name: :user_id, type: :int}
74
76
  ],
75
- indexes: [:user_id])
77
+ indexes: [:user_id]
78
+ )
76
79
 
77
80
  @db.tables.create(
78
81
  :roles,
@@ -24,11 +24,12 @@ class User < BazaModels::Model
24
24
  # Used to test callbacks.
25
25
  BazaModels::Model::CALLBACK_TYPES.each do |callback_type|
26
26
  attr_reader "#{callback_type}_called"
27
+
27
28
  __send__(callback_type, :add_callback, callback_type)
28
29
  end
29
30
 
30
31
  def self.ransackable_scopes(_auth_object = nil)
31
- %i(created_at_since)
32
+ %i[created_at_since]
32
33
  end
33
34
 
34
35
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baza_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaspernj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-10 00:00:00.000000000 Z
11
+ date: 2021-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: array_enumerator
@@ -16,142 +16,142 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.10
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.0.10
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: baza
28
+ name: auto_autoloader
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.21
33
+ version: '0'
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.0.21
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: string-cases
42
+ name: baza
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.0.3
47
+ version: '0'
48
48
  type: :runtime
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.0.3
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: auto_autoloader
56
+ name: html_gen
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 0.0.1
61
+ version: '0'
62
62
  type: :runtime
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: 0.0.1
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: html_gen
70
+ name: simple_delegate
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 0.0.12
75
+ version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 0.0.12
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: simple_delegate
84
+ name: string-cases
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.0.2
89
+ version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 0.0.2
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rspec
98
+ name: best_practice_project
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 3.3.0
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 3.3.0
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rdoc
112
+ name: bundler
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '3.12'
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '3.12'
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: bundler
126
+ name: factory_bot
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: '1.0'
131
+ version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: '1.0'
138
+ version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: jeweler
140
+ name: jdbc-sqlite3
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: 2.0.1
145
+ version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 2.0.1
152
+ version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: factory_girl
154
+ name: juwelier
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -165,7 +165,7 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: sqlite3
168
+ name: orm_adapter
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - ">="
@@ -179,7 +179,7 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
- name: jdbc-sqlite3
182
+ name: rdoc
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - ">="
@@ -193,7 +193,7 @@ dependencies:
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
- name: best_practice_project
196
+ name: rspec
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - ">="
@@ -210,18 +210,46 @@ dependencies:
210
210
  name: rubocop
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - '='
213
+ - - ">="
214
214
  - !ruby/object:Gem::Version
215
- version: 0.37.0
215
+ version: '0'
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - '='
220
+ - - ">="
221
221
  - !ruby/object:Gem::Version
222
- version: 0.37.0
222
+ version: '0'
223
223
  - !ruby/object:Gem::Dependency
224
- name: orm_adapter
224
+ name: rubocop-performance
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: rubocop-rspec
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: sqlite3
225
253
  requirement: !ruby/object:Gem::Requirement
226
254
  requirements:
227
255
  - - ">="
@@ -246,6 +274,7 @@ files:
246
274
  - ".rspec"
247
275
  - ".rubocop.yml"
248
276
  - ".rubocop_todo.yml"
277
+ - ".ruby-version"
249
278
  - Gemfile
250
279
  - Gemfile.lock
251
280
  - LICENSE.txt
@@ -290,7 +319,7 @@ files:
290
319
  - lib/baza_models/validators/length_validator.rb
291
320
  - lib/baza_models/validators/presence_validator.rb
292
321
  - lib/baza_models/validators/uniqueness_validator.rb
293
- - shippable.yml
322
+ - peak_flow.yml
294
323
  - spec/baza_models/autoloader_spec.rb
295
324
  - spec/baza_models/baza_orm_adapter_spec.rb
296
325
  - spec/baza_models/class_translation_spec.rb
@@ -314,7 +343,6 @@ files:
314
343
  - spec/baza_models/validators/format_validator_spec.rb
315
344
  - spec/baza_models/validators/length_validator_spec.rb
316
345
  - spec/baza_models/validators/uniqueness_validator_spec.rb
317
- - spec/baza_models_spec.rb
318
346
  - spec/factories/organization.rb
319
347
  - spec/factories/user.rb
320
348
  - spec/spec_helper.rb
@@ -343,8 +371,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
343
371
  - !ruby/object:Gem::Version
344
372
  version: '0'
345
373
  requirements: []
346
- rubyforge_project:
347
- rubygems_version: 2.4.0
374
+ rubygems_version: 3.0.6
348
375
  signing_key:
349
376
  specification_version: 4
350
377
  summary: ActiveRecord like models for the Baza database framework