validation_sync 0.0.4 → 0.0.5

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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/generate_validations.js.erb +138 -0
  3. data/app/assets/javascripts/validation_sync.js +2 -1
  4. data/app/helpers/validation_sync_form_helper.rb +12 -71
  5. data/lib/validation_sync/engine.rb +2 -0
  6. data/lib/validation_sync/validation_builder.rb +139 -0
  7. data/lib/validation_sync/version.rb +1 -1
  8. data/lib/validation_sync.rb +1 -0
  9. data/spec/dummy/app/controllers/posts_controller.rb +1 -1
  10. data/spec/dummy/app/controllers/users_controller.rb +58 -0
  11. data/spec/dummy/app/models/post.rb +15 -4
  12. data/spec/dummy/app/models/user.rb +11 -0
  13. data/spec/dummy/app/views/posts/_form.html.erb +8 -0
  14. data/spec/dummy/app/views/posts/show.html.erb +5 -0
  15. data/spec/dummy/app/views/users/_form.html.erb +33 -0
  16. data/spec/dummy/app/views/users/edit.html.erb +6 -0
  17. data/spec/dummy/app/views/users/index.html.erb +29 -0
  18. data/spec/dummy/app/views/users/new.html.erb +5 -0
  19. data/spec/dummy/app/views/users/show.html.erb +14 -0
  20. data/spec/dummy/config/application.rb +1 -0
  21. data/spec/dummy/config/routes.rb +3 -0
  22. data/spec/dummy/db/development.sqlite3 +0 -0
  23. data/spec/dummy/db/migrate/20140211200846_create_users.rb +10 -0
  24. data/spec/dummy/db/migrate/20140212170448_add_order_to_posts.rb +5 -0
  25. data/spec/dummy/db/migrate/20140212173012_add_user_id_to_posts.rb +5 -0
  26. data/spec/dummy/db/schema.rb +10 -1
  27. data/spec/dummy/db/test.sqlite3 +0 -0
  28. data/spec/dummy/log/development.log +7256 -0
  29. data/spec/dummy/log/test.log +6037 -0
  30. data/spec/dummy/spec/factories/posts.rb +26 -0
  31. data/spec/dummy/spec/factories/users.rb +14 -0
  32. data/spec/dummy/spec/models/post_spec.rb +98 -0
  33. data/spec/dummy/spec/models/user_spec.rb +27 -0
  34. data/spec/dummy/tmp/cache/assets/development/sprockets/10c6f05e183df4466be1e0171868fbd3 +0 -0
  35. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  36. data/spec/dummy/tmp/cache/assets/development/sprockets/254f7fcb30f60607963da8bbb320eb25 +0 -0
  37. data/spec/dummy/tmp/cache/assets/development/sprockets/256916ba749d0c14e36b55d4b382e9f5 +0 -0
  38. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  39. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  40. data/spec/dummy/tmp/cache/assets/development/sprockets/38ec44893aed52b20a20a929a47e0ad9 +0 -0
  41. data/spec/dummy/tmp/cache/assets/development/sprockets/4a4d6fda449d6b443e5b29ccb755c732 +0 -0
  42. data/spec/dummy/tmp/cache/assets/development/sprockets/513dd40b9b52367f54d64438a9d802b9 +0 -0
  43. data/spec/dummy/tmp/cache/assets/development/sprockets/56146675dbad13c72d3eb9ebd823dc11 +0 -0
  44. data/spec/dummy/tmp/cache/assets/development/sprockets/7aaf7da4e6ec4c84cc7948fb20c35064 +0 -0
  45. data/spec/dummy/tmp/cache/assets/development/sprockets/ba165ee56ce37f61865fe03d6503539b +0 -0
  46. data/spec/dummy/tmp/cache/assets/development/sprockets/bfaeb96080cc4d8ba400fbdcd1d4aab2 +0 -0
  47. data/spec/dummy/tmp/cache/assets/development/sprockets/c4f1b332263aa5004a8ac54ca9530510 +0 -0
  48. data/spec/dummy/tmp/cache/assets/development/sprockets/c63406c52c03bbb24922ded6ebb0e0a2 +0 -0
  49. data/spec/dummy/tmp/cache/assets/development/sprockets/cbc66bd36b3aa4411f9ce20da0fd37a0 +0 -0
  50. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  51. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  52. data/spec/dummy/tmp/cache/assets/development/sprockets/d7874cf8a5946ec3899e5bb627905ca5 +0 -0
  53. data/spec/dummy/tmp/cache/assets/development/sprockets/e1d4998592ddfea795aca82d742d9478 +0 -0
  54. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  55. data/spec/dummy/tmp/cache/assets/test/sprockets/0f11e0b3e0ece93d6c047318f2e5497d +0 -0
  56. data/spec/dummy/tmp/cache/assets/test/sprockets/10c6f05e183df4466be1e0171868fbd3 +0 -0
  57. data/spec/dummy/tmp/cache/assets/test/sprockets/122e92d06837af295d6c941999a8d48f +0 -0
  58. data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  59. data/spec/dummy/tmp/cache/assets/test/sprockets/254f7fcb30f60607963da8bbb320eb25 +0 -0
  60. data/spec/dummy/tmp/cache/assets/test/sprockets/256916ba749d0c14e36b55d4b382e9f5 +0 -0
  61. data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  62. data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  63. data/spec/dummy/tmp/cache/assets/test/sprockets/4a4d6fda449d6b443e5b29ccb755c732 +0 -0
  64. data/spec/dummy/tmp/cache/assets/test/sprockets/56146675dbad13c72d3eb9ebd823dc11 +0 -0
  65. data/spec/dummy/tmp/cache/assets/test/sprockets/bfaeb96080cc4d8ba400fbdcd1d4aab2 +0 -0
  66. data/spec/dummy/tmp/cache/assets/test/sprockets/c4f1b332263aa5004a8ac54ca9530510 +0 -0
  67. data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  68. data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  69. data/spec/dummy/tmp/cache/assets/test/sprockets/d7874cf8a5946ec3899e5bb627905ca5 +0 -0
  70. data/spec/dummy/tmp/cache/assets/test/sprockets/e1d4998592ddfea795aca82d742d9478 +0 -0
  71. data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  72. data/spec/dummy/tmp/capybara/capybara-201402111733312899331645.html +39 -0
  73. data/spec/dummy/tmp/capybara/capybara-201402111742049902988712.html +39 -0
  74. data/spec/dummy/tmp/capybara/capybara-201402111743461497527818.html +39 -0
  75. data/spec/dummy/tmp/capybara/capybara-201402121034216891460553.html +39 -0
  76. data/spec/dummy/tmp/capybara/capybara-201402121100145511229652.html +39 -0
  77. data/spec/dummy/tmp/capybara/capybara-20140212110749239625833.html +39 -0
  78. data/spec/dummy/tmp/capybara/capybara-201402121110009350488348.html +39 -0
  79. data/spec/dummy/tmp/capybara/capybara-201402121242315707153414.html +54 -0
  80. data/spec/dummy/tmp/capybara/capybara-2014021212463939561980.html +47 -0
  81. data/spec/dummy/tmp/capybara/capybara-201402121308362867044001.html +47 -0
  82. data/spec/dummy/tmp/capybara/capybara-201402121309286432044699.html +47 -0
  83. data/spec/dummy/tmp/capybara/capybara-201402121506235794052148.html +39 -0
  84. data/spec/dummy/tmp/capybara/capybara-201402121507316558835315.html +27 -0
  85. data/spec/dummy/tmp/capybara/capybara-201402121512202956445364.html +39 -0
  86. data/spec/dummy/tmp/capybara/capybara-201402121517176338336364.html +39 -0
  87. data/spec/dummy/tmp/capybara/capybara-201402121518121290133083.html +39 -0
  88. data/spec/dummy/tmp/pids/server.pid +1 -0
  89. data/spec/features/form_interactions_spec.rb +153 -0
  90. data/spec/features/generate_validations_spec.rb +26 -0
  91. data/spec/helpers/validation_sync_form_helper_spec.rb +24 -0
  92. data/spec/lib/validation_builder_spec.rb +173 -0
  93. data/spec/spec_helper.rb +7 -1
  94. metadata +120 -11
  95. data/app/assets/javascripts/validations.js.coffee.erb +0 -51
  96. data/spec/dummy/app/assets/javascripts/posts.js +0 -2
  97. data/spec/dummy/app/assets/stylesheets/posts.css +0 -4
  98. data/spec/features/form_validation_spec.rb +0 -53
  99. data/spec/helpers/form_helper_spec.rb +0 -4
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,8 @@ require File.expand_path("../dummy/config/environment.rb", __FILE__)
4
4
  require 'rspec/rails'
