granite-form 0.4.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/workflows/ruby.yml +3 -5
  4. data/.rubocop.yml +26 -48
  5. data/.rubocop_todo.yml +304 -27
  6. data/Appraisals +1 -1
  7. data/CHANGELOG.md +15 -2
  8. data/gemfiles/{rails.5.0.gemfile → rails.7.1.gemfile} +3 -3
  9. data/granite-form.gemspec +6 -5
  10. data/lib/granite/form/active_record/associations.rb +4 -3
  11. data/lib/granite/form/config.rb +1 -1
  12. data/lib/granite/form/errors.rb +34 -32
  13. data/lib/granite/form/extensions.rb +2 -1
  14. data/lib/granite/form/model/associations/base.rb +6 -2
  15. data/lib/granite/form/model/associations/collection/embedded.rb +1 -1
  16. data/lib/granite/form/model/associations/collection/proxy.rb +3 -3
  17. data/lib/granite/form/model/associations/embeds_any.rb +1 -1
  18. data/lib/granite/form/model/associations/embeds_many.rb +15 -11
  19. data/lib/granite/form/model/associations/embeds_one.rb +9 -8
  20. data/lib/granite/form/model/associations/nested_attributes.rb +60 -32
  21. data/lib/granite/form/model/associations/persistence_adapters/active_record/referenced_proxy.rb +2 -1
  22. data/lib/granite/form/model/associations/persistence_adapters/active_record.rb +7 -6
  23. data/lib/granite/form/model/associations/persistence_adapters/base.rb +8 -4
  24. data/lib/granite/form/model/associations/references_any.rb +1 -1
  25. data/lib/granite/form/model/associations/references_many.rb +3 -2
  26. data/lib/granite/form/model/associations/references_one.rb +1 -1
  27. data/lib/granite/form/model/associations/reflections/base.rb +3 -2
  28. data/lib/granite/form/model/associations/reflections/embeds_any.rb +4 -4
  29. data/lib/granite/form/model/associations/reflections/embeds_many.rb +4 -1
  30. data/lib/granite/form/model/associations/reflections/embeds_one.rb +4 -1
  31. data/lib/granite/form/model/associations/reflections/references_any.rb +6 -6
  32. data/lib/granite/form/model/associations/reflections/references_many.rb +1 -1
  33. data/lib/granite/form/model/associations/reflections/references_one.rb +1 -1
  34. data/lib/granite/form/model/associations/validations.rb +6 -6
  35. data/lib/granite/form/model/associations.rb +6 -4
  36. data/lib/granite/form/model/attributes/attribute.rb +1 -0
  37. data/lib/granite/form/model/attributes/base.rb +9 -7
  38. data/lib/granite/form/model/attributes/reference_one.rb +1 -1
  39. data/lib/granite/form/model/attributes/reflections/base/build_type_definition.rb +2 -1
  40. data/lib/granite/form/model/attributes/reflections/represents/build_type_definition.rb +2 -2
  41. data/lib/granite/form/model/attributes/represents.rb +1 -1
  42. data/lib/granite/form/model/attributes.rb +21 -13
  43. data/lib/granite/form/model/conventions.rb +1 -1
  44. data/lib/granite/form/model/persistence.rb +1 -1
  45. data/lib/granite/form/model/primary.rb +1 -1
  46. data/lib/granite/form/model/representation.rb +4 -4
  47. data/lib/granite/form/model/scopes.rb +5 -5
  48. data/lib/granite/form/model/validations.rb +4 -3
  49. data/lib/granite/form/types/active_support/time_zone.rb +1 -1
  50. data/lib/granite/form/types/array.rb +1 -1
  51. data/lib/granite/form/types/big_decimal.rb +1 -1
  52. data/lib/granite/form/types/boolean.rb +1 -1
  53. data/lib/granite/form/types/date.rb +1 -1
  54. data/lib/granite/form/types/date_time.rb +1 -1
  55. data/lib/granite/form/types/dictionary.rb +1 -1
  56. data/lib/granite/form/types/float.rb +1 -1
  57. data/lib/granite/form/types/has_subtype.rb +1 -0
  58. data/lib/granite/form/types/hash_with_action_controller_parameters.rb +2 -2
  59. data/lib/granite/form/types/integer.rb +1 -1
  60. data/lib/granite/form/types/object.rb +2 -1
  61. data/lib/granite/form/types/string.rb +1 -1
  62. data/lib/granite/form/types/time.rb +1 -1
  63. data/lib/granite/form/types/uuid.rb +1 -1
  64. data/lib/granite/form/util.rb +1 -1
  65. data/lib/granite/form/version.rb +1 -1
  66. data/spec/granite/form/active_record/associations_spec.rb +35 -13
  67. data/spec/granite/form/config_spec.rb +8 -4
  68. data/spec/granite/form/model/associations/embeds_many_spec.rb +99 -51
  69. data/spec/granite/form/model/associations/embeds_one_spec.rb +48 -25
  70. data/spec/granite/form/model/associations/persistence_adapters/active_record_spec.rb +12 -7
  71. data/spec/granite/form/model/associations/references_many_spec.rb +51 -10
  72. data/spec/granite/form/model/associations/references_one_spec.rb +17 -6
  73. data/spec/granite/form/model/associations/reflections/embeds_many_spec.rb +51 -16
  74. data/spec/granite/form/model/associations/reflections/embeds_one_spec.rb +19 -9
  75. data/spec/granite/form/model/associations/reflections/references_many_spec.rb +67 -15
  76. data/spec/granite/form/model/associations/reflections/references_one_spec.rb +34 -11
  77. data/spec/granite/form/model/associations/validations_spec.rb +16 -5
  78. data/spec/granite/form/model/associations_spec.rb +28 -9
  79. data/spec/granite/form/model/attributes/attribute_spec.rb +33 -11
  80. data/spec/granite/form/model/attributes/base_spec.rb +26 -2
  81. data/spec/granite/form/model/attributes/reflections/attribute_spec.rb +1 -0
  82. data/spec/granite/form/model/attributes/reflections/base_spec.rb +1 -0
  83. data/spec/granite/form/model/attributes/reflections/represents/build_type_definition_spec.rb +3 -1
  84. data/spec/granite/form/model/attributes/reflections/represents_spec.rb +2 -2
  85. data/spec/granite/form/model/attributes/represents_spec.rb +2 -2
  86. data/spec/granite/form/model/attributes_spec.rb +76 -36
  87. data/spec/granite/form/model/dirty_spec.rb +3 -0
  88. data/spec/granite/form/model/persistence_spec.rb +15 -5
  89. data/spec/granite/form/model/primary_spec.rb +17 -2
  90. data/spec/granite/form/model/representation_spec.rb +13 -3
  91. data/spec/granite/form/model/scopes_spec.rb +8 -3
  92. data/spec/granite/form/model/validations/associated_spec.rb +20 -6
  93. data/spec/granite/form/model/validations/nested_spec.rb +30 -14
  94. data/spec/granite/form/model/validations_spec.rb +1 -1
  95. data/spec/granite/form/model_spec.rb +1 -0
  96. data/spec/granite/form/types/collection_spec.rb +2 -1
  97. data/spec/granite/form/types/date_spec.rb +1 -1
  98. data/spec/granite/form/types/date_time_spec.rb +0 -2
  99. data/spec/granite/form/types/dictionary_spec.rb +1 -0
  100. data/spec/granite/form/types/has_subtype_spec.rb +6 -1
  101. data/spec/granite/form/types/hash_with_action_controller_parameters_spec.rb +1 -1
  102. data/spec/granite/form/types/object_spec.rb +2 -0
  103. data/spec/granite/form/types/time_spec.rb +0 -2
  104. data/spec/granite/form/util_spec.rb +6 -3
  105. data/spec/support/active_record.rb +13 -0
  106. data/spec/support/shared/nested_attribute_examples.rb +110 -54
  107. metadata +28 -16
  108. data/gemfiles/rails.5.1.gemfile +0 -14
  109. data/gemfiles/rails.5.2.gemfile +0 -14
