mini_form 0.2.3 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: af66d71eb698d18223627223fcdd23773c8c44ed
4
- data.tar.gz: b230cebf0fca7e3287487ab88c3eeae7b8e98063
2
+ SHA256:
3
+ metadata.gz: 05110a58fa226872117674c65d40a1312b20f368d2c3091abcf1f1d76ca8556f
4
+ data.tar.gz: 5046659d5998b2786b304bb47e0190dd21605863be6482106c9bb259453847e7
5
5
  SHA512:
6
- metadata.gz: b6487e2c427e3e427b140d71830f8a54cc180d4a2db00dce7d414171f729aea38a261c400c5487804fa972a4f13d42ee21312c88fc191c324ed6bff3833f568c
7
- data.tar.gz: 645b04ee90f9514b74af2e0fecf2cf83f9a15ecd33be71e3849209f4023424f33ac39acad741992cacad0ea19834490f3d12756e78db3c2a05514472a20cb9f3
6
+ metadata.gz: 8ebdb289c2f4a3c975be13ae53e52032ff33130658cdf9b580373f9cc988d60eb8e62732280c5c71889aeac7021c50857957bfd459b689e27f8716c45e142c64
7
+ data.tar.gz: '078b887c19a8049f34ff73cbe6bc1a686f5b9219ee7e499c6176de023c80ad283529d4c5b56b3a673688b08ce175f0ca6d893e02034b39f9ca3d5a10b97ed3be'
@@ -0,0 +1,33 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+
12
+ runs-on: ubuntu-latest
13
+
14
+ strategy:
15
+ matrix:
16
+ ruby-version: ['2.6', '2.7', '3.0', '3.1']
17
+
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+ - name: Set up Ruby ${{ matrix.ruby-version }}
21
+ uses: ruby/setup-ruby@0a29871fe2b0200a17a4497bae54fe5df0d973aa # v1.115.3
22
+ with:
23
+ ruby-version: ${{ matrix.ruby-version }}
24
+
25
+ - name: Install dependencies
26
+ run: bundle install
27
+
28
+ - name: Run linters
29
+ run: bundle exec rubocop
30
+
31
+ - name: Run tests
32
+ run: bundle exec rspec spec
33
+
data/.rubocop.yml CHANGED
@@ -1,34 +1,34 @@
1
1
  require: rubocop-rspec
2
2
 
3
- Rails:
4
- Enabled: true
3
+ AllCops:
5
4
  Exclude:
6
- - example/db/**/*
7
- - example/config/**/*
8
- - search_object.gemspec
5
+ - mini_form.gemspec
6
+
7
+ SuggestExtensions: false
8
+ NewCops: disable
9
9
 
10
10
  # Disables "Module definition is too long"
11
- ModuleLength:
11
+ Metrics/ModuleLength:
12
12
  Enabled: false
13
13
 
14
14
  # Disables "Line is too long"
15
- LineLength:
15
+ Layout/LineLength:
16
16
  Enabled: false
17
17
 
18
18
  # Disables "Method is too long"
19
- MethodLength:
19
+ Metrics/MethodLength:
20
20
  Enabled: false
21
21
 
22
22
  # Disables "Assignment Branch Condition size for included is too high"
23
- AbcSize:
23
+ Metrics/AbcSize:
24
24
  Enabled: false
25
25
 
26
26
  # Disables "Block has too many lines"
27
- BlockLength:
27
+ Metrics/BlockLength:
28
28
  Enabled: false
29
29
 
30
30
  # Disables "Missing top-level class documentation comment"
31
- Documentation:
31
+ Style/Documentation:
32
32
  Enabled: false
33
33
 
34
34
  # Disables "Use each_with_object instead of inject"
@@ -43,10 +43,6 @@ Style/CollectionMethods:
43
43
  Style/PercentLiteralDelimiters:
44
44
  Enabled: false
45
45
 