5
5
  require 'rspec/autorun'
6
6
  require 'factory_girl_rails'
7
+ require 'capybara-webkit'
8
+ require 'coffee_script'
7
9
 
8
10
  Rails.backtrace_cleaner.remove_silencers!
9
11
 
@@ -23,4 +25,8 @@ RSpec.configure do |config|
23
25
 
24
26
  # Allow for short-hand Factory Girl syntax
25
27
  config.include FactoryGirl::Syntax::Methods
26
- end
28
+ end
29
+
30
+ # Pick up on factories in the dummy app
31
+ FactoryGirl.definition_file_paths = %W(spec/dummy/spec/factories)
32
+ FactoryGirl.reload
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validation_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Hackley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-10 00:00:00.000000000 Z
11
+ date: 2014-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -159,34 +159,40 @@ extra_rdoc_files: []
159
159
  files:
160
160
  - MIT-LICENSE
161
161
  - Rakefile
162
+ - app/assets/javascripts/generate_validations.js.erb
162
163
  - app/assets/javascripts/jquery.validate.min.js
163
164
  - app/assets/javascripts/validation_sync.js
164
- - app/assets/javascripts/validations.js.coffee.erb
165
165
  - app/assets/stylesheets/validation_sync/application.css
166
166
  - app/helpers/validation_sync_form_helper.rb