@@ -23,18 +23,34 @@ shared_examples 'nested attributes' do
23
23
  let(:user) { User.new }
24
24
 
25
25
  specify { expect { user.profile_attributes = {} }.to change { user.profile }.to(an_instance_of(Profile)) }
26
- specify { expect { user.profile_attributes = {first_name: 'User'} }.to change { user.profile.try(:first_name) }.to('User') }
27
- specify { expect { user.profile_attributes = {identifier: 42, first_name: 'User'} }.to raise_error Granite::Form::ObjectNotFound }
26
+
27
+ specify do
28
+ expect { user.profile_attributes = { first_name: 'User' } }
29
+ .to change { user.profile.try(:first_name) }
30
+ .to('User')
31
+ end
32
+
33
+ specify do
34
+ expect do
35
+ user.profile_attributes = { identifier: 42, first_name: 'User' }
36
+ end.to raise_error Granite::Form::ObjectNotFound
37
+ end
28
38
 
29
39
  context ':reject_if' do
30
40
  context do
31
41
  before { User.accepts_nested_attributes_for :profile, reject_if: :all_blank }
32
- specify { expect { user.profile_attributes = {first_name: ''} }.not_to change { user.profile } }
42
+
43
+ specify { expect { user.profile_attributes = { first_name: '' } }.not_to(change { user.profile }) }
33
44
  end
