cocoon 1.2.6 → 1.2.7

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -3,7 +3,7 @@ script: "bundle exec rake"
3
3
  rvm:
4
4
  - 1.9.3
5
5
  - 2.0.0
6
- - rbx-2.2.1
6
+ - rbx-2
7
7
  gemfile:
8
8
  - gemfiles/Gemfile.rails-3.2.13
9
9
  - Gemfile
data/Gemfile CHANGED
@@ -3,11 +3,11 @@ source "http://rubygems.org"
3
3
 
4
4
  group :development, :test do
5
5
  gem "rails", ">=4.0.0"
6
- gem "sqlite3"
6
+ gem "sqlite3", "1.3.8"
7
7
  gem "json_pure"
8
8
  gem "jeweler"
9
- gem "rspec-rails", ">= 2.8.0"
10
- gem "rspec", ">= 2.8.0"
9
+ gem "rspec-rails", "~> 3.0.0"
10
+ gem "rspec", "~> 3.0.0"
11
11
  gem "actionpack", ">=4.0.0"
12
12
  gem "simplecov", :require => false
13
13
 
data/README.markdown CHANGED
@@ -68,7 +68,7 @@ Your models are associated like this:
68
68
  ```ruby
69
69
  class Project < ActiveRecord::Base
70
70
  has_many :tasks
71
- accepts_nested_attributes_for :tasks, :reject_if => :all_blank, :allow_destroy => true
71
+ accepts_nested_attributes_for :tasks, reject_if: :all_blank, allow_destroy: true
72
72
  end
73
73
 
74
74
  class Task < ActiveRecord::Base
@@ -83,10 +83,10 @@ named `_task_fields.html`.
83
83
  ### Strong Parameters Gotcha
84
84
 
85
85
  To destroy nested models, rails uses a virtual attribute called `_destroy`.
86
- When `_destroy` is set, the nested model will be deleted.
86
+ When `_destroy` is set, the nested model will be deleted. If the record is persisted, rails performs `id` field lookup to destroy the real record, so if `id` wasn't specified, it will treat current set of parameters like a parameters for a new record.
87
87
 
88
88
  When using strong parameters (default in rails 4), you need to explicitly
89
- add `:_destroy` to the list of permitted parameters.
89
+ add both `:id` and `:_destroy` to the list of permitted parameters.
90
90
 
91
91
  E.g. in your `ProjectsController`:
92
92
 
@@ -98,7 +98,7 @@ E.g. in your `ProjectsController`:
98
98
 
99
99
  ## Examples
100
100
 
101
- Cocoon's default configuration requires `link_to_add_association` and associated partials to
101
+ Cocoon's default configuration requires `link_to_add_association` and associated partials to
102
102
  be properly wrapped with elements. The examples below illustrate simple layouts.
103
103
 
104
104
  Please note these examples rely on the `haml` gem (instead of the default `erb` views).
@@ -115,7 +115,7 @@ In our `projects/_form` partial we'd write:
115
115
  %h3 Tasks
116
116
  #tasks
117
117
  = f.semantic_fields_for :tasks do |task|
118
- = render 'task_fields', :f => task
118
+ = render 'task_fields', f: task
119
119
  .links
120
120
  = link_to_add_association 'add task', f, :tasks
121
121
  = f.actions do
@@ -128,7 +128,7 @@ And in our `_task_fields` partial we'd write:
128
128
  .nested-fields
129
129
  = f.inputs do
130
130
  = f.input :description
131
- = f.input :done, :as => :boolean
131
+ = f.input :done, as: :boolean
132
132
  = link_to_remove_association "remove task", f
133
133
  ```
134
134
 
@@ -145,7 +145,7 @@ In our `projects/_form` partial we'd write:
145
145
  %h3 Tasks
146
146
  #tasks
147
147
  = f.simple_fields_for :tasks do |task|
148
- = render 'task_fields', :f => task
148
+ = render 'task_fields', f: task
149
149
  .links
150
150
  = link_to_add_association 'add task', f, :tasks
151
151
  = f.submit
@@ -156,7 +156,7 @@ In our `_task_fields` partial we write:
156
156
  ```haml
157
157
  .nested-fields
158
158
  = f.input :description
159
- = f.input :done, :as => :boolean
159
+ = f.input :done, as: :boolean
160
160
  = link_to_remove_association "remove task", f
161
161
  ```
162
162
 
@@ -179,7 +179,7 @@ In our `projects/_form` partial we'd write:
179
179
  %h3 Tasks
180
180
  #tasks
181
181
  = f.fields_for :tasks do |task|
182
- = render 'task_fields', :f => task
182
+ = render 'task_fields', f: task
183
183
  .links
184
184
  = link_to_add_association 'add task', f, :tasks
185
185
  = f.submit