167
167
  - config/routes.rb
168
168
  - lib/tasks/validation_sync_tasks.rake
169
169
  - lib/validation_sync.rb
170
170
  - lib/validation_sync/engine.rb
171
+ - lib/validation_sync/validation_builder.rb
171
172
  - lib/validation_sync/version.rb
172
173
  - spec/dummy/README.rdoc
173
174
  - spec/dummy/Rakefile
174
175
  - spec/dummy/app/assets/javascripts/application.js
175
- - spec/dummy/app/assets/javascripts/posts.js
176
176
  - spec/dummy/app/assets/stylesheets/application.css
177
- - spec/dummy/app/assets/stylesheets/posts.css
178
177
  - spec/dummy/app/assets/stylesheets/scaffold.css
179
178
  - spec/dummy/app/controllers/application_controller.rb
180
179
  - spec/dummy/app/controllers/posts_controller.rb
180
+ - spec/dummy/app/controllers/users_controller.rb
181
181
  - spec/dummy/app/helpers/application_helper.rb
182
182
  - spec/dummy/app/helpers/posts_helper.rb
183
183
  - spec/dummy/app/models/post.rb
184
+ - spec/dummy/app/models/user.rb
184
185
  - spec/dummy/app/views/layouts/application.html.erb
185
186
  - spec/dummy/app/views/posts/_form.html.erb
186
187
  - spec/dummy/app/views/posts/edit.html.erb
187
188
  - spec/dummy/app/views/posts/index.html.erb
188
189
  - spec/dummy/app/views/posts/new.html.erb
189
190
  - spec/dummy/app/views/posts/show.html.erb
191
+ - spec/dummy/app/views/users/_form.html.erb
192
+ - spec/dummy/app/views/users/edit.html.erb
193
+ - spec/dummy/app/views/users/index.html.erb
194
+ - spec/dummy/app/views/users/new.html.erb
195
+ - spec/dummy/app/views/users/show.html.erb
190
196
  - spec/dummy/bin/bundle
191
197
  - spec/dummy/bin/rails
192
198
  - spec/dummy/bin/rake
@@ -209,6 +215,9 @@ files:
209
215
  - spec/dummy/config/routes.rb
210
216
  - spec/dummy/db/development.sqlite3
211
217
  - spec/dummy/db/migrate/20140210065920_create_posts.rb
218
+ - spec/dummy/db/migrate/20140211200846_create_users.rb
219
+ - spec/dummy/db/migrate/20140212170448_add_order_to_posts.rb
220
+ - spec/dummy/db/migrate/20140212173012_add_user_id_to_posts.rb
212
221
  - spec/dummy/db/schema.rb
213
222
  - spec/dummy/db/test.sqlite3
214
223
  - spec/dummy/log/development.log
@@ -217,6 +226,10 @@ files:
217
226
  - spec/dummy/public/422.html
218
227
  - spec/dummy/public/500.html
219
228
  - spec/dummy/public/favicon.ico
229
+ - spec/dummy/spec/factories/posts.rb
230
+ - spec/dummy/spec/factories/users.rb
231
+ - spec/dummy/spec/models/post_spec.rb
232
+ - spec/dummy/spec/models/user_spec.rb
220
233
  - spec/dummy/tmp/cache/assets/development/sprockets/04f730b2979d2f24cffafefd80e430f0
221
234
  - spec/dummy/tmp/cache/assets/development/sprockets/0f11e0b3e0ece93d6c047318f2e5497d
222
235
  - spec/dummy/tmp/cache/assets/development/sprockets/0f53e3491015320ad54b7352dd6e9245
@@ -226,21 +239,31 @@ files:
226
239
  - spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705
227
240
  - spec/dummy/tmp/cache/assets/development/sprockets/1e8f75a6b5b33970fb8e397347caa0a1
228
241
  - spec/dummy/tmp/cache/assets/development/sprockets/24204f742af588c8166d3160b500d20f
242
+ - spec/dummy/tmp/cache/assets/development/sprockets/254f7fcb30f60607963da8bbb320eb25
243
+ - spec/dummy/tmp/cache/assets/development/sprockets/256916ba749d0c14e36b55d4b382e9f5
229
244
  - spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af
230
245
  - spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953
231
246
  - spec/dummy/tmp/cache/assets/development/sprockets/371bf96e99717688ed7313a0c53f4212