46
- # Disables "Use tr instead of gsubs"
47
- Performance/StringReplacement:
48
- Enabled: false
49
-
50
46
  # Disables "Example has too many expectations"
51
47
  RSpec/MultipleExpectations:
52
48
  Enabled: false
@@ -54,3 +50,9 @@ RSpec/MultipleExpectations:
54
50
  # Disables "Example has too many lines"
55
51
  RSpec/ExampleLength:
56
52
  Enabled: false
53
+
54
+ Style/HashSyntax:
55
+ Enabled: false
56
+
57
+ Lint/MissingSuper:
58
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,7 +1,14 @@
1
1
  # Changelog
2
2
 
3
- ## Version 0.2.3
3
+ ## Version 0.2.5
4
+
5
+ * Added `main_model` (@rstankov)
6
+
7
+ ## Version 0.2.4
4
8
 
9
+ * Rails 6+ support (@emilov)
10
+
11
+ ## Version 0.2.3
5
12
 
6
13
  * Fix handling delegated attributes prefixes in `attribute_names` (@rstankov)
7
14
 
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/mini_form.svg)](http://badge.fury.io/rb/mini_form)
2
2
  [![Code Climate](https://codeclimate.com/github/RStankov/MiniForm.svg)](https://codeclimate.com/github/RStankov/MiniForm)
3
- [![Build Status](https://secure.travis-ci.org/RStankov/MiniForm.svg)](http://travis-ci.org/RStankov/MiniForm)
4
3
  [![Code coverage](https://coveralls.io/repos/RStankov/MiniForm/badge.svg?branch=master)](https://coveralls.io/r/RStankov/MiniForm)
5
4
 
6
5
  # MiniForm
@@ -194,6 +193,26 @@ class SignUpForm
194
193
  end
195
194
  ```
196
195
 
196
+ ### Using in forms
197
+
198
+ Using `main_model` will delegate `id`, `to_param`, `persisted?` and `new_record?` to the model. Allowing you to use it in forms.
199
+
200
+ ```ruby
201
+ class SignUpForm
202
+ include MiniForm::Model
203
+
204
+ main_model :user
205
+
206
+ def initialize
207
+ @user = User.new(account: @account)
208
+ end
209
+ end
210
+ ```
211
+
212
+ ```eruby
213
+ <% form_for SignUpForm.new %>
214
+ ```
215
+
197
216
  ### Delegating model attributes
198
217
 
199
218
  ```ruby
@@ -203,7 +222,7 @@ class SignUpForm
203
222
  model :user, attributes: %i(name email), read: %i(id)
204
223
 
205
224
  def initialize
206
- @user = User.new account: @account
225
+ @user = User.new(account: @account)
207
226
  end
208
227
  end
209
228
  ```
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
  require 'rubocop/rake_task'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MiniForm
2
4
  class InvalidForm < StandardError
3
5
  attr_reader :errors
@@ -5,7 +7,8 @@ module MiniForm
5
7
  def initialize(object)
6
8
  @errors = object.errors
7
9
 
8
- super "Form validation failed for: #{errors.keys.join(', ')}"
10
+ arr_obj = errors.respond_to?(:attribute_names) ? errors.attribute_names : errors.keys
11
+ super "Form validation failed for: #{arr_obj.join(', ')}"
9
12
  end
10
13
  end
11
14
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/all'
2
4
  require 'active_model'
3
5
 
@@ -73,6 +75,7 @@ module MiniForm
73
75
 
74
76
  def update!(attributes = {})
75
77
  raise InvalidForm, self unless update attributes
78
+
76
79
  self
77
80
  end
78
81
 
@@ -156,7 +159,7 @@ module MiniForm
156
159
  end
157
160
  end
158
161
 
159
- def model(name, attributes: [], read: [], prefix: nil, allow_nil: nil, save: false) # rubocop:disable ParameterLists
162
+ def model(name, attributes: [], read: [], prefix: nil, allow_nil: nil, save: false) # rubocop:disable Metrics/ParameterLists
160
163
  attr_accessor name
161
164
 
162
165
  attributes(*attributes, delegate: name, prefix: prefix, allow_nil: allow_nil) unless attributes.empty?
@@ -167,6 +170,12 @@ module MiniForm
167
170
 
168
171
  models_to_save << name if save
169
172
  end
173
+
174
+ def main_model(model_name, **args)
175
+ delegate :id, :persisted?, :to_param, :new_record?, to: model_name
176
+
177
+ model model_name, **args
178
+ end
170
179
  end
171
180
  end
172
181
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_model'
2
4
 
3
5
  module MiniForm
@@ -5,6 +7,15 @@ module MiniForm
5
7
  def validate_each(record, _, relation)
6
8
  return if relation.valid?
7
9
 
10
+ if record.errors.respond_to?(:merge!)
11
+ # Rails 6.1+ where accessing ActiveModel::Errors as a hash has been
12
+ # deprecated and the errors array is frozen. For this reason we use the new
13
+ # method merge!() which appends the errors as NestedErrors to the array. "This is the way."
14
+ record.errors.merge!(relation.errors)
15
+ return
16
+ end
17
+
18
+ # Rails < 6.1
8
19
  relation.errors.each do |name, value|
9
20
  record.errors.add name, value
10
21
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MiniForm
2
- VERSION = '0.2.3'.freeze
4
+ VERSION = '0.2.5'
3
5
  end
data/lib/mini_form.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'mini_form/version'
2
4
  require 'mini_form/model'
3
5
  require 'mini_form/errors'
data/mini_form.gemspec CHANGED
@@ -20,10 +20,10 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'activemodel', '>= 4.0'
22
22
 
23
- spec.add_development_dependency 'bundler', '~> 1.3'
24
- spec.add_development_dependency 'rake', '< 11.0'
25
- spec.add_development_dependency 'rspec', '~> 2.14'
26
- spec.add_development_dependency 'rspec-mocks', '>= 2.12.3'
23
+ spec.add_development_dependency 'bundler', '>= 2.1.4'
24
+ spec.add_development_dependency 'rake', '>= 12.3.3'
25
+ spec.add_development_dependency 'rspec', '3.12.0'
26
+ spec.add_development_dependency 'rspec-mocks', '3.12.0'
27
27
  spec.add_development_dependency 'coveralls'
28
28
  spec.add_development_dependency 'rubocop'
29
29
  spec.add_development_dependency 'rubocop-rspec'
@@ -1,28 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
- module MiniForm
4
- describe NestedValidator do
5
- class User
6
- include ActiveModel::Model
5
+ module SpecSupport
6
+ class Person
7
+ include ActiveModel::Model
7
8
 
8
- attr_accessor :name
9
+ attr_accessor :name
9
10
 
10
- validates :name, presence: true
11
- end
11
+ validates :name, presence: true
12
+ end
12
13
 
13
- class Record
14
- include ActiveModel::Validations
14
+ class Record
15
+ include ActiveModel::Validations
15
16
 
16
- attr_accessor :user
17
+ attr_accessor :user
17
18
 
18
- def initialize(user)
19
- @user = user
20
- end
19
+ def initialize(user)
20
+ @user = user
21
21
  end
22
+ end
23
+ end
22
24
 
23
- let(:validator) { NestedValidator.new(attributes: [:user]) }
24
- let(:user) { User.new }
25
- let(:record) { Record.new(user) }
25
+ module MiniForm
26
+ describe NestedValidator do
27
+ let(:validator) { described_class.new(attributes: [:user]) }
28
+ let(:user) { SpecSupport::Person.new }
29
+ let(:record) { SpecSupport::Record.new(user) }
26
30
 
27
31
  it 'copies errors from submodel to model' do
28
32
  validator.validate(record)
@@ -1,42 +1,96 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
- module MiniForm
4
- describe Model do
5
- let(:user) { User.new id: 1, name: 'name', age: 28 }
5
+ module SpecSupport
6
+ class User
7
+ include ActiveModel::Model
6
8
 
7
- class User
8
- include ActiveModel::Model
9
+ attr_accessor :id, :name, :age
9
10
 
10
- attr_accessor :id, :name, :age
11
+ validates :name, presence: true
11
12
 
12
- validates :name, presence: true
13
+ def to_param
14
+ "user-#{id}"
13
15
  end
14
16
 
15
- Example = Class.new do
16
- include Model
17
+ def persisted?
18
+ id.present?
19
+ end
17
20
 
18
- attributes :name, :price
21
+ def new_record?
22
+ !persisted?
19
23
  end
24
+ end
20
25
 
21
- ExampleWithDelegate = Class.new do
22
- include Model
26
+ class Example
27
+ include MiniForm::Model
23
28
 
24
- attr_reader :user
29
+ attributes :name, :price
30
+ end
25
31
 
26
- attributes :name, delegate: :user
27
- attributes :id, delegate: :user, prefix: true
28
- attributes :name, delegate: :user, prefix: 'full'
32
+ class ExampleWithDelegate
33
+ include MiniForm::Model
29
34
 
30
- def initialize(user)
31
- @user = user
32
- end
35
+ attr_reader :user
36
+
37
+ attributes :name, delegate: :user
38
+ attributes :id, delegate: :user, prefix: true
39
+ attributes :name, delegate: :user, prefix: 'full'
40
+
41
+ def initialize(user)
42
+ @user = user
33
43
  end
44
+ end
45
+
46
+ class ExampleWithModel
47
+ include MiniForm::Model
48
+
49
+ model :user, attributes: %i(name), read: %i(id)
50
+
51
+ def initialize(user)
52
+ self.user = user
53
+ end
54
+ end
55
+
56
+ class ExampleForUpdate
57
+ include MiniForm::Model
58
+
59
+ attributes :name
60
+
61
+ validates :name, presence: true
62
+ end
63
+
64
+ class ExampleForSave
65
+ include MiniForm::Model
66
+
67
+ model :user, attributes: %i(name), save: true
68
+
69
+ def initialize(user:)
70
+ self.user = user
71
+ end
72
+ end
73
+
74
+ class ExampleFormModel
75
+ include MiniForm::Model
76
+
77
+ main_model :user
78
+
79
+ def initialize(user:)
80
+ self.user = user
81
+ end
82
+ end
83
+ end
84
+
85
+ module MiniForm
86
+ describe Model do
87
+ let(:user) { SpecSupport::User.new id: 1, name: 'name', age: 28 }
34
88
 
35
89
  describe 'acts as ActiveModel' do
36
90
  include ActiveModel::Lint::Tests
37
91
 
38
92
  before do
39
- @model = Example.new
93
+ @model = SpecSupport::Example.new
40
94
  end
41
95
 
42
96
  def assert(condition, message = nil)
@@ -51,6 +105,10 @@ module MiniForm
51
105
  expect(value).to eq(expected_value), message
52
106
  end
53
107
 
108
+ def assert_respond_to(klass, method, message = nil)
109
+ expect(klass).to respond_to(method), message
110
+ end
111
+
54
112
  ActiveModel::Lint::Tests.public_instance_methods.map(&:to_s).grep(/^test/).each do |method|
55
113
  example(method.gsub('_', ' ')) { send method }
56
114
  end
@@ -75,24 +133,24 @@ module MiniForm
75
133
 
76
134
  describe '.attributes' do
77
135
  it 'generates getters' do
78
- object = Example.new name: 'value'
136
+ object = SpecSupport::Example.new name: 'value'
79
137
  expect(object.name).to eq 'value'
80
138
  end
81
139
 
82
140
  it 'generates setters' do
83
- object = Example.new
141
+ object = SpecSupport::Example.new
84
142
  object.name = 'value'
85
143
 
86
144
  expect(object.name).to eq 'value'
87
145
  end
88
146
 
89
147
  it 'can delegate getter' do
90
- object = ExampleWithDelegate.new user
148
+ object = SpecSupport::ExampleWithDelegate.new user
91
149
  expect(object.name).to eq user.name
92
150
  end
93
151
 
94
152
  it 'can delegate setter' do
95
- object = ExampleWithDelegate.new user
153
+ object = SpecSupport::ExampleWithDelegate.new user
96
154
 
97
155
  object.name = 'New Name'
98
156
 
@@ -102,71 +160,75 @@ module MiniForm
102
160
  end
103
161
 
104
162
  describe '.model' do
105
- ExampleWithModel = Class.new do
106
- include Model
107
-
108
- model :user, attributes: %i(name), read: %i(id)
109
-
110
- def initialize(user)
111
- self.user = user
112
- end
113
- end
114
-
115
163
  it 'generates model accessors' do
116
- object = ExampleWithModel.new user
164
+ object = SpecSupport::ExampleWithModel.new user
117
165
  expect(object.user).to eq user
118
166
  end
119
167
 
120
168
  it 'can delegate only a reader' do
121
- object = ExampleWithModel.new user
169
+ object = SpecSupport::ExampleWithModel.new user
122
170
 
123
171
  expect(object).not_to respond_to :id=
124
172
  expect(object.id).to eq user.id
125
173
  end
126
174
 
127
175
  it 'can delegate model attributes' do
128
- object = ExampleWithModel.new user
176
+ object = SpecSupport::ExampleWithModel.new user
129
177
  expect(object.name).to eq user.name
130
178
  end
131
179
 
132
180
  it 'performs nested validation for model' do
133
- user = User.new
134
- object = ExampleWithModel.new user
181
+ user = SpecSupport::User.new
182
+ object = SpecSupport::ExampleWithModel.new user
135
183
 
136
184
  expect(object).not_to be_valid
137
185
  expect(object.errors[:name]).to be_present
138
186
  end
139
187
  end
140
188
 
189
+ describe '.main_model' do
190
+ it 'delegates Rails form attributes to the model' do
191
+ user = SpecSupport::User.new
192
+ object = SpecSupport::ExampleFormModel.new(user: user)
193
+
194
+ expect(object).to have_attributes(
195
+ id: user.id,
196
+ to_param: user.to_param,
197
+ persisted?: user.persisted?,
198
+ new_record?: user.new_record?
199
+ )
200
+ end
201
+ end
202
+
141
203
  describe '.attributes_names' do
142
204
  it 'returns attribute names' do
143
- expect(Example.attribute_names).to eq %i(name price)
205
+ expect(SpecSupport::Example.attribute_names).to eq %i(name price)
144
206
  end
145
207
 
146
208
  it 'can handle prefixes' do
147
- expect(ExampleWithDelegate.attribute_names).to include :user_id
148
- expect(ExampleWithDelegate.attribute_names).to include :full_name
209
+ expect(SpecSupport::ExampleWithDelegate.attribute_names).to include :user_id
210
+ expect(SpecSupport::ExampleWithDelegate.attribute_names).to include :full_name
149
211
  end
150
212
  end
151
213
 
152
214
  describe '#initialize' do
153
215
  it 'can be called with no arguments' do
154
- expect { Example.new }.not_to raise_error
216
+ expect { SpecSupport::Example.new }.not_to raise_error
155
217
  end
156
218
 
157
219
  it 'assign the passed attributes' do
158
- object = Example.new price: '$5'
220
+ object = SpecSupport::Example.new price: '$5'
159
221
 
160
222
  expect(object.price).to eq '$5'
161
223
  end
162
224
 
163
225
  it 'ignores invalid attributes' do
164
- expect { Example.new invalid: 'attribute' }.not_to raise_error
226
+ expect { SpecSupport::Example.new invalid: 'attribute' }.not_to raise_error
165
227
  end
166
228
 
167
229
  it 'handles HashWithIndifferentAccess hashes' do
168
230
  hash = ActiveSupport::HashWithIndifferentAccess.new 'price' => '$5'
169
- object = Example.new hash
231
+ object = SpecSupport::Example.new hash
170
232
 
171
233
  expect(object.price).to eq '$5'
172
234
  end
@@ -174,7 +236,7 @@ module MiniForm
174
236
 
175
237
  describe '#attributes' do
176
238
  it 'returns attributes' do
177
- object = Example.new name: 'iPhone', price: '$5'
239
+ object = SpecSupport::Example.new name: 'iPhone', price: '$5'
178
240
  expect(object.attributes).to eq name: 'iPhone', price: '$5'
179
241
  end
180
242
  end
@@ -182,14 +244,14 @@ module MiniForm
182
244
  ['attributes=', 'assign_attributes'].each do |method_name|
183
245
  describe "##{method_name}" do
184
246
  it 'sets attributes' do
185
- object = Example.new
247
+ object = SpecSupport::Example.new
186
248
  object.public_send method_name, name: 'iPhone', price: '$5'
187
249
 
188
250
  expect(object.attributes).to eq name: 'iPhone', price: '$5'
189
251
  end
190
252
 
191
253
  it 'ignores not listed attributes' do
192
- object = Example.new
254
+ object = SpecSupport::Example.new
193
255
  object.public_send method_name, invalid: 'value'
194
256
 
195
257
  expect(object.attributes).to eq name: nil, price: nil
@@ -198,38 +260,20 @@ module MiniForm
198
260
  end
199
261
 
200
262
  describe '#update' do
201
- ExampleForUpdate = Class.new do
202
- include Model
203
-
204
- attributes :name
205
-
206
- validates :name, presence: true
207
- end
208
-
209
- ExampleForSave = Class.new do
210
- include Model
211
-
212
- model :user, attributes: %i(name), save: true
213
-
214
- def initialize(user:)
215
- self.user = user
216
- end
217
- end
218
-
219
263
  it 'updates attributes' do
220
- object = ExampleForUpdate.new name: 'value'
264
+ object = SpecSupport::ExampleForUpdate.new name: 'value'
221
265
 
222
266
  expect { object.update(name: 'new value') }.to change { object.name }.to 'new value'
223
267
  end
224
268
 
225
269
  it 'returns true when validations pass' do
226
- object = ExampleForUpdate.new name: 'value'
270
+ object = SpecSupport::ExampleForUpdate.new name: 'value'
227
271
 
228
272
  expect(object.update).to eq true
229
273
  end
230
274
 
231
275
  it 'calls "perfom" method when validation pass' do
232
- object = ExampleForUpdate.new name: 'value'
276
+ object = SpecSupport::ExampleForUpdate.new name: 'value'
233
277
 
234
278
  allow(object).to receive(:perform)
235
279
 
@@ -239,7 +283,7 @@ module MiniForm
239
283
  end
240
284
 
241
285
  it 'calls "save" for the model' do
242
- object = ExampleForSave.new user: user
286
+ object = SpecSupport::ExampleForSave.new user: user
243
287
 
244
288
  allow(user).to receive(:save!)
245
289
 
@@ -249,7 +293,7 @@ module MiniForm
249
293
  end
250
294
 
251
295
  it 'supports update callbacks' do
252
- object = ExampleForUpdate.new name: 'value'
296
+ object = SpecSupport::ExampleForUpdate.new name: 'value'
253
297
 
254
298
  allow(object).to receive(:before_update)
255
299
  allow(object).to receive(:after_update)
@@ -261,7 +305,7 @@ module MiniForm
261
305
  end
262
306
 
263
307
  it 'supports legacy assig callbacks' do
264
- object = ExampleForUpdate.new
308
+ object = SpecSupport::ExampleForUpdate.new
265
309
 
266
310
  allow(object).to receive(:before_assigment)
267
311
  allow(object).to receive(:after_assigment)
@@ -273,7 +317,7 @@ module MiniForm
273
317
  end
274
318
 
275
319
  it 'supports assign callbacks' do
276
- object = ExampleForUpdate.new
320
+ object = SpecSupport::ExampleForUpdate.new
277
321
 
278
322
  allow(object).to receive(:before_assignment)
279
323
  allow(object).to receive(:after_assignment)
@@ -285,13 +329,13 @@ module MiniForm
285
329
  end
286
330
 
287
331
  it 'returns false when validations fail' do
288
- object = ExampleForUpdate.new name: nil
332
+ object = SpecSupport::ExampleForUpdate.new name: nil
289
333
 
290
334
  expect(object.update).to eq false
291
335
  end
292
336
 
293
337
  it 'does not call "perfom" method when validation fail' do
294
- object = ExampleForUpdate.new name: nil
338
+ object = SpecSupport::ExampleForUpdate.new name: nil
295
339
 
296
340
  allow(object).to receive(:perform)
297
341
 
@@ -303,12 +347,12 @@ module MiniForm
303
347
 
304
348
  describe '#update!' do
305
349
  it 'returns self' do
306
- object = Example.new
350
+ object = SpecSupport::Example.new
307
351
  expect(object.update!).to eq object
308
352
  end
309
353
 
310
354
  it 'calls update with given arguments' do
311
- object = Example.new
355
+ object = SpecSupport::Example.new
312
356
 
313
357
  allow(object).to receive(:update).and_return true
314
358
 
@@ -318,7 +362,7 @@ module MiniForm
318
362
  end
319
363
 
320
364
  it 'raises error when update fails' do
321
- object = Example.new
365
+ object = SpecSupport::Example.new
322
366
 
323
367
  allow(object).to receive(:update).and_return false
324
368
 
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/setup'
2
4
 
3
5
  if ENV['TRAVIS']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Radoslav Stankov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-08 00:00:00.000000000 Z
11
+ date: 2024-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -28,58 +28,58 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.3'
33
+ version: 2.1.4
34
34
  type: :development
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: '1.3'
40
+ version: 2.1.4
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "<"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '11.0'
47
+ version: 12.3.3
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: '11.0'
54
+ version: 12.3.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: '2.14'
61
+ version: 3.12.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: '2.14'
68
+ version: 3.12.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec-mocks
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 2.12.3
75
+ version: 3.12.0
76
76
  type: :development
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: 2.12.3
82
+ version: 3.12.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: coveralls
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -129,11 +129,11 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
+ - ".github/workflows/ci.yml"
132
133
  - ".gitignore"
133
134
  - ".projections.json"
134
135
  - ".rspec"
135
136
  - ".rubocop.yml"
136
- - ".travis.yml"
137
137
  - CHANGELOG.md
138
138
  - Gemfile
139
139
  - LICENSE.txt
@@ -152,7 +152,7 @@ homepage: https://github.com/RStankov/MiniForm
152
152
  licenses:
153
153
  - MIT
154
154
  metadata: {}
155
- post_install_message:
155
+ post_install_message:
156
156
  rdoc_options: []
157
157
  require_paths:
158
158
  - lib
@@ -167,9 +167,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  requirements: []
170
- rubyforge_project:
171
- rubygems_version: 2.6.13
172
- signing_key:
170
+ rubygems_version: 3.3.7
171
+ signing_key:
173
172
  specification_version: 4
174
173
  summary: Easy to use form objects in Rails projects
175
174
  test_files:
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.5
4
- - 2.3.3
5
- - 2.4.0
6
- script:
7
- - bundle exec rubocop
8
- - bundle exec rspec spec
9
- sudo: false
10
- cache: bundle
11
- notifications:
12
- email: false