34
45
 
35
46
  context do
36
- before { User.accepts_nested_attributes_for :profile, reject_if: ->(attributes) { attributes['first_name'].blank? } }
37
- specify { expect { user.profile_attributes = {first_name: ''} }.not_to change { user.profile } }
47
+ before do
48
+ User.accepts_nested_attributes_for :profile, reject_if: lambda { |attributes|
49
+ attributes['first_name'].blank?
50
+ }
51
+ end
52
+
53
+ specify { expect { user.profile_attributes = { first_name: '' } }.not_to(change { user.profile }) }
38
54
  end
39
55
  end
40
56
 
@@ -42,35 +58,50 @@ shared_examples 'nested attributes' do
42
58
  let(:profile) { Profile.new(first_name: 'User') }
43
59
  let(:user) { User.new profile: profile }
44
60
 
45
- specify { expect { user.profile_attributes = {identifier: 42, first_name: 'User'} }.to raise_error Granite::Form::ObjectNotFound }
46
- specify { expect { user.profile_attributes = {identifier: profile.identifier.to_s, first_name: 'User 1'} }.to change { user.profile.first_name }.to('User 1') }
47
- specify { expect { user.profile_attributes = {first_name: 'User 1'} }.to change { user.profile.first_name }.to('User 1') }
48
- specify { expect { user.profile_attributes = {first_name: 'User 1', _destroy: '1'} }.not_to change { user.profile.first_name } }
49
61
  specify do
50
62
  expect do
51
- user.profile_attributes = {first_name: 'User 1', _destroy: '1'}
52
- end.not_to change { user.profile.first_name }
63
+ user.profile_attributes = { identifier: 42, first_name: 'User' }
64
+ end.to raise_error Granite::Form::ObjectNotFound
65
+ end
66
+
67
+ specify do
68
+ expect { user.profile_attributes = { identifier: profile.identifier.to_s, first_name: 'User 1' } }
69
+ .to change { user.profile.first_name }.to('User 1')
70
+ end
71
+
72
+ specify do
73
+ expect { user.profile_attributes = { first_name: 'User 1' } }
74
+ .to change { user.profile.first_name }.to('User 1')
53
75
  end
54
- specify { expect { user.profile_attributes = {identifier: profile.identifier.to_s, first_name: 'User 1', _destroy: '1'} }.to change { user.profile.first_name }.to('User 1') }
76
+
77
+ specify do
78
+ expect { user.profile_attributes = { first_name: 'User 1', _destroy: '1' } }
79
+ .not_to(change { user.profile.first_name })
80
+ end
81
+
55
82
  specify do
56
83
  expect do