247
+ - spec/dummy/tmp/cache/assets/development/sprockets/38ec44893aed52b20a20a929a47e0ad9
232
248
  - spec/dummy/tmp/cache/assets/development/sprockets/416150dc3ac35079c94273cc46e90aa6
233
249
  - spec/dummy/tmp/cache/assets/development/sprockets/43b02dba04222f7470018fdda830925e
234
250
  - spec/dummy/tmp/cache/assets/development/sprockets/467cb2a85cb807b3c28bacd8f6147dfc
251
+ - spec/dummy/tmp/cache/assets/development/sprockets/4a4d6fda449d6b443e5b29ccb755c732
235
252
  - spec/dummy/tmp/cache/assets/development/sprockets/510da110ae528e2d22533be39ff696c5
253
+ - spec/dummy/tmp/cache/assets/development/sprockets/513dd40b9b52367f54d64438a9d802b9
236
254
  - spec/dummy/tmp/cache/assets/development/sprockets/5384ad85f52d3272dbc64d46ef3876a4
237
255
  - spec/dummy/tmp/cache/assets/development/sprockets/56146675dbad13c72d3eb9ebd823dc11
238
256
  - spec/dummy/tmp/cache/assets/development/sprockets/5957a00e12da95bda275e8c3565a0316
239
257
  - spec/dummy/tmp/cache/assets/development/sprockets/62d3fdf824fa141115db660a17ab94bc
240
258
  - spec/dummy/tmp/cache/assets/development/sprockets/6fc757c2c8329244ca95d6909865bbc2
241
259
  - spec/dummy/tmp/cache/assets/development/sprockets/76cec3171960b0a527249d215835fade
260
+ - spec/dummy/tmp/cache/assets/development/sprockets/7aaf7da4e6ec4c84cc7948fb20c35064
242
261
  - spec/dummy/tmp/cache/assets/development/sprockets/87283d82c809770d9da81fe4e72a2abe
243
262
  - spec/dummy/tmp/cache/assets/development/sprockets/97892dcc76bfd97e09ab26d3f7a6d522
263
+ - spec/dummy/tmp/cache/assets/development/sprockets/ba165ee56ce37f61865fe03d6503539b
264
+ - spec/dummy/tmp/cache/assets/development/sprockets/bfaeb96080cc4d8ba400fbdcd1d4aab2
265
+ - spec/dummy/tmp/cache/assets/development/sprockets/c4f1b332263aa5004a8ac54ca9530510
266
+ - spec/dummy/tmp/cache/assets/development/sprockets/c63406c52c03bbb24922ded6ebb0e0a2
244
267
  - spec/dummy/tmp/cache/assets/development/sprockets/c71eea08c37d8da406449ab45486b070
245
268
  - spec/dummy/tmp/cache/assets/development/sprockets/c85016e7bbd4f3adbb7635d01f85d39b
246
269
  - spec/dummy/tmp/cache/assets/development/sprockets/cbc66bd36b3aa4411f9ce20da0fd37a0
@@ -249,21 +272,53 @@ files:
249
272
  - spec/dummy/tmp/cache/assets/development/sprockets/d066c004d1fd26ae76a61303a7a18145
250
273
  - spec/dummy/tmp/cache/assets/development/sprockets/d5a2d5bfe451248efe5aa31d1c94575c
251
274
  - spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6
275
+ - spec/dummy/tmp/cache/assets/development/sprockets/d7874cf8a5946ec3899e5bb627905ca5
276
+ - spec/dummy/tmp/cache/assets/development/sprockets/e1d4998592ddfea795aca82d742d9478
252
277
  - spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655
278
+ - spec/dummy/tmp/cache/assets/test/sprockets/0f11e0b3e0ece93d6c047318f2e5497d
279
+ - spec/dummy/tmp/cache/assets/test/sprockets/10c6f05e183df4466be1e0171868fbd3
280
+ - spec/dummy/tmp/cache/assets/test/sprockets/122e92d06837af295d6c941999a8d48f
253
281
  - spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
282
+ - spec/dummy/tmp/cache/assets/test/sprockets/254f7fcb30f60607963da8bbb320eb25
283
+ - spec/dummy/tmp/cache/assets/test/sprockets/256916ba749d0c14e36b55d4b382e9f5
254
284
  - spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
255
285
  - spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
256
286
  - spec/dummy/tmp/cache/assets/test/sprockets/371bf96e99717688ed7313a0c53f4212
257
287
  - spec/dummy/tmp/cache/assets/test/sprockets/416150dc3ac35079c94273cc46e90aa6
288
+ - spec/dummy/tmp/cache/assets/test/sprockets/4a4d6fda449d6b443e5b29ccb755c732
258
289
  - spec/dummy/tmp/cache/assets/test/sprockets/5384ad85f52d3272dbc64d46ef3876a4
290
+ - spec/dummy/tmp/cache/assets/test/sprockets/56146675dbad13c72d3eb9ebd823dc11
259
291
  - spec/dummy/tmp/cache/assets/test/sprockets/6fc757c2c8329244ca95d6909865bbc2