@@ -216,7 +216,7 @@ This should be called within the form builder.
216
216
  - html_options: extra html-options (see [`link_to`](http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to)
217
217
  There are some special options, the first three allow to control the placement of the new link-data:
218
218
  - `data-association-insertion-traversal` : the jquery traversal method to allow node selection relative to the link. `closest`, `next`, `children`, etc. Default: absolute selection
219
- - `data-association-insertion-node` : the jquery selector of the node
219
+ - `data-association-insertion-node` : the jquery selector of the node. Default: parent node
220
220
  - `data-association-insertion-method` : jquery method that inserts the new data. `before`, `after`, `append`, `prepend`, etc. Default: `before`
221
221
  - `data-association-insertion-position` : old method specifying where to insert new data.
222
222
  - this setting still works but `data-association-insertion-method` takes precedence. may be removed in a future version.
@@ -233,21 +233,21 @@ Optionally, you can omit the name and supply a block that is captured to render
233
233
  Inside the `html_options` you can add an option `:render_options`, and the containing hash will be handed down to the form builder for the inserted
234
234
  form.
235
235
 
236
- When using Twitter Bootstrap and SimpleForm together, `simple_fields_for` needs the option `:wrapper => 'inline'` which can
236
+ When using Twitter Bootstrap and SimpleForm together, `simple_fields_for` needs the option `wrapper: 'inline'` which can
237
237
  be handed down as follows:
238
238
 
239
- (Note: In certain newer versions of simple_form, the option to use is `:wrapper => 'bootstrap'`.)
239
+ (Note: In certain newer versions of simple_form, the option to use is `wrapper: 'bootstrap'`.)
240
240
 
241
241
  ```haml
242
242
  = link_to_add_association 'add something', f, :something,
243
- :render_options => {:wrapper => 'inline' }
243
+ render_options: { wrapper: 'inline' }
244
244
  ```
245
245
 
246
246
  To specify locals that needed to handed down to the partial:
247
247
 
248
248
  ```haml
249
249
  = link_to_add_association 'add something', f, :something,
250
- :render_options => {:locals => {:sherlock => 'Holmes' }}
250
+ render_options: {locals: { sherlock: 'Holmes' }}
251
251
  ```
252
252
 
253
253
  #### :partial
@@ -256,7 +256,7 @@ To override the default partial name, e.g. because it shared between multiple vi
256
256
 
257
257
  ```haml
258
258
  = link_to_add_association 'add something', f, :something,
259
- :partial => 'shared/something_fields'
259
+ partial: 'shared/something_fields'
260
260
  ```
261
261
 
262
262
  #### :wrap_object
@@ -289,7 +289,7 @@ To use this:
289
289
 
290
290
  ```haml
291
291
  = link_to_add_association('add something', @form_obj, :comments,
292
- :wrap_object => Proc.new {|comment| CommentDecorator.new(comment) })
292
+ wrap_object: Proc.new {|comment| CommentDecorator.new(comment) })
293
293
  ```
294
294
 
295
295
  Note that the `:wrap_object` expects an object that is _callable_, so any `Proc` will do. So you could as well use it to do some fancy extra initialisation (if needed).
@@ -298,8 +298,8 @@ E.g.
298
298
 
299
299
 
300
300
  ```haml
301
- = link_to_add_association('add something', @form_obj, :comments,
302
- :wrap_object => Proc.new { |comment| comment.name = current_user.name; comment })
301
+ = link_to_add_association('add something', @form_obj, :comments,
302
+ wrap_object: Proc.new { |comment| comment.name = current_user.name; comment })
303
303
  ```
304
304
 
305
305
  #### :force_non_association_create
@@ -317,7 +317,7 @@ Example use:
317
317
 
318
318
  ```haml
319
319
  = link_to_add_association('add something', @form_obj, :comments,
320
- :force_non_association_create => true)
320
+ force_non_association_create: true)
321
321
  ```
322
322
 
323
323
  By default `:force_non_association_create` is `false`.
@@ -335,9 +335,11 @@ It takes three parameters:
335
335
 
336
336
  Optionally you could also leave out the name and supply a block that is captured to give the name (if you want to do something more complicated).
337
337
 
338
- Optionally, you can add an html option called `wrapper_class` to use a different wrapper div instead of `.nested-class`.
338
+ Optionally, you can add an html option called `wrapper_class` to use a different wrapper div instead of `.nested-fields`.
339
339
  The class should be added without a preceding dot (`.`).
340
340
 
341
+ > Note: the javascript behind the generated link relies on the presence of a wrapper class (default `.nested-fields`) to function correctly.
342
+
341
343
  Example:
342
344
  ```haml
343
345
  = link_to_remove_association('remove this', @form_obj,
@@ -370,7 +372,7 @@ If in your view you have the following snippet to select an `owner`:
370
372
  ```haml
371
373
  #owner
372
374
  #owner_from_list
373
- = f.association :owner, :collection => Person.all(:order => 'name'), :prompt => 'Choose an existing owner'
375
+ = f.association :owner, collection: Person.all(order: 'name'), prompt: 'Choose an existing owner'
374
376
  = link_to_add_association 'add a new person as owner', f, :owner
375
377
  ```
376
378
 
@@ -465,8 +467,41 @@ For the JavaScript to behave correctly, the partial should start with a containe
465
467
 
466
468
  There is no limit to the amount of nesting, though.
467
469
 
470
+ ## I18n
471
+
472
+ As you seen in previous sections, the helper method `link_to_add_association` treats the first parameter as a name. Additionally, if it's skipped and the `form` object is passed as the first one, then **Cocoon** names it using **I18n**.
473
+
474
+ It allows to invoke helper methods like this:
475
+
476
+ ```haml
477
+ = link_to_add_association form_object, :tasks
478
+ = link_to_remove_association form_object
479
+ ```
480
+
481
+ instead of:
482
+
483
+ ```haml
484
+ = link_to_add_association "Add task", form_object, :tasks
485
+ = link_to_remove_association "remove task", form_object
486
+ ```
487
+
488
+ **Cocoon** uses the name of `association` as a translations scope key. If custom translations for association is not present it fallbacks to default name. Example of translations tree:
489
+
490
+ ```yaml
491
+ en:
492
+ cocoon:
493
+ defaults:
494
+ add: "Add record"
495
+ remove: "Remove record"
496
+ tasks:
497
+ add: "Add new task"
498
+ remove: "Remove old task"
499
+ ```
500
+
501
+ Note that `link_to_remove_association` does not require `association` name as an argument. In order to get correct translation key, **Cocoon** tableizes `class` name of the target object of form builder (`form_object.object` from previous example).
502
+
468
503
  ## Note on Patches/Pull Requests
469
-
504
+
470
505
  * Fork the project.
471
506
  * Make your feature addition or bug fix.
472
507
  * Add tests for it. This is important so I don't break it in a
@@ -492,6 +527,6 @@ Copyright (c) 2010 Nathan Van der Auwera. See LICENSE for details.
492
527
 
493
528
  ## Not Related To Apache Cocoon
494
529
 
495
- Please note that this project is not related to the Apache Cocoon web framework project.
530
+ Please note that this project is not related to the Apache Cocoon web framework project.
496
531
 
497
532
  [Apache Cocoon](http://cocoon.apache.org/), Cocoon, and Apache are either registered trademarks or trademarks of the [Apache Software Foundation](http://www.apache.org/) in the United States and/or other countries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.6
1
+ 1.2.7
data/cocoon.gemspec CHANGED
@@ -2,16 +2,14 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: cocoon 1.2.6 ruby lib
6
5
 
7
6
  Gem::Specification.new do |s|
8
7
  s.name = "cocoon"
9
- s.version = "1.2.6"
8
+ s.version = "1.2.7"
10
9
 
11
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
11
  s.authors = ["Nathan Van der Auwera"]
14
- s.date = "2014-03-18"
12
+ s.date = "2016-01-27"
15
13
  s.description = "Unobtrusive nested forms handling, using jQuery. Use this and discover cocoon-heaven."
16
14
  s.email = "nathan@dixis.com"
17
15
  s.extra_rdoc_files = [
@@ -75,24 +73,26 @@ Gem::Specification.new do |s|
75
73
  "spec/generators/install_generator_spec.rb",
76
74
  "spec/integration/navigation_spec.rb",
77
75
  "spec/spec_helper.rb",
76
+ "spec/support/i18n.rb",
78
77
  "spec/support/rails_version_helper.rb",
79
78
  "spec/support/shared_examples.rb"
80
79
  ]
81
80
  s.homepage = "http://github.com/nathanvda/cocoon"
82
81
  s.licenses = ["MIT"]
83
- s.rubygems_version = "2.2.1"
82
+ s.require_paths = ["lib"]
83
+ s.rubygems_version = "1.8.24"
84
84
  s.summary = "gem that enables easier nested forms with standard forms, formtastic and simple-form"
85
85
 
86
86
  if s.respond_to? :specification_version then
87
- s.specification_version = 4
87
+ s.specification_version = 3
88
88
 
89
89
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
90
90
  s.add_development_dependency(%q<rails>, [">= 4.0.0"])
91
- s.add_development_dependency(%q<sqlite3>, [">= 0"])
91
+ s.add_development_dependency(%q<sqlite3>, ["= 1.3.8"])
92
92
  s.add_development_dependency(%q<json_pure>, [">= 0"])
93
93
  s.add_development_dependency(%q<jeweler>, [">= 0"])
94
- s.add_development_dependency(%q<rspec-rails>, [">= 2.8.0"])
95
- s.add_development_dependency(%q<rspec>, [">= 2.8.0"])
94
+ s.add_development_dependency(%q<rspec-rails>, ["~> 3.0.0"])
95
+ s.add_development_dependency(%q<rspec>, ["~> 3.0.0"])
96
96
  s.add_development_dependency(%q<actionpack>, [">= 4.0.0"])
97
97
  s.add_development_dependency(%q<simplecov>, [">= 0"])
98
98
  s.add_development_dependency(%q<nokogiri>, [">= 0"])
@@ -104,11 +104,11 @@ Gem::Specification.new do |s|
104
104
  s.add_development_dependency(%q<rubinius-developer_tools>, [">= 0"])
105
105
  else
106
106
  s.add_dependency(%q<rails>, [">= 4.0.0"])
107
- s.add_dependency(%q<sqlite3>, [">= 0"])
107
+ s.add_dependency(%q<sqlite3>, ["= 1.3.8"])
108
108
  s.add_dependency(%q<json_pure>, [">= 0"])
109
109
  s.add_dependency(%q<jeweler>, [">= 0"])
110
- s.add_dependency(%q<rspec-rails>, [">= 2.8.0"])
111
- s.add_dependency(%q<rspec>, [">= 2.8.0"])
110
+ s.add_dependency(%q<rspec-rails>, ["~> 3.0.0"])
111
+ s.add_dependency(%q<rspec>, ["~> 3.0.0"])
112
112
  s.add_dependency(%q<actionpack>, [">= 4.0.0"])
113
113
  s.add_dependency(%q<simplecov>, [">= 0"])
114
114
  s.add_dependency(%q<nokogiri>, [">= 0"])
@@ -121,11 +121,11 @@ Gem::Specification.new do |s|
121
121
  end
122
122
  else
123
123
  s.add_dependency(%q<rails>, [">= 4.0.0"])
124
- s.add_dependency(%q<sqlite3>, [">= 0"])
124
+ s.add_dependency(%q<sqlite3>, ["= 1.3.8"])
125
125
  s.add_dependency(%q<json_pure>, [">= 0"])
126
126
  s.add_dependency(%q<jeweler>, [">= 0"])
127
- s.add_dependency(%q<rspec-rails>, [">= 2.8.0"])
128
- s.add_dependency(%q<rspec>, [">= 2.8.0"])
127
+ s.add_dependency(%q<rspec-rails>, ["~> 3.0.0"])
128
+ s.add_dependency(%q<rspec>, ["~> 3.0.0"])
129
129
  s.add_dependency(%q<actionpack>, [">= 4.0.0"])
130
130
  s.add_dependency(%q<simplecov>, [">= 0"])
131
131
  s.add_dependency(%q<nokogiri>, [">= 0"])
@@ -3,11 +3,11 @@ source "http://rubygems.org"
3
3
 
4
4
  group :development, :test do
5
5
  gem "rails", "~> 3.2.0"
6
- gem "sqlite3"
6
+ gem "sqlite3", "1.3.8"
7
7
  gem "json_pure"
8
8
  gem "jeweler"
9
- gem "rspec-rails", ">= 2.8.0"
10
- gem "rspec", ">= 2.8.0"
9
+ gem "rspec-rails", "~> 3.0.0"
10
+ gem "rspec", "~> 3.0.0"
11
11
  gem "actionpack", "~> 3.2.0"
12
12
  gem "simplecov", :require => false
13
13
 
@@ -15,14 +15,16 @@ module Cocoon
15
15
 
16
16
  def link_to_remove_association(*args, &block)
17
17
  if block_given?
18
- f = args.first
19
- html_options = args.second || {}
20
- name = capture(&block)
21
- link_to_remove_association(name, f, html_options)
18
+ link_to_remove_association(capture(&block), *args)
19
+ elsif args.first.respond_to?(:object)
20
+ form = args.first
21
+ association = form.object.class.to_s.tableize
22
+ name = I18n.translate("cocoon.#{association}.remove", default: I18n.translate('cocoon.defaults.remove'))
23
+
24
+ link_to_remove_association(name, *args)
22
25
  else
23
- name = args[0]
24
- f = args[1]
25
- html_options = args[2] || {}
26
+ name, f, html_options = *args
27
+ html_options ||= {}
26
28
 
27
29
  is_dynamic = f.object.new_record?
28
30
 
@@ -43,7 +45,8 @@ module Cocoon
43
45
  def render_association(association, f, new_object, form_name, render_options={}, custom_partial=nil)
44
46
  partial = get_partial_path(custom_partial, association)
45
47
  locals = render_options.delete(:locals) || {}
46
- method_name = f.respond_to?(:semantic_fields_for) ? :semantic_fields_for : (f.respond_to?(:simple_fields_for) ? :simple_fields_for : :fields_for)
48
+ ancestors = f.class.ancestors.map{|c| c.to_s}
49
+ method_name = ancestors.include?('SimpleForm::FormBuilder') ? :simple_fields_for : (ancestors.include?('Formtastic::FormBuilder') ? :semantic_fields_for : :fields_for)
47
50
  f.send(method_name, association, new_object, {:child_index => "new_#{association}"}.merge(render_options)) do |builder|
48
51
  partial_options = {form_name.to_sym => builder, :dynamic => true}.merge(locals)
49
52
  render(partial, partial_options)
@@ -67,15 +70,15 @@ module Cocoon
67
70
 
68
71
  def link_to_add_association(*args, &block)
69
72
  if block_given?
70
- f = args[0]
71
- association = args[1]
72
- html_options = args[2] || {}
73
- link_to_add_association(capture(&block), f, association, html_options)
73
+ link_to_add_association(capture(&block), *args)
74
+ elsif args.first.respond_to?(:object)
75
+ association = args.second
76
+ name = I18n.translate("cocoon.#{association}.add", default: I18n.translate('cocoon.defaults.add'))
77
+
78
+ link_to_add_association(name, *args)
74
79
  else
75
- name = args[0]
76
- f = args[1]
77
- association = args[2]
78
- html_options = args[3] || {}
80
+ name, f, association, html_options = *args
81
+ html_options ||= {}
79
82
 
80
83
  render_options = html_options.delete(:render_options)
81
84
  render_options ||= {}
data/spec/cocoon_spec.rb CHANGED
@@ -8,8 +8,8 @@ describe Cocoon do
8
8
 
9
9
  subject {TestClass.new}
10
10
 
11
- it { should respond_to(:link_to_add_association) }
12
- it { should respond_to(:link_to_remove_association) }
11
+ it { is_expected.to respond_to(:link_to_add_association) }
12
+ it { is_expected.to respond_to(:link_to_remove_association) }
13
13
 
14
14
  before(:each) do
15
15
  @tester = TestClass.new
@@ -20,7 +20,7 @@ describe Cocoon do
20
20
 
21
21
  context "link_to_add_association" do
22
22
  before(:each) do
23
- @tester.stub(:render_association).and_return('form<tag>')
23
+ allow(@tester).to receive(:render_association).and_return('form<tag>')
24
24
  end
25
25
 
26
26
  context "without a block" do
@@ -33,6 +33,28 @@ describe Cocoon do
33
33
  it_behaves_like "a correctly rendered add link", {}
34
34
  end
35
35
 
36
+ context 'and no name given' do
37
+ context 'custom translation exists' do
38
+ before do
39
+ I18n.backend.store_translations(:en, :cocoon => { :comments => { :add => 'Add comment' } })
40
+
41
+ @html = @tester.link_to_add_association(@form_obj, :comments)
42
+ end
43
+
44
+ it_behaves_like "a correctly rendered add link", { text: 'Add comment' }
45
+ end
46
+
47
+ context 'uses default translation' do
48
+ before do
49
+ I18n.backend.store_translations(:en, :cocoon => { :defaults => { :add => 'Add' } })
50
+
51
+ @html = @tester.link_to_add_association(@form_obj, :comments)
52
+ end
53
+
54
+ it_behaves_like "a correctly rendered add link", { text: 'Add' }
55
+ end
56
+ end
57
+
36
58
  context "and given html options to pass them to link_to" do
37
59
  before do
38
60
  @html = @tester.link_to_add_association('add something', @form_obj, :comments, {:class => 'something silly'})
@@ -43,8 +65,8 @@ describe Cocoon do
43
65
 
44
66
  context "and explicitly specifying the wanted partial" do
45
67
  before do
46
- @tester.unstub(:render_association)
47
- @tester.should_receive(:render_association).with(anything(), anything(), anything(), "f", anything(), "shared/partial").and_return('partiallll')
68
+ allow(@tester).to receive(:render_association).and_call_original
69
+ expect(@tester).to receive(:render_association).with(anything(), anything(), anything(), "f", anything(), "shared/partial").and_return('partiallll')
48
70
  @html = @tester.link_to_add_association('add something', @form_obj, :comments, :partial => "shared/partial")
49
71
  end
50
72
 
@@ -52,15 +74,15 @@ describe Cocoon do
52
74
  end
53
75
 
54
76
  it "gives an opportunity to wrap/decorate created objects" do
55
- @tester.unstub(:render_association)
56
- @tester.should_receive(:render_association).with(anything(), anything(), kind_of(CommentDecorator), "f", anything(), anything()).and_return('partiallll')
77
+ allow(@tester).to receive(:render_association).and_call_original
78
+ expect(@tester).to receive(:render_association).with(anything(), anything(), kind_of(CommentDecorator), "f", anything(), anything()).and_return('partiallll')
57
79
  @tester.link_to_add_association('add something', @form_obj, :comments, :wrap_object => Proc.new {|comment| CommentDecorator.new(comment) })
58
80
  end
59
81
 
60
82
  context "force non association create" do
61
83
  context "default case: create object on association" do
62
84
  before do
63
- @tester.should_receive(:create_object).with(anything, :comments , false)
85
+ expect(@tester).to receive(:create_object).with(anything, :comments , false)
64
86
  @html = @tester.link_to_add_association('add something', @form_obj, :comments)
65
87
  end
66
88
 
@@ -69,7 +91,7 @@ describe Cocoon do
69
91
 
70
92
  context "and explicitly specifying false is the same as default" do
71
93
  before do
72
- @tester.should_receive(:create_object).with(anything, :comments , false)
94
+ expect(@tester).to receive(:create_object).with(anything, :comments , false)
73
95
  @html = @tester.link_to_add_association('add something', @form_obj, :comments, :force_non_association_create => false)
74
96
  end
75
97
  it_behaves_like "a correctly rendered add link", {}
@@ -77,7 +99,7 @@ describe Cocoon do
77
99
 
78
100
  context "specifying true will not create objects on association but using the conditions" do
79
101
  before do
80
- @tester.should_receive(:create_object).with(anything, :comments , true)
102
+ expect(@tester).to receive(:create_object).with(anything, :comments , true)
81
103
  @html = @tester.link_to_add_association('add something', @form_obj, :comments, :force_non_association_create => true)
82
104
  end
83
105
  it_behaves_like "a correctly rendered add link", {}
@@ -127,8 +149,8 @@ describe Cocoon do
127
149
 
128
150
  context "and explicitly specifying the wanted partial" do
129
151
  before do
130
- @tester.unstub(:render_association)
131
- @tester.should_receive(:render_association).with(anything(), anything(), anything(), "f", anything(), "shared/partial").and_return('partiallll')
152
+ allow(@tester).to receive(:render_association).and_call_original
153
+ expect(@tester).to receive(:render_association).with(anything(), anything(), anything(), "f", anything(), "shared/partial").and_return('partiallll')
132
154
  @html = @tester.link_to_add_association( @form_obj, :comments, :class => 'floppy disk', :partial => "shared/partial") do
133
155
  "some long name"
134
156
  end
@@ -157,13 +179,13 @@ describe Cocoon do
157
179
  end
158
180
 
159
181
  it "tttt" do
160
- @post.class.reflect_on_association(:people).klass.new.should be_a(Person)
182
+ expect(@post.class.reflect_on_association(:people).klass.new).to be_a(Person)
161
183
  end
162
184
 
163
185
  context "with extra render-options for rendering the child relation" do
164
186
  context "uses the correct plural" do
165
187
  before do
166
- @tester.should_receive(:render_association).with(:people, @form_obj, anything, "f", {:wrapper => 'inline'}, nil)
188
+ expect(@tester).to receive(:render_association).with(:people, @form_obj, anything, "f", {:wrapper => 'inline'}, nil)
167
189
  @html = @tester.link_to_add_association('add something', @form_obj, :people, :render_options => {:wrapper => 'inline'})
168
190
  end
169
191
  it_behaves_like "a correctly rendered add link", {association: 'person', associations: 'people' }
@@ -173,18 +195,18 @@ describe Cocoon do
173
195
  context "passing locals to the partial" do
174
196
  context "when given: passes the locals to the partials" do
175
197
  before do
176
- @tester.unstub(:render_association)
177
- @form_obj.should_receive(:fields_for) { | association, new_object, options_hash, &block| block.call }
178
- @tester.should_receive(:render).with("person_fields", {:f=>nil, :dynamic=>true, :alfred=>"Judoka"}).and_return ("partiallll")
198
+ allow(@tester).to receive(:render_association).and_call_original
199
+ expect(@form_obj).to receive(:fields_for) { | association, new_object, options_hash, &block| block.call }
200
+ expect(@tester).to receive(:render).with("person_fields", {:f=>nil, :dynamic=>true, :alfred=>"Judoka"}).and_return ("partiallll")
179
201
  @html = @tester.link_to_add_association('add something', @form_obj, :people, :render_options => {:wrapper => 'inline', :locals => {:alfred => 'Judoka'}})
180
202
  end
181
203
  it_behaves_like "a correctly rendered add link", {template: 'partiallll', association: 'person', associations: 'people' }
182
204
  end
183
205
  context "if no locals are given it still works" do
184
206
  before do
185
- @tester.unstub(:render_association)
186
- @form_obj.should_receive(:fields_for) { | association, new_object, options_hash, &block| block.call }
187
- @tester.should_receive(:render).with("person_fields", {:f=>nil, :dynamic=>true}).and_return ("partiallll")
207
+ allow(@tester).to receive(:render_association).and_call_original
208
+ expect(@form_obj).to receive(:fields_for) { | association, new_object, options_hash, &block| block.call }
209
+ expect(@tester).to receive(:render).with("person_fields", {:f=>nil, :dynamic=>true}).and_return ("partiallll")
188
210
  @html = @tester.link_to_add_association('add something', @form_obj, :people, :render_options => {:wrapper => 'inline'})
189
211
  end
190
212
  it_behaves_like "a correctly rendered add link", {template: 'partiallll', association: 'person', associations: 'people' }
@@ -196,9 +218,9 @@ describe Cocoon do
196
218
  context "overruling the form parameter name" do
197
219
  context "when given a form_name it passes it correctly to the partials" do
198
220
  before do
199
- @tester.unstub(:render_association)
200
- @form_obj.should_receive(:fields_for) { | association, new_object, options_hash, &block| block.call }
201
- @tester.should_receive(:render).with("person_fields", {:people_form => nil, :dynamic=>true}).and_return ("partiallll")
221
+ allow(@tester).to receive(:render_association).and_call_original
222
+ expect(@form_obj).to receive(:fields_for) { | association, new_object, options_hash, &block| block.call }
223
+ expect(@tester).to receive(:render).with("person_fields", {:people_form => nil, :dynamic=>true}).and_return ("partiallll")
202
224
  @html = @tester.link_to_add_association('add something', @form_obj, :people, :form_name => 'people_form')
203
225
  end
204
226
  it_behaves_like "a correctly rendered add link", {template: 'partiallll', association: 'person', associations: 'people' }
@@ -208,13 +230,14 @@ describe Cocoon do
208
230
 
209
231
  context "when using formtastic" do
210
232
  before(:each) do
211
- @tester.unstub(:render_association)
212
- @form_obj.stub(:semantic_fields_for).and_return('form<tagzzz>')
233
+ allow(@tester).to receive(:render_association).and_call_original
234
+ allow(@form_obj).to receive(:semantic_fields_for).and_return('form<tagzzz>')
213
235
  end
214
236
  context "calls semantic_fields_for and not fields_for" do
215
237
  before do
216
- @form_obj.should_receive(:semantic_fields_for)
217
- @form_obj.should_receive(:fields_for).never
238
+ allow(@form_obj).to receive_message_chain(:class, :ancestors) { ['Formtastic::FormBuilder'] }
239
+ expect(@form_obj).to receive(:semantic_fields_for)
240
+ expect(@form_obj).to receive(:fields_for).never
218
241
  @html = @tester.link_to_add_association('add something', @form_obj, :people)
219
242
  end
220
243
  it_behaves_like "a correctly rendered add link", {template: 'form<tagzzz>', association: 'person', associations: 'people' }
@@ -222,16 +245,17 @@ describe Cocoon do
222
245
  end
223
246
  context "when using simple_form" do
224
247
  before(:each) do
225
- @tester.unstub(:render_association)
226
- @form_obj.stub(:simple_fields_for).and_return('form<tagxxx>')
248
+ allow(@tester).to receive(:render_association).and_call_original
249
+ allow(@form_obj).to receive(:simple_fields_for).and_return('form<tagxxx>')
227
250
  end
228
251
  it "responds_to :simple_fields_for" do
229
- @form_obj.should respond_to(:simple_fields_for)
252
+ expect(@form_obj).to respond_to(:simple_fields_for)
230
253
  end
231
254
  context "calls simple_fields_for and not fields_for" do
232
255
  before do
233
- @form_obj.should_receive(:simple_fields_for)
234
- @form_obj.should_receive(:fields_for).never
256
+ allow(@form_obj).to receive_message_chain(:class, :ancestors) { ['SimpleForm::FormBuilder'] }
257
+ expect(@form_obj).to receive(:simple_fields_for)
258
+ expect(@form_obj).to receive(:fields_for).never
235
259
  @html = @tester.link_to_add_association('add something', @form_obj, :people)
236
260
  end
237
261
  it_behaves_like "a correctly rendered add link", {template: 'form<tagxxx>', association: 'person', associations: 'people' }
@@ -257,14 +281,36 @@ describe Cocoon do
257
281
  it "is rendered inside a input element" do
258
282
  doc = Nokogiri::HTML(@html)
259
283
  removed = doc.at('input')
260
- removed.attribute('id').value.should == "Post__destroy"
261
- removed.attribute('name').value.should == "Post[_destroy]"
262
- removed.attribute('value').value.should == "false"
284
+ expect(removed.attribute('id').value).to eq("Post__destroy")
285
+ expect(removed.attribute('name').value).to eq("Post[_destroy]")
286
+ expect(removed.attribute('value').value).to eq("false")
263
287
  end
264
288
 
265
289
  it_behaves_like "a correctly rendered remove link", {}
266
290
  end
267
291
 
292
+ context 'no name given' do
293
+ context 'custom translation exists' do
294
+ before do
295
+ I18n.backend.store_translations(:en, :cocoon => { :posts => { :remove => 'Remove post' } })
296
+
297
+ @html = @tester.link_to_remove_association(@form_obj)
298
+ end
299
+
300
+ it_behaves_like "a correctly rendered remove link", { text: 'Remove post' }
301
+ end
302
+
303
+ context 'uses default translation' do
304
+ before do
305
+ I18n.backend.store_translations(:en, :cocoon => { :defaults => { :remove => 'Remove' } })
306
+
307
+ @html = @tester.link_to_remove_association(@form_obj)
308
+ end
309
+
310
+ it_behaves_like "a correctly rendered remove link", { text: 'Remove' }
311
+ end
312
+ end
313
+
268
314
  context "accepts html options and pass them to link_to" do
269
315
  before do
270
316
  @html = @tester.link_to_remove_association('remove something', @form_obj, {:class => 'add_some_class', :'data-something' => 'bla'})
@@ -287,9 +333,9 @@ describe Cocoon do
287
333
  it "is rendered inside a input element" do
288
334
  doc = Nokogiri::HTML(@html)
289
335
  removed = doc.at('input')
290
- removed.attribute('id').value.should == "Post__destroy"
291
- removed.attribute('name').value.should == "Post[_destroy]"
292
- removed.attribute('value').value.should == "true"
336
+ expect(removed.attribute('id').value).to eq("Post__destroy")
337
+ expect(removed.attribute('name').value).to eq("Post[_destroy]")
338
+ expect(removed.attribute('value').value).to eq("true")
293
339
  end
294
340
 
295
341
  it_behaves_like "a correctly rendered remove link", {class: 'remove_fields dynamic destroyed'}
@@ -336,7 +382,7 @@ describe Cocoon do
336
382
 
337
383
  context "create_object" do
338
384
  it "creates correct association with conditions" do
339
- @tester.should_not_receive(:create_object_with_conditions)
385
+ expect(@tester).not_to receive(:create_object_with_conditions)
340
386
  # in rails4 we cannot create an associated object when the object has not been saved before
341
387
  # I submitted a bug for this: https://github.com/rails/rails/issues/11376
342
388
  if Rails.rails4?
@@ -344,16 +390,16 @@ describe Cocoon do
344
390
  @form_obj = double(:object => @post, :object_name => @post.class.name)
345
391
  end
346
392
  result = @tester.create_object(@form_obj, :admin_comments)
347
- result.author.should == "Admin"
348
- @form_obj.object.admin_comments.should be_empty
393
+ expect(result.author).to eq("Admin")
394
+ expect(@form_obj.object.admin_comments).to be_empty
349
395
  end
350
396
 
351
397
  it "creates correct association for belongs_to associations" do
352
398
  comment = Comment.new
353
399
  form_obj = double(:object => Comment.new)
354
400
  result = @tester.create_object(form_obj, :post)
355
- result.should be_a Post
356
- comment.post.should be_nil
401
+ expect(result).to be_a Post
402
+ expect(comment.post).to be_nil
357
403
  end
358
404
 
359
405
  it "raises an error if cannot reflect on association" do
@@ -362,30 +408,30 @@ describe Cocoon do
362
408
 
363
409
  it "creates an association if object responds to 'build_association' as singular" do
364
410
  object = Comment.new
365
- object.should_receive(:build_custom_item).and_return 'custom'
366
- @tester.create_object(double(:object => object), :custom_item).should == 'custom'
411
+ expect(object).to receive(:build_custom_item).and_return 'custom'
412
+ expect(@tester.create_object(double(:object => object), :custom_item)).to eq('custom')
367
413
  end
368
414
 
369
415
  it "creates an association if object responds to 'build_association' as plural" do
370
416
  object = Comment.new
371
- object.should_receive(:build_custom_item).and_return 'custom'
372
- @tester.create_object(double(:object => object), :custom_items).should == 'custom'
417
+ expect(object).to receive(:build_custom_item).and_return 'custom'
418
+ expect(@tester.create_object(double(:object => object), :custom_items)).to eq('custom')
373
419
  end
374
420
 
375
421
  it "can create using only conditions not the association" do
376
- @tester.should_receive(:create_object_with_conditions).and_return('flappie')
377
- @tester.create_object(@form_obj, :comments, true).should == 'flappie'
422
+ expect(@tester).to receive(:create_object_with_conditions).and_return('flappie')
423
+ expect(@tester.create_object(@form_obj, :comments, true)).to eq('flappie')
378
424
  end
379
425
  end
380
426
 
381
427
  context "get_partial_path" do
382
428
  it "generates the default partial name if no partial given" do
383
429
  result = @tester.get_partial_path(nil, :admin_comments)
384
- result.should == "admin_comment_fields"
430
+ expect(result).to eq("admin_comment_fields")
385
431
  end
386
432
  it "uses the given partial name" do
387
433
  result = @tester.get_partial_path("comment_fields", :admin_comments)
388
- result.should == "comment_fields"
434
+ expect(result).to eq("comment_fields")
389
435
  end
390
436
  end
391
437
 
@@ -1,6 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'rspec/mocks'
3
- require 'rspec/rails/mocks'
4
2
 
5
3
  require 'generator_spec/test_case'
6
4
  require 'generators/cocoon/install/install_generator'
@@ -13,18 +11,18 @@ describe Cocoon::Generators::InstallGenerator do
13
11
  context "in rails 3.0" do
14
12
  context "with no arguments" do
15
13
  before(:each) do
16
- ::Rails.stub(:version) { '3.0.8' }
14
+ allow(::Rails).to receive(:version) { '3.0.8' }
17
15
  prepare_destination
18
16
  run_generator
19
17
  end
20
18
 
21
19
  it "stubs the version correctly" do
22
- ::Rails.version[0..2].should == "3.0"
20
+ expect(::Rails.version[0..2]).to eq("3.0")
23
21
  end
24
22
 
25
23
  it "stubs the version correctly" do
26
24
  test_version = (::Rails.version[0..2].to_f >= 3.1)
27
- test_version.should be_false
25
+ expect(test_version).to be_falsey
28
26
  end
29
27
 
30
28
  it "copies cocoon.js to the correct folder" do
@@ -36,7 +34,7 @@ describe Cocoon::Generators::InstallGenerator do
36
34
  context "in rails 3.1" do
37
35
  context "with no arguments" do
38
36
  before(:each) do
39
- ::Rails.stub(:version) { '3.1.0' }
37
+ allow(::Rails).to receive(:version) { '3.1.0' }
40
38
  prepare_destination
41
39
  run_generator
42
40
  end
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Navigation" do
3
+ describe "Navigation", :type => :request do
4
4
  # include Capybara
5
5
 
6
6
  it "should be a valid app" do
7
- ::Rails.application.should be_a(Dummy::Application)
7
+ expect(::Rails.application).to be_a(Dummy::Application)
8
8
  end
9
9
  end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.after(:each) { I18n.reload! }
3
+ end
@@ -17,24 +17,24 @@ shared_examples_for "a correctly rendered add link" do |options|
17
17
  @link = doc.at('a')
18
18
  end
19
19
  it 'has a correct href' do
20
- @link.attribute('href').value.should == @options[:href]
20
+ expect(@link.attribute('href').value).to eq(@options[:href])
21
21
  end
22
22
  it 'has a correct class' do
23
- @link.attribute('class').value.should == @options[:class]
23
+ expect(@link.attribute('class').value).to eq(@options[:class])
24
24
  end
25
25
  it 'has a correct template' do
26
- @link.attribute('data-association-insertion-template').value.should == @options[:template]
26
+ expect(@link.attribute('data-association-insertion-template').value).to eq(@options[:template])
27
27
  end
28
28
  it 'has a correct associations' do
29
- @link.attribute('data-association').value.should == @options[:association]
30
- @link.attribute('data-associations').value.should == @options[:associations]
29
+ expect(@link.attribute('data-association').value).to eq(@options[:association])
30
+ expect(@link.attribute('data-associations').value).to eq(@options[:associations])
31
31
  end
32
32
  it 'has the correct text' do
33
- @link.text.should == @options[:text]
33
+ expect(@link.text).to eq(@options[:text])
34
34
  end
35
35
  it 'sets extra attributes correctly' do
36
36
  @options[:extra_attributes].each do |key, value|
37
- @link.attribute(key).value.should == value
37
+ expect(@link.attribute(key).value).to eq(value)
38
38
  end
39
39
  end
40
40
 
@@ -56,17 +56,17 @@ shared_examples_for "a correctly rendered remove link" do |options|
56
56
  @link = doc.at('a')
57
57
  end
58
58
  it 'has a correct href' do
59
- @link.attribute('href').value.should == @options[:href]
59
+ expect(@link.attribute('href').value).to eq(@options[:href])
60
60
  end
61
61
  it 'has a correct class' do
62
- @link.attribute('class').value.should == @options[:class]
62
+ expect(@link.attribute('class').value).to eq(@options[:class])
63
63
  end
64
64
  it 'has the correct text' do
65
- @link.text.should == @options[:text]
65
+ expect(@link.text).to eq(@options[:text])
66
66
  end
67
67
  it 'sets extra attributes correctly' do
68
68
  @options[:extra_attributes].each do |key, value|
69
- @link.attribute(key).value.should == value
69
+ expect(@link.attribute(key).value).to eq(value)
70
70
  end
71
71
  end
72
72
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
4
+ version: 1.2.7
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Nathan Van der Auwera
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-03-18 00:00:00.000000000 Z
12
+ date: 2016-01-27 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ! '>='
25
28
  - !ruby/object:Gem::Version
@@ -27,20 +30,23 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: sqlite3
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - ! '>='
35
+ - - '='
32
36
  - !ruby/object:Gem::Version
33
- version: '0'
37
+ version: 1.3.8
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - ! '>='
43
+ - - '='
39
44
  - !ruby/object:Gem::Version
40
- version: '0'
45
+ version: 1.3.8
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: json_pure
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ! '>='
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ! '>='
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: jeweler
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ! '>='
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ! '>='
67
76
  - !ruby/object:Gem::Version
@@ -69,38 +78,39 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rspec-rails
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - ! '>='
83
+ - - ~>
74
84
  - !ruby/object:Gem::Version
75
- version: !binary |-
76
- Mi44LjA=
85
+ version: 3.0.0
77
86
  type: :development
78
87
  prerelease: false
79
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
80
90
  requirements:
81
- - - ! '>='
91
+ - - ~>
82
92
  - !ruby/object:Gem::Version
83
- version: !binary |-
84
- Mi44LjA=
93
+ version: 3.0.0
85
94
  - !ruby/object:Gem::Dependency
86
95
  name: rspec
87
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
88
98
  requirements:
89
- - - ! '>='
99
+ - - ~>
90
100
  - !ruby/object:Gem::Version
91
- version: !binary |-
92
- Mi44LjA=
101
+ version: 3.0.0
93
102
  type: :development
94
103
  prerelease: false
95
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
96
106
  requirements:
97
- - - ! '>='
107
+ - - ~>
98
108
  - !ruby/object:Gem::Version
99
- version: !binary |-
100
- Mi44LjA=
109
+ version: 3.0.0
101
110
  - !ruby/object:Gem::Dependency
102
111
  name: actionpack
103
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
104
114
  requirements:
105
115
  - - ! '>='
106
116
  - !ruby/object:Gem::Version
@@ -108,6 +118,7 @@ dependencies:
108
118
  type: :development
109
119
  prerelease: false
110
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
111
122
  requirements:
112
123
  - - ! '>='
113
124
  - !ruby/object:Gem::Version
@@ -115,6 +126,7 @@ dependencies:
115
126
  - !ruby/object:Gem::Dependency
116
127
  name: simplecov
117
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
118
130
  requirements:
119
131
  - - ! '>='
120
132
  - !ruby/object:Gem::Version
@@ -122,6 +134,7 @@ dependencies:
122
134
  type: :development
123
135
  prerelease: false
124
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
125
138
  requirements:
126
139
  - - ! '>='
127
140
  - !ruby/object:Gem::Version
@@ -129,6 +142,7 @@ dependencies:
129
142
  - !ruby/object:Gem::Dependency
130
143
  name: nokogiri
131
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
132
146
  requirements:
133
147
  - - ! '>='
134
148
  - !ruby/object:Gem::Version
@@ -136,6 +150,7 @@ dependencies:
136
150
  type: :development
137
151
  prerelease: false
138
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
139
154
  requirements:
140
155
  - - ! '>='
141
156
  - !ruby/object:Gem::Version
@@ -143,6 +158,7 @@ dependencies:
143
158
  - !ruby/object:Gem::Dependency
144
159
  name: generator_spec
145
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
146
162
  requirements:
147
163
  - - ! '>='
148
164
  - !ruby/object:Gem::Version
@@ -150,6 +166,7 @@ dependencies:
150
166
  type: :development
151
167
  prerelease: false
152
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
153
170
  requirements:
154
171
  - - ! '>='
155
172
  - !ruby/object:Gem::Version
@@ -157,6 +174,7 @@ dependencies:
157
174
  - !ruby/object:Gem::Dependency
158
175
  name: rubysl
159
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
160
178
  requirements:
161
179
  - - ! '>='
162
180
  - !ruby/object:Gem::Version
@@ -164,6 +182,7 @@ dependencies:
164
182
  type: :development
165
183
  prerelease: false
166
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
167
186
  requirements:
168
187
  - - ! '>='
169
188
  - !ruby/object:Gem::Version
@@ -171,6 +190,7 @@ dependencies:
171
190
  - !ruby/object:Gem::Dependency
172
191
  name: rubysl-test-unit
173
192
  requirement: !ruby/object:Gem::Requirement
193
+ none: false
174
194
  requirements:
175
195
  - - ! '>='
176
196
  - !ruby/object:Gem::Version
@@ -178,6 +198,7 @@ dependencies:
178
198
  type: :development
179
199
  prerelease: false
180
200
  version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
181
202
  requirements:
182
203
  - - ! '>='
183
204
  - !ruby/object:Gem::Version
@@ -185,6 +206,7 @@ dependencies:
185
206
  - !ruby/object:Gem::Dependency
186
207
  name: psych
187
208
  requirement: !ruby/object:Gem::Requirement
209
+ none: false
188
210
  requirements:
189
211
  - - ! '>='
190
212
  - !ruby/object:Gem::Version
@@ -192,6 +214,7 @@ dependencies:
192
214
  type: :development
193
215
  prerelease: false
194
216
  version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
195
218
  requirements:
196
219
  - - ! '>='
197
220
  - !ruby/object:Gem::Version
@@ -199,6 +222,7 @@ dependencies:
199
222
  - !ruby/object:Gem::Dependency
200
223
  name: racc
201
224
  requirement: !ruby/object:Gem::Requirement
225
+ none: false
202
226
  requirements:
203
227
  - - ! '>='
204
228
  - !ruby/object:Gem::Version
@@ -206,6 +230,7 @@ dependencies:
206
230
  type: :development
207
231
  prerelease: false
208
232
  version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
209
234
  requirements:
210
235
  - - ! '>='
211
236
  - !ruby/object:Gem::Version
@@ -213,6 +238,7 @@ dependencies:
213
238
  - !ruby/object:Gem::Dependency
214
239
  name: rubinius-developer_tools
215
240
  requirement: !ruby/object:Gem::Requirement
241
+ none: false
216
242
  requirements:
217
243
  - - ! '>='
218
244
  - !ruby/object:Gem::Version
@@ -220,6 +246,7 @@ dependencies:
220
246
  type: :development
221
247
  prerelease: false
222
248
  version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
223
250
  requirements:
224
251
  - - ! '>='
225
252
  - !ruby/object:Gem::Version
@@ -289,31 +316,36 @@ files:
289
316
  - spec/generators/install_generator_spec.rb
290
317
  - spec/integration/navigation_spec.rb
291
318
  - spec/spec_helper.rb
319
+ - spec/support/i18n.rb
292
320
  - spec/support/rails_version_helper.rb
293
321
  - spec/support/shared_examples.rb
294
322
  homepage: http://github.com/nathanvda/cocoon
295
323
  licenses:
296
324
  - MIT
297
- metadata: {}
298
325
  post_install_message:
299
326
  rdoc_options: []
300
327
  require_paths:
301
328
  - lib
302
329
  required_ruby_version: !ruby/object:Gem::Requirement
330
+ none: false
303
331
  requirements:
304
332
  - - ! '>='
305
333
  - !ruby/object:Gem::Version
306
334
  version: '0'
335
+ segments:
336
+ - 0
337
+ hash: -1378407659540710243
307
338
  required_rubygems_version: !ruby/object:Gem::Requirement
339
+ none: false
308
340
  requirements:
309
341
  - - ! '>='
310
342
  - !ruby/object:Gem::Version
311
343
  version: '0'
312
344
  requirements: []
313
345
  rubyforge_project:
314
- rubygems_version: 2.2.1
346
+ rubygems_version: 1.8.24
315
347
  signing_key:
316
- specification_version: 4
348
+ specification_version: 3
317
349
  summary: gem that enables easier nested forms with standard forms, formtastic and
318
350
  simple-form
319
351
  test_files: []
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- M2MwYmFkNzAwZjhhYjA2NmEwMjMxMzMwY2Q0ZjNiNzU5YzFkZWE4YQ==
5
- data.tar.gz: !binary |-
6
- NmE1YTIwY2YzOTVkOTI1NzkzNGE4ZjIyZmUyZGI4ZTA0OTRkMmVhNg==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- ZGZhNGU1N2FlNGZlOTFjYjVlZmNjZTFkMDIzYzE2OGNjMDJmZDljMTMxYTFh
10
- MTIzYzkyNzExOWNlODljYzk0ZTQ2NmM3NzY2MDUyMmJiZjhmMGUzOWQ5Mzdh
11
- YWRlNmM4NDZiMjdmZDdmNGEyYjVjOWYxYTc4ZjJkM2JhMWI0Yzg=
12
- data.tar.gz: !binary |-
13
- YzUxMTgzY2VlOWRiNzgyMDlhMWRmYTU5ZmJjNjI4YjBlYzAwYmRmZTRkMzM4
14
- MDNlOGFiNDAyMTM5ZWJlZjkxMDc3ZWEwZGRiNmNkZTI3Njk1NWRkNjQzMjhj
15
- MzkxODI0NDkyMmU1NjU0NDkwYTQwNzQzNzE5NzQwODMyM2JlNjY=