57
- user.profile_attributes = {identifier: profile.identifier.to_s, first_name: 'User 1', _destroy: '1'}
84
+ user.profile_attributes = { first_name: 'User 1', _destroy: '1' }
85
+ end.not_to(change { user.profile.first_name })
86
+ end
87
+
88
+ specify do
89
+ expect do
90
+ user.profile_attributes = { identifier: profile.identifier.to_s, first_name: 'User 1', _destroy: '1' }
58
91
  end.to change { user.profile.first_name }.to('User 1')
59
92
  end
60
93
 
61
94
  context ':allow_destroy' do
62
95
  before { User.accepts_nested_attributes_for :profile, allow_destroy: true }
63
96
 
64
- specify { expect { user.profile_attributes = {first_name: 'User 1', _destroy: '1'} }.not_to change { user.profile.first_name } }
65
97
  specify do
66
- expect do
67
- user.profile_attributes = {first_name: 'User 1', _destroy: '1'}
68
- end.not_to change { user.profile.first_name }
98
+ expect { user.profile_attributes = { first_name: 'User 1', _destroy: '1' } }
99
+ .not_to(change { user.profile.first_name })
69
100
  end
70
- specify { expect { user.profile_attributes = {identifier: profile.identifier.to_s, first_name: 'User 1', _destroy: '1'} }.to change { user.profile }.to(nil) }
101
+
71
102
  specify do
72
103
  expect do
73
- user.profile_attributes = {identifier: profile.identifier.to_s, first_name: 'User 1', _destroy: '1'}
104
+ user.profile_attributes = { identifier: profile.identifier.to_s, first_name: 'User 1', _destroy: '1' }
74
105
  end.to change { user.profile }.to(nil)
75
106
  end
76
107
  end
@@ -79,7 +110,7 @@ shared_examples 'nested attributes' do
79
110
  before { User.accepts_nested_attributes_for :profile, update_only: true }
80
111
 
81
112
  specify do
82
- expect { user.profile_attributes = {identifier: 42, first_name: 'User 1'} }
113
+ expect { user.profile_attributes = { identifier: 42, first_name: 'User 1' } }
83
114
  .to change { user.profile.first_name }.to('User 1')
84
115
  end
85
116
  end
@@ -94,14 +125,18 @@ shared_examples 'nested attributes' do
94
125
  end
95
126
 
96
127
  specify { expect { user.profile_attributes = {} }.to change { user.profile }.to(an_instance_of(Profile)) }
97
- specify { expect { user.profile_attributes = {first_name: 'User'} }.to change { user.profile.try(:first_name) }.to('User') }
128
+
129
+ specify do
130
+ expect { user.profile_attributes = { first_name: 'User' } }
131
+ .to change { user.profile.try(:first_name) }.to('User')
132
+ end
98
133
 
99
134
  context do
100
135
  let(:profile) { Profile.new(first_name: 'User') }
101
136
  let(:user) { User.new profile: profile }
102
137
 
103
138
  specify do
104
- expect { user.profile_attributes = {identifier: 42, first_name: 'User 1'} }
139
+ expect { user.profile_attributes = { identifier: 42, first_name: 'User 1' } }
105
140
  .to change { user.profile.first_name }.to('User 1')
106
141
  end
107
142
  end
@@ -127,21 +162,25 @@ shared_examples 'nested attributes' do
127
162
  context 'embeds_many' do
128
163
  let(:user) { User.new }
129
164
 
130
- specify { expect { user.projects_attributes = {} }.not_to change { user.projects } }
165
+ specify { expect { user.projects_attributes = {} }.not_to(change { user.projects }) }
166
+
131
167
  specify do
132
- expect { user.projects_attributes = [{title: 'Project 1'}, {title: 'Project 2'}] }
168
+ expect { user.projects_attributes = [{ title: 'Project 1' }, { title: 'Project 2' }] }
133
169
  .to change { user.projects.map(&:title) }.to(['Project 1', 'Project 2'])
134
170
  end
171
+
135
172
  specify do