292
+ - spec/dummy/tmp/cache/assets/test/sprockets/bfaeb96080cc4d8ba400fbdcd1d4aab2
293
+ - spec/dummy/tmp/cache/assets/test/sprockets/c4f1b332263aa5004a8ac54ca9530510
260
294
  - spec/dummy/tmp/cache/assets/test/sprockets/c85016e7bbd4f3adbb7635d01f85d39b
261
295
  - spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
262
296
  - spec/dummy/tmp/cache/assets/test/sprockets/d066c004d1fd26ae76a61303a7a18145
263
297
  - spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
298
+ - spec/dummy/tmp/cache/assets/test/sprockets/d7874cf8a5946ec3899e5bb627905ca5
299
+ - spec/dummy/tmp/cache/assets/test/sprockets/e1d4998592ddfea795aca82d742d9478
264
300
  - spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
265
- - spec/features/form_validation_spec.rb
266
- - spec/helpers/form_helper_spec.rb
301
+ - spec/dummy/tmp/capybara/capybara-201402111733312899331645.html
302
+ - spec/dummy/tmp/capybara/capybara-201402111742049902988712.html
303
+ - spec/dummy/tmp/capybara/capybara-201402111743461497527818.html
304
+ - spec/dummy/tmp/capybara/capybara-201402121034216891460553.html
305
+ - spec/dummy/tmp/capybara/capybara-201402121100145511229652.html
306
+ - spec/dummy/tmp/capybara/capybara-20140212110749239625833.html
307
+ - spec/dummy/tmp/capybara/capybara-201402121110009350488348.html
308
+ - spec/dummy/tmp/capybara/capybara-201402121242315707153414.html
309
+ - spec/dummy/tmp/capybara/capybara-2014021212463939561980.html
310
+ - spec/dummy/tmp/capybara/capybara-201402121308362867044001.html
311
+ - spec/dummy/tmp/capybara/capybara-201402121309286432044699.html
312
+ - spec/dummy/tmp/capybara/capybara-201402121506235794052148.html
313
+ - spec/dummy/tmp/capybara/capybara-201402121507316558835315.html
314
+ - spec/dummy/tmp/capybara/capybara-201402121512202956445364.html
315
+ - spec/dummy/tmp/capybara/capybara-201402121517176338336364.html
316
+ - spec/dummy/tmp/capybara/capybara-201402121518121290133083.html
317
+ - spec/dummy/tmp/pids/server.pid
318
+ - spec/features/form_interactions_spec.rb
319
+ - spec/features/generate_validations_spec.rb
320
+ - spec/helpers/validation_sync_form_helper_spec.rb
321
+ - spec/lib/validation_builder_spec.rb
267
322
  - spec/spec_helper.rb
268
323
  homepage: ''
269
324
  licenses: []
@@ -290,21 +345,26 @@ specification_version: 4
290
345
  summary: Reuse your Rails model validations on the client-side.
291
346
  test_files:
292
347
  - spec/dummy/app/assets/javascripts/application.js
293
- - spec/dummy/app/assets/javascripts/posts.js
294
348
  - spec/dummy/app/assets/stylesheets/application.css
295
- - spec/dummy/app/assets/stylesheets/posts.css
296
349
  - spec/dummy/app/assets/stylesheets/scaffold.css
297
350
  - spec/dummy/app/controllers/application_controller.rb
298
351
  - spec/dummy/app/controllers/posts_controller.rb
352
+ - spec/dummy/app/controllers/users_controller.rb
299
353
  - spec/dummy/app/helpers/application_helper.rb
300
354
  - spec/dummy/app/helpers/posts_helper.rb
301
355
  - spec/dummy/app/models/post.rb
356
+ - spec/dummy/app/models/user.rb
302
357
  - spec/dummy/app/views/layouts/application.html.erb
303
358
  - spec/dummy/app/views/posts/_form.html.erb
304
359
  - spec/dummy/app/views/posts/edit.html.erb
305
360
  - spec/dummy/app/views/posts/index.html.erb
306
361
  - spec/dummy/app/views/posts/new.html.erb
307
362
  - spec/dummy/app/views/posts/show.html.erb
363
+ - spec/dummy/app/views/users/_form.html.erb
364
+ - spec/dummy/app/views/users/edit.html.erb
365
+ - spec/dummy/app/views/users/index.html.erb
366
+ - spec/dummy/app/views/users/new.html.erb
367
+ - spec/dummy/app/views/users/show.html.erb
308
368
  - spec/dummy/bin/bundle
309
369
  - spec/dummy/bin/rails
310
370
  - spec/dummy/bin/rake
@@ -327,6 +387,9 @@ test_files:
327
387
  - spec/dummy/config.ru
328
388
  - spec/dummy/db/development.sqlite3
329
389
  - spec/dummy/db/migrate/20140210065920_create_posts.rb
390
+ - spec/dummy/db/migrate/20140211200846_create_users.rb
391
+ - spec/dummy/db/migrate/20140212170448_add_order_to_posts.rb
392
+ - spec/dummy/db/migrate/20140212173012_add_user_id_to_posts.rb
330
393
  - spec/dummy/db/schema.rb
331
394
  - spec/dummy/db/test.sqlite3
332
395
  - spec/dummy/log/development.log
@@ -337,6 +400,10 @@ test_files:
337
400
  - spec/dummy/public/favicon.ico
338
401
  - spec/dummy/Rakefile
339
402
  - spec/dummy/README.rdoc
403
+ - spec/dummy/spec/factories/posts.rb
404
+ - spec/dummy/spec/factories/users.rb
405
+ - spec/dummy/spec/models/post_spec.rb
406
+ - spec/dummy/spec/models/user_spec.rb
340
407
  - spec/dummy/tmp/cache/assets/development/sprockets/04f730b2979d2f24cffafefd80e430f0
341
408
  - spec/dummy/tmp/cache/assets/development/sprockets/0f11e0b3e0ece93d6c047318f2e5497d
342
409
  - spec/dummy/tmp/cache/assets/development/sprockets/0f53e3491015320ad54b7352dd6e9245
@@ -346,21 +413,31 @@ test_files:
346
413
  - spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705
347
414
  - spec/dummy/tmp/cache/assets/development/sprockets/1e8f75a6b5b33970fb8e397347caa0a1
348
415
  - spec/dummy/tmp/cache/assets/development/sprockets/24204f742af588c8166d3160b500d20f
416
+ - spec/dummy/tmp/cache/assets/development/sprockets/254f7fcb30f60607963da8bbb320eb25
417
+ - spec/dummy/tmp/cache/assets/development/sprockets/256916ba749d0c14e36b55d4b382e9f5
349
418
  - spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af
350
419
  - spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953
351
420
  - spec/dummy/tmp/cache/assets/development/sprockets/371bf96e99717688ed7313a0c53f4212
421
+ - spec/dummy/tmp/cache/assets/development/sprockets/38ec44893aed52b20a20a929a47e0ad9
352
422
  - spec/dummy/tmp/cache/assets/development/sprockets/416150dc3ac35079c94273cc46e90aa6
353
423
  - spec/dummy/tmp/cache/assets/development/sprockets/43b02dba04222f7470018fdda830925e
354
424
  - spec/dummy/tmp/cache/assets/development/sprockets/467cb2a85cb807b3c28bacd8f6147dfc
425
+ - spec/dummy/tmp/cache/assets/development/sprockets/4a4d6fda449d6b443e5b29ccb755c732
355
426
  - spec/dummy/tmp/cache/assets/development/sprockets/510da110ae528e2d22533be39ff696c5
427
+ - spec/dummy/tmp/cache/assets/development/sprockets/513dd40b9b52367f54d64438a9d802b9
356
428
  - spec/dummy/tmp/cache/assets/development/sprockets/5384ad85f52d3272dbc64d46ef3876a4
357
429
  - spec/dummy/tmp/cache/assets/development/sprockets/56146675dbad13c72d3eb9ebd823dc11
358
430
  - spec/dummy/tmp/cache/assets/development/sprockets/5957a00e12da95bda275e8c3565a0316
359
431
  - spec/dummy/tmp/cache/assets/development/sprockets/62d3fdf824fa141115db660a17ab94bc
360
432
  - spec/dummy/tmp/cache/assets/development/sprockets/6fc757c2c8329244ca95d6909865bbc2
361
433
  - spec/dummy/tmp/cache/assets/development/sprockets/76cec3171960b0a527249d215835fade
434
+ - spec/dummy/tmp/cache/assets/development/sprockets/7aaf7da4e6ec4c84cc7948fb20c35064
362
435
  - spec/dummy/tmp/cache/assets/development/sprockets/87283d82c809770d9da81fe4e72a2abe
363
436
  - spec/dummy/tmp/cache/assets/development/sprockets/97892dcc76bfd97e09ab26d3f7a6d522
437
+ - spec/dummy/tmp/cache/assets/development/sprockets/ba165ee56ce37f61865fe03d6503539b
438
+ - spec/dummy/tmp/cache/assets/development/sprockets/bfaeb96080cc4d8ba400fbdcd1d4aab2
439
+ - spec/dummy/tmp/cache/assets/development/sprockets/c4f1b332263aa5004a8ac54ca9530510
440
+ - spec/dummy/tmp/cache/assets/development/sprockets/c63406c52c03bbb24922ded6ebb0e0a2
364
441
  - spec/dummy/tmp/cache/assets/development/sprockets/c71eea08c37d8da406449ab45486b070