136
- expect { user.projects_attributes = {1 => {title: 'Project 1'}, 2 => {title: 'Project 2'}} }
173
+ expect { user.projects_attributes = { 1 => { title: 'Project 1' }, 2 => { title: 'Project 2' } } }
137
174
  .to change { user.projects.map(&:title) }.to(['Project 1', 'Project 2'])
138
175
  end
176
+
139
177
  specify do
140
- expect { user.projects_attributes = [{slug: 42, title: 'Project 1'}, {title: 'Project 2'}] }
178
+ expect { user.projects_attributes = [{ slug: 42, title: 'Project 1' }, { title: 'Project 2' }] }
141
179
  .to change { user.projects.map(&:title) }.to(['Project 1', 'Project 2'])
142
180
  end
181
+
143
182
  specify do
144
- expect { user.projects_attributes = [{title: ''}, {title: 'Project 2'}] }
183
+ expect { user.projects_attributes = [{ title: '' }, { title: 'Project 2' }] }
145
184
  .to change { user.projects.map(&:title) }.to(['', 'Project 2'])
146
185
  end
147
186
 
@@ -149,11 +188,12 @@ shared_examples 'nested attributes' do
149
188
  before { User.accepts_nested_attributes_for :projects, limit: 1 }
150
189
 
151
190
  specify do
152
- expect { user.projects_attributes = [{title: 'Project 1'}] }
191
+ expect { user.projects_attributes = [{ title: 'Project 1' }] }
153
192
  .to change { user.projects.map(&:title) }.to(['Project 1'])
154
193
  end
194
+
155
195
  specify do
156
- expect { user.projects_attributes = [{title: 'Project 1'}, {title: 'Project 2'}] }
196
+ expect { user.projects_attributes = [{ title: 'Project 1' }, { title: 'Project 2' }] }
157
197
  .to raise_error Granite::Form::TooManyObjects
158
198
  end
159
199
  end
@@ -161,25 +201,36 @@ shared_examples 'nested attributes' do
161
201
  context ':reject_if' do
162
202
  context do
163
203
  before { User.accepts_nested_attributes_for :projects, reject_if: :all_blank }
204
+
164
205
  specify do
165
- expect { user.projects_attributes = [{title: ''}, {title: 'Project 2'}] }
206
+ expect { user.projects_attributes = [{ title: '' }, { title: 'Project 2' }] }
166
207
  .to change { user.projects.map(&:title) }.to(['Project 2'])
167
208
  end
168
209
  end
169
210
 
170
211
  context do
171
- before { User.accepts_nested_attributes_for :projects, reject_if: ->(attributes) { attributes['title'].blank? } }
212
+ before do
213
+ User.accepts_nested_attributes_for :projects, reject_if: lambda { |attributes|
214
+ attributes['title'].blank?
215
+ }
216
+ end
217
+
172
218
  specify do
173
- expect { user.projects_attributes = [{title: ''}, {title: 'Project 2'}] }
219
+ expect { user.projects_attributes = [{ title: '' }, { title: 'Project 2' }] }
174
220
  .to change { user.projects.map(&:title) }.to(['Project 2'])
175
221
  end
176
222
  end
177
223
 
178
224
  context do
179
- before { User.accepts_nested_attributes_for :projects, reject_if: ->(attributes) { attributes['foobar'].blank? } }
225
+ before do
226
+ User.accepts_nested_attributes_for :projects, reject_if: lambda { |attributes|
227
+ attributes['foobar'].blank?
228
+ }
229
+ end
230
+
180
231
  specify do
181
- expect { user.projects_attributes = [{title: ''}, {title: 'Project 2'}] }
182
- .not_to change { user.projects }
232
+ expect { user.projects_attributes = [{ title: '' }, { title: 'Project 2' }] }
233
+ .not_to(change { user.projects })
183
234
  end
184
235
  end
185
236
  end
@@ -191,53 +242,58 @@ shared_examples 'nested attributes' do
191
242
  specify do
192
243
  expect do