365
442
  - spec/dummy/tmp/cache/assets/development/sprockets/c85016e7bbd4f3adbb7635d01f85d39b
366
443
  - spec/dummy/tmp/cache/assets/development/sprockets/cbc66bd36b3aa4411f9ce20da0fd37a0
@@ -369,19 +446,51 @@ test_files:
369
446
  - spec/dummy/tmp/cache/assets/development/sprockets/d066c004d1fd26ae76a61303a7a18145
370
447
  - spec/dummy/tmp/cache/assets/development/sprockets/d5a2d5bfe451248efe5aa31d1c94575c
371
448
  - spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6
449
+ - spec/dummy/tmp/cache/assets/development/sprockets/d7874cf8a5946ec3899e5bb627905ca5
450
+ - spec/dummy/tmp/cache/assets/development/sprockets/e1d4998592ddfea795aca82d742d9478
372
451
  - spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655
452
+ - spec/dummy/tmp/cache/assets/test/sprockets/0f11e0b3e0ece93d6c047318f2e5497d
453
+ - spec/dummy/tmp/cache/assets/test/sprockets/10c6f05e183df4466be1e0171868fbd3
454
+ - spec/dummy/tmp/cache/assets/test/sprockets/122e92d06837af295d6c941999a8d48f
373
455
  - spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
456
+ - spec/dummy/tmp/cache/assets/test/sprockets/254f7fcb30f60607963da8bbb320eb25
457
+ - spec/dummy/tmp/cache/assets/test/sprockets/256916ba749d0c14e36b55d4b382e9f5
374
458
  - spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
375
459
  - spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
376
460
  - spec/dummy/tmp/cache/assets/test/sprockets/371bf96e99717688ed7313a0c53f4212
377
461
  - spec/dummy/tmp/cache/assets/test/sprockets/416150dc3ac35079c94273cc46e90aa6
462
+ - spec/dummy/tmp/cache/assets/test/sprockets/4a4d6fda449d6b443e5b29ccb755c732
378
463
  - spec/dummy/tmp/cache/assets/test/sprockets/5384ad85f52d3272dbc64d46ef3876a4
464
+ - spec/dummy/tmp/cache/assets/test/sprockets/56146675dbad13c72d3eb9ebd823dc11
379
465
  - spec/dummy/tmp/cache/assets/test/sprockets/6fc757c2c8329244ca95d6909865bbc2
466
+ - spec/dummy/tmp/cache/assets/test/sprockets/bfaeb96080cc4d8ba400fbdcd1d4aab2
467
+ - spec/dummy/tmp/cache/assets/test/sprockets/c4f1b332263aa5004a8ac54ca9530510
380
468
  - spec/dummy/tmp/cache/assets/test/sprockets/c85016e7bbd4f3adbb7635d01f85d39b
381
469
  - spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
382
470
  - spec/dummy/tmp/cache/assets/test/sprockets/d066c004d1fd26ae76a61303a7a18145
383
471
  - spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
472
+ - spec/dummy/tmp/cache/assets/test/sprockets/d7874cf8a5946ec3899e5bb627905ca5
473
+ - spec/dummy/tmp/cache/assets/test/sprockets/e1d4998592ddfea795aca82d742d9478
384
474
  - spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
385
- - spec/features/form_validation_spec.rb
386
- - spec/helpers/form_helper_spec.rb
475
+ - spec/dummy/tmp/capybara/capybara-201402111733312899331645.html
476
+ - spec/dummy/tmp/capybara/capybara-201402111742049902988712.html
477
+ - spec/dummy/tmp/capybara/capybara-201402111743461497527818.html
478
+ - spec/dummy/tmp/capybara/capybara-201402121034216891460553.html
479
+ - spec/dummy/tmp/capybara/capybara-201402121100145511229652.html
480
+ - spec/dummy/tmp/capybara/capybara-20140212110749239625833.html
481
+ - spec/dummy/tmp/capybara/capybara-201402121110009350488348.html
482
+ - spec/dummy/tmp/capybara/capybara-201402121242315707153414.html
483
+ - spec/dummy/tmp/capybara/capybara-2014021212463939561980.html
484
+ - spec/dummy/tmp/capybara/capybara-201402121308362867044001.html
485
+ - spec/dummy/tmp/capybara/capybara-201402121309286432044699.html
486
+ - spec/dummy/tmp/capybara/capybara-201402121506235794052148.html
487
+ - spec/dummy/tmp/capybara/capybara-201402121507316558835315.html
488
+ - spec/dummy/tmp/capybara/capybara-201402121512202956445364.html
489
+ - spec/dummy/tmp/capybara/capybara-201402121517176338336364.html
490
+ - spec/dummy/tmp/capybara/capybara-201402121518121290133083.html
491
+ - spec/dummy/tmp/pids/server.pid
492
+ - spec/features/form_interactions_spec.rb
493
+ - spec/features/generate_validations_spec.rb
494
+ - spec/helpers/validation_sync_form_helper_spec.rb
495
+ - spec/lib/validation_builder_spec.rb
387
496
  - spec/spec_helper.rb
@@ -1,51 +0,0 @@
1
- # bring in ValidationSyncFormHelper module
2
- <% environment.context_class.instance_eval { include ValidationSyncFormHelper } %>
3
-
4
- ValidationSync =
5
-
6
- init: ->
7
- <% find_all_models.each do |model| %>
8
- # validate if a relevant form is present
9
- ValidationSync.validate<%= model[:name].camelize %>() if $(".new_<%= model[:name] %>[data-sync-validations='true'], .edit_<%= model[:name] %>[data-sync-validations='true']").length
10
- <% end %>
11
-
12
-
13
-
14
- # build a validateModel() method for each ActiveRecord model
15
- <% find_all_models.each do |model| %>
16
-
17
- validate<%= model[:name].camelize %>: ->
18
-
19
- # trigger validation
20
- $(".new_<%= model[:name] %>[data-sync-validations='true'], .edit_<%= model[:name] %>[data-sync-validations='true']").validate
21
-
22
- # what attributes should we validate?
23
- rules:
24
-
25
- <% model[:attributes].each do |attr| %>
26
- "<%= model[:name] %>[<%= attr %>]":
27
- required: <%= check_model_validation(model[:name], attr, ActiveRecord::Validations::PresenceValidator) %>
28
- number: <%= check_model_validation(model[:name], attr, ActiveModel::Validations::NumericalityValidator) %>
29
- minlength: '<%= get_validation_attr(model[:name], attr, ActiveModel::Validations::LengthValidator, :minimum) %>'
30
-
31
- <% unless get_validation_attr(model[:name], attr, ActiveModel::Validations::LengthValidator, :maximum).nil? %>
32
- maxlength: '<%= get_validation_attr(model[:name], attr, ActiveModel::Validations::LengthValidator, :maximum) %>'
33
- <% end %>
34
- <% end %>
35
-
36
-
37
- # what error messages should show?
38
- messages:
39
-
40
- <% model[:attributes].each do |attr| %>
41
- "<%= model[:name] %>[<%= attr %>]":
42
- required: "<%= get_validation_message(model[:name], attr, ActiveRecord::Validations::PresenceValidator) %>"
43
- number: "<%= get_validation_message(model[:name], attr, ActiveModel::Validations::NumericalityValidator) %>"
44
- <% end %>
45
-
46
- <% end # find_all_models.each %>
47
-
48
-
49
-
50
- # Fire init() on ready (page:load for turbolinks)
51
- $(document).on('ready page:load', ValidationSync.init)
@@ -1,2 +0,0 @@
1
- // Place all the behaviors and hooks related to the matching controller here.
2
- // All this logic will automatically be available in application.js.
@@ -1,4 +0,0 @@
1
- /*
2
- Place all the styles related to the matching controller here.
3
- They will automatically be included in application.css.
4
- */
@@ -1,53 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Adding validation classes to form inputs" do
4
-
5
- # Required
6
-
7
- it "adds the 'required' class when an attribute is required" do
8
- # are we validating the model correctly?
9
- expect(Post.validators_on(:title).map(&:class)).to include ActiveRecord::Validations::PresenceValidator
10
-
11
- # are we adding the 'required' class?
12
- visit new_post_path
13
- within("#new_post") do
14
- expect(page).to have_css('input#post_title.required')
15
- end
16
- end
17
-
18
- it "doesn't add the 'required' class when an attribute is not required" do
19
- expect(Post.validators_on(:author_email).map(&:class)).not_to include ActiveRecord::Validations::PresenceValidator
20
-
21
- # are we adding the 'required' class?
22
- visit new_post_path
23
- within("#new_post") do
24
- expect(page).not_to have_css('input#post_author_email.required')
25
- end
26
- end
27
-
28
-
29
- # Numericality
30
-
31
- it "adds the 'number' class when a number is required" do
32
- # are we validating the model correctly?
33
- expect(Post.validators_on(:view_count).map(&:class)).to include ActiveModel::Validations::NumericalityValidator
34
-
35
- # are we adding the 'number' class?
36
- visit new_post_path
37
- within("#new_post") do
38
- expect(page).to have_css('input#post_view_count.number')
39
- end
40
- end
41
-
42
- it "doesn't add the 'number' class when a number is not required" do
43
- # are we validating the model correctly?
44
- expect(Post.validators_on(:author_email).map(&:class)).not_to include ActiveModel::Validations::NumericalityValidator
45
-
46
- # are we adding the 'number' class?
47
- visit new_post_path
48
- within("#new_post") do
49
- expect(page).not_to have_css('input#post_author_email.number')
50
- end
51
- end
52
-
53
- end
@@ -1,4 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe FormHelper do
4
- end