193
244
  user.projects_attributes = [
194
- {slug: projects.first.slug.to_i, title: 'Project 3'},
195
- {title: 'Project 4'}
245
+ { slug: projects.first.slug.to_i, title: 'Project 3' },
246
+ { title: 'Project 4' }
196
247
  ]
197
248
  end
198
249
  .to change { user.projects.map(&:title) }.to(['Project 3', 'Project 2', 'Project 4'])
199
250
  end
251
+
200
252
  specify do
201
253
  expect do
202
254
  user.projects_attributes = [
203
- {slug: projects.first.slug.to_i, title: 'Project 3'},
204
- {slug: 33, title: 'Project 4'}
255
+ { slug: projects.first.slug.to_i, title: 'Project 3' },
256
+ { slug: 33, title: 'Project 4' }
205
257
  ]
206
258
  end
207
259
  .to change { user.projects.map(&:slug) }.to(%w[42 43 33])
208
260
  end
261
+
209
262
  specify do
210
263
  expect do
211
264
  user.projects_attributes = [
212
- {slug: projects.first.slug.to_i, title: 'Project 3'},
213
- {slug: 33, title: 'Project 4', _destroy: 1}
265
+ { slug: projects.first.slug.to_i, title: 'Project 3' },
266
+ { slug: 33, title: 'Project 4', _destroy: 1 }
214
267
  ]
215
268
  end
216
- .not_to change { user.projects.map(&:slug) }
269
+ .not_to(change { user.projects.map(&:slug) })
217
270
  end
271
+
218
272
  specify do
219
273
  expect do
220
274
  user.projects_attributes = {
221
- 1 => {slug: projects.first.slug.to_i, title: 'Project 3'},
222
- 2 => {title: 'Project 4'}
275
+ 1 => { slug: projects.first.slug.to_i, title: 'Project 3' },
276
+ 2 => { title: 'Project 4' }
223
277
  }
224
278
  end
225
279
  .to change { user.projects.map(&:title) }.to(['Project 3', 'Project 2', 'Project 4'])
226
280
  end
281
+
227
282
  specify do
228
283
  expect do
229
284
  user.projects_attributes = [
230
- {slug: projects.first.slug.to_i, title: 'Project 3', _destroy: '1'},
231
- {title: 'Project 4', _destroy: '1'}
285
+ { slug: projects.first.slug.to_i, title: 'Project 3', _destroy: '1' },
286
+ { title: 'Project 4', _destroy: '1' }
232
287
  ]
233
288
  end
234
289
  .to change { user.projects.map(&:title) }.to(['Project 3', 'Project 2'])
235
290
  end
291
+
236
292
  specify do
237
293
  expect do
238
294
  user.projects_attributes = [
239
- {slug: projects.first.slug.to_i, title: 'Project 3', _destroy: '1'},
240
- {title: 'Project 4', _destroy: '1'}
295
+ { slug: projects.first.slug.to_i, title: 'Project 3', _destroy: '1' },
296
+ { title: 'Project 4', _destroy: '1' }
241
297
  ]
242
298
  end
243
299
  .to change { user.projects.map(&:title) }.to(['Project 3', 'Project 2'])
@@ -249,8 +305,8 @@ shared_examples 'nested attributes' do
249
305
  specify do
250
306
  expect do
251
307
  user.projects_attributes = [
252
- {slug: projects.first.slug.to_i, title: 'Project 3', _destroy: '1'},
253
- {title: 'Project 4', _destroy: '1'}
308
+ { slug: projects.first.slug.to_i, title: 'Project 3', _destroy: '1' },
309
+ { title: 'Project 4', _destroy: '1' }
254
310
  ]
255
311
  end
256
312
  .to change { user.projects.map(&:title) }.to(['Project 2'])
@@ -263,8 +319,8 @@ shared_examples 'nested attributes' do
263
319
  specify do
264
320
  expect do
265
321
  user.projects_attributes = [
266
- {slug: projects.first.slug.to_i, title: 'Project 3'},
267
- {title: 'Project 4'}
322
+ { slug: projects.first.slug.to_i, title: 'Project 3' },
323
+ { title: 'Project 4' }
268
324
  ]
269
325
  end
270
326
  .to change { user.projects.map(&:title) }.to(['Project 3', 'Project 2'])
@@ -273,8 +329,8 @@ shared_examples 'nested attributes' do
273
329
  specify do
274
330
  expect do
275
331
  user.projects_attributes = [
276
- {slug: projects.last.slug.to_i, title: 'Project 3'},
277
- {slug: projects.first.slug.to_i.pred, title: 'Project 0'}
332
+ { slug: projects.last.slug.to_i, title: 'Project 3' },
333
+ { slug: projects.first.slug.to_i.pred, title: 'Project 0' }
278
334
  ]
279
335
  end
280
336
  .to change { user.projects.map(&:title) }.to(['Project 1', 'Project 3'])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: granite-form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toptal Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-31 00:00:00.000000000 Z
11
+ date: 2024-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '6.0'
20
20
  type: :development
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: '5.0'
26
+ version: '6.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '6.0'
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: '5.0'
40
+ version: '6.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: appraisal
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +142,28 @@ dependencies:
142
142
  requirements:
143
143
  - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: 0.52.1
145
+ version: 1.63.5
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: 0.52.1
152
+ version: 1.63.5
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-rspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '='
158
+ - !ruby/object:Gem::Version
159
+ version: 2.29.2
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '='
165
+ - !ruby/object:Gem::Version
166
+ version: 2.29.2
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: uuidtools
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -170,28 +184,28 @@ dependencies:
170
184
  requirements:
171
185
  - - ">="
172
186
  - !ruby/object:Gem::Version
173
- version: '5.0'
187
+ version: '6.0'
174
188
  type: :runtime
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - ">="
179
193
  - !ruby/object:Gem::Version
180
- version: '5.0'
194
+ version: '6.0'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: activesupport
183
197
  requirement: !ruby/object:Gem::Requirement
184
198
  requirements:
185
199
  - - ">="
186
200
  - !ruby/object:Gem::Version
187
- version: '5.0'
201
+ version: '6.0'
188
202
  type: :runtime
189
203
  prerelease: false
190
204
  version_requirements: !ruby/object:Gem::Requirement
191
205
  requirements:
192
206
  - - ">="
193
207
  - !ruby/object:Gem::Version
194
- version: '5.0'
208
+ version: '6.0'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: tzinfo
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -227,12 +241,10 @@ files:
227
241
  - README.md
228
242
  - Rakefile
229
243
  - docker-compose.yml
230
- - gemfiles/rails.5.0.gemfile
231
- - gemfiles/rails.5.1.gemfile
232
- - gemfiles/rails.5.2.gemfile
233
244
  - gemfiles/rails.6.0.gemfile
234
245
  - gemfiles/rails.6.1.gemfile
235
246
  - gemfiles/rails.7.0.gemfile
247
+ - gemfiles/rails.7.1.gemfile
236
248
  - granite-form.gemspec
237
249
  - lib/granite/form.rb
238
250
  - lib/granite/form/active_record/associations.rb
@@ -395,7 +407,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
395
407
  - !ruby/object:Gem::Version
396
408
  version: '0'
397
409
  requirements: []
398
- rubygems_version: 3.3.26
410
+ rubygems_version: 3.5.9
399
411
  signing_key:
400
412
  specification_version: 4
401
413
  summary: Working with hashes in AR style
@@ -1,14 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activesupport", "~> 5.1.0"
6
- gem "activemodel", "~> 5.1.0"
7
- gem "activerecord", "~> 5.1.0"
8
-
9
- group :test do
10
- gem "guard"
11
- gem "guard-rspec"
12
- end
13
-
14
- gemspec path: "../"
@@ -1,14 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activesupport", "~> 5.2.0"
6
- gem "activemodel", "~> 5.2.0"
7
- gem "activerecord", "~> 5.2.0"
8
-
9
- group :test do
10
- gem "guard"
11
- gem "guard-rspec"
12
- end
13
-
14
- gemspec path: "../"