view_mapper 0.3.2 → 0.3.3

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 (44) hide show
  1. data/README.rdoc +3 -1
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/lib/view_mapper/belongs_to_parent_models.rb +130 -0
  5. data/lib/view_mapper/model_info.rb +2 -6
  6. data/lib/view_mapper/views/auto_complete/auto_complete_view.rb +2 -1
  7. data/lib/view_mapper/views/belongs_to/belongs_to_view.rb +1 -86
  8. data/lib/view_mapper/views/belongs_to/templates/{model.rb → model.erb} +2 -2
  9. data/lib/view_mapper/views/belongs_to/templates/view_form.html.erb +1 -1
  10. data/lib/view_mapper/views/belongs_to/templates/view_index.html.erb +1 -1
  11. data/lib/view_mapper/views/belongs_to/templates/view_show.html.erb +1 -1
  12. data/lib/view_mapper/views/belongs_to_auto_complete/belongs_to_auto_complete_view.rb +60 -0
  13. data/lib/view_mapper/views/belongs_to_auto_complete/templates/controller.rb +90 -0
  14. data/lib/view_mapper/views/belongs_to_auto_complete/templates/layout.html.erb +18 -0
  15. data/lib/view_mapper/views/belongs_to_auto_complete/templates/migration.rb +19 -0
  16. data/lib/view_mapper/views/belongs_to_auto_complete/templates/model.erb +16 -0
  17. data/lib/view_mapper/views/belongs_to_auto_complete/templates/view_edit.html.erb +11 -0
  18. data/lib/view_mapper/views/belongs_to_auto_complete/templates/view_form.html.erb +13 -0
  19. data/lib/view_mapper/views/belongs_to_auto_complete/templates/view_index.html.erb +30 -0
  20. data/lib/view_mapper/views/belongs_to_auto_complete/templates/view_new.html.erb +10 -0
  21. data/lib/view_mapper/views/belongs_to_auto_complete/templates/view_show.html.erb +16 -0
  22. data/lib/view_mapper/views/paperclip/paperclip_view.rb +2 -1
  23. data/lib/view_mapper.rb +2 -0
  24. data/test/test_helper.rb +29 -7
  25. data/test/views/auto_complete/auto_complete_test.rb +1 -1
  26. data/test/views/belongs_to/belongs_to_test.rb +13 -10
  27. data/test/views/belongs_to/expected_templates/_form.html.erb +1 -1
  28. data/test/views/belongs_to/expected_templates/index.html.erb +1 -1
  29. data/test/views/belongs_to/expected_templates/show.html.erb +1 -1
  30. data/test/views/belongs_to/expected_templates/some_other_model.rb +2 -2
  31. data/test/views/belongs_to_auto_complete/belongs_to_auto_complete_test.rb +489 -0
  32. data/test/views/belongs_to_auto_complete/expected_templates/_form.html.erb +13 -0
  33. data/test/views/belongs_to_auto_complete/expected_templates/create_some_other_models.rb +18 -0
  34. data/test/views/belongs_to_auto_complete/expected_templates/edit.html.erb +11 -0
  35. data/test/views/belongs_to_auto_complete/expected_templates/expected_routes.rb +47 -0
  36. data/test/views/belongs_to_auto_complete/expected_templates/index.html.erb +24 -0
  37. data/test/views/belongs_to_auto_complete/expected_templates/new.html.erb +10 -0
  38. data/test/views/belongs_to_auto_complete/expected_templates/show.html.erb +17 -0
  39. data/test/views/belongs_to_auto_complete/expected_templates/some_other_model.rb +16 -0
  40. data/test/views/belongs_to_auto_complete/expected_templates/some_other_models.html.erb +18 -0
  41. data/test/views/belongs_to_auto_complete/expected_templates/some_other_models_controller.rb +89 -0
  42. data/test/views/belongs_to_auto_complete/expected_templates/standard_routes.rb +43 -0
  43. data/view_mapper.gemspec +35 -6
  44. metadata +33 -4
data/test/test_helper.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'ftools'
2
1
  require 'rubygems'
3
2
  require 'test/unit'
4
3
  require 'shoulda'
@@ -51,6 +50,7 @@ def setup_test_model(paperclip_columns = false)
51
50
  end
52
51
  end
53
52
  ActiveRecord::Base.send(:include, MockPaperclip)
53
+ ActionController::Base.send(:include, MockAutoComplete)
54
54
  Object.const_get("Testy")
55
55
  end
56
56
 
@@ -85,11 +85,13 @@ def setup_parent_test_model(create_foreign_key = true, child_belongs_to_parent =
85
85
  def parent_name
86
86
  'something'
87
87
  end
88
+ def parent_name=
89
+ end
88
90
  end
89
91
  Object.const_get("Parent")
90
92
  end
91
93
 
92
- def setup_second_parent_test_model(has_name_virtual_attribute = true, has_foreign_key = true, parent_has_name_method = false, parent_has_name_column = true)
94
+ def setup_second_parent_test_model(has_virtual_attribute_setter = true, has_virtual_attribute = true, has_foreign_key = true, parent_has_name_method = false, parent_has_name_column = true)
93
95
  ActiveRecord::Base.connection.create_table :second_parents, :force => true do |table|
94
96
  table.column :name, :string unless !parent_has_name_column
95
97
  table.column :other_field, :string
@@ -108,9 +110,22 @@ def setup_second_parent_test_model(has_name_virtual_attribute = true, has_foreig
108
110
  end
109
111
  SomeOtherModel.class_eval do
110
112
  belongs_to :second_parent
111
- def second_parent_name
112
- 'something'
113
- end unless !has_name_virtual_attribute
113
+ if has_virtual_attribute
114
+ def second_parent_name
115
+ 'something'
116
+ end
117
+ def second_parent_other_field
118
+ 'something'
119
+ end
120
+ end
121
+ if has_virtual_attribute_setter
122
+ def second_parent_name=
123
+ 'something'
124
+ end
125
+ def second_parent_other_field=
126
+ 'something'
127
+ end
128
+ end
114
129
  end
115
130
  end
116
131
 
@@ -142,8 +157,15 @@ class Rails::Generator::NamedBase
142
157
  end
143
158
 
144
159
  module ActionController
145
- class Base
146
- def self.auto_complete_for
160
+ class Base; end
161
+ end
162
+
163
+ module MockAutoComplete
164
+ def self.included(base)
165
+ base.extend(ClassMethods)
166
+ end
167
+ module ClassMethods
168
+ def auto_complete_for
147
169
  end
148
170
  end
149
171
  end
@@ -122,7 +122,7 @@ class AutoCompleteViewTest < Test::Unit::TestCase
122
122
  test_routes_file = expected_path + '/routes.rb'
123
123
  ViewForGenerator.any_instance.stubs(:destination_path).returns test_routes_file
124
124
  ScaffoldForViewGenerator.any_instance.stubs(:destination_path).returns test_routes_file
125
- File.copy(standard_routes_file, test_routes_file)
125
+ FileUtils.copy(standard_routes_file, test_routes_file)
126
126
  Rails::Generator::Commands::Create.any_instance.stubs(:route_file).returns(test_routes_file)
127
127
  @generator_script.run(generator_script_cmd_line(gen, ['--view', 'auto_complete:address']))
128
128
  assert_equal File.open(expected_routes_file).read, File.open(test_routes_file).read
@@ -76,7 +76,7 @@ class BelongsToViewTest < Test::Unit::TestCase
76
76
  setup do
77
77
  setup_test_model
78
78
  setup_parent_test_model
79
- setup_second_parent_test_model(false)
79
+ setup_second_parent_test_model(true, false)
80
80
  end
81
81
 
82
82
  should "return a warning and stop when the problem model is specified" do
@@ -99,7 +99,7 @@ class BelongsToViewTest < Test::Unit::TestCase
99
99
  setup do
100
100
  setup_test_model
101
101
  setup_parent_test_model
102
- setup_second_parent_test_model(true, true, false, false)
102
+ setup_second_parent_test_model(true, true, true, false, false)
103
103
  end
104
104
 
105
105
  should "return a warning and stop when the problem model is specified" do
@@ -122,7 +122,7 @@ class BelongsToViewTest < Test::Unit::TestCase
122
122
  setup do
123
123
  setup_test_model
124
124
  setup_parent_test_model
125
- setup_second_parent_test_model(true, true, true, false)
125
+ setup_second_parent_test_model(true, true, true, true, false)
126
126
  end
127
127
 
128
128
  should "continue to generate as usual" do
@@ -137,7 +137,7 @@ class BelongsToViewTest < Test::Unit::TestCase
137
137
  setup do
138
138
  setup_test_model
139
139
  setup_parent_test_model
140
- setup_second_parent_test_model(true, false)
140
+ setup_second_parent_test_model(true, true, false)
141
141
  end
142
142
 
143
143
  should "return a warning and stop when the problem model is specified" do
@@ -161,7 +161,7 @@ class BelongsToViewTest < Test::Unit::TestCase
161
161
  setup_test_model
162
162
  setup_parent_test_model
163
163
  setup_second_parent_test_model
164
- @gen = new_generator_for_test_model('view_for', ['--view', 'belongs_to'], 'some_other_model')
164
+ @gen = new_generator_for_test_model('view_for', ['--view', 'belongs_to:parent,second_parent[other_field]'], 'some_other_model')
165
165
  end
166
166
 
167
167
  should "return the proper source root" do
@@ -199,14 +199,14 @@ class BelongsToViewTest < Test::Unit::TestCase
199
199
  setup_test_model
200
200
  setup_parent_test_model
201
201
  setup_second_parent_test_model
202
- @gen = new_generator_for_test_model('scaffold_for_view', ['--view', 'belongs_to:parent,second_parent'], 'some_other_model')
202
+ @gen = new_generator_for_test_model('scaffold_for_view', ['--view', 'belongs_to:parent,second_parent[other_field]'], 'some_other_model')
203
203
  end
204
204
 
205
205
  should "render the model template as expected" do
206
206
  @parent_models = @gen.parent_models
207
207
  @class_name = @gen.class_name
208
208
  @attributes = @gen.attributes
209
- template_file = File.open(@gen.source_path("model.rb"))
209
+ template_file = File.open(@gen.source_path("model.erb"))
210
210
  result = ERB.new(template_file.read, nil, '-').result(binding)
211
211
  expected_file = File.open(File.join(File.dirname(__FILE__), "expected_templates/some_other_model.rb"))
212
212
  assert_equal expected_file.read, result
@@ -305,9 +305,9 @@ class BelongsToViewTest < Test::Unit::TestCase
305
305
  'functional_test.rb' => 'test/functional/some_other_models_controller_test.rb',
306
306
  'helper.rb' => 'app/helpers/some_other_models_helper.rb',
307
307
  'helper_test.rb' => 'test/unit/helpers/some_other_models_helper_test.rb',
308
- 'model.rb' => 'app/models/some_other_model.rb',
309
- 'unit_test.rb' => 'test/unit/some_other_model_test.rb',
310
- 'fixtures.yml' => 'test/fixtures/some_other_models.yml'
308
+ 'model.erb' => 'app/models/some_other_model.rb',
309
+ 'unit_test.rb' => 'test/unit/some_other_model_test.rb',
310
+ 'fixtures.yml' => 'test/fixtures/some_other_models.yml'
311
311
  }.each { |template, target| Rails::Generator::Commands::Create.any_instance.expects(:template).with(template, target) }
312
312
 
313
313
  Rails::Generator::Commands::Create.any_instance.expects(:route_resources).with('some_other_models')
@@ -345,4 +345,7 @@ class BelongsToViewTest < Test::Unit::TestCase
345
345
  end
346
346
  end
347
347
 
348
+ def field_for(parent_model)
349
+ @gen.field_for(parent_model)
350
+ end
348
351
  end
@@ -9,5 +9,5 @@
9
9
  </p>
10
10
  <p>
11
11
  Second Parent:<br />
12
- <%= f.collection_select(:second_parent_id, SecondParent.all, :id, :name, { :prompt => true }) %>
12
+ <%= f.collection_select(:second_parent_id, SecondParent.all, :id, :other_field, { :prompt => true }) %>
13
13
  </p>
@@ -11,7 +11,7 @@
11
11
  <tr>
12
12
  <td><%=h some_other_model.name %></td>
13
13
  <td><%=h some_other_model.parent_name %></td>
14
- <td><%=h some_other_model.second_parent_name %></td>
14
+ <td><%=h some_other_model.second_parent_other_field %></td>
15
15
  <td><%= link_to 'Show', some_other_model %></td>
16
16
  <td><%= link_to 'Edit', edit_some_other_model_path(some_other_model) %></td>
17
17
  <td><%= link_to 'Destroy', some_other_model, :confirm => 'Are you sure?', :method => :delete %></td>
@@ -10,7 +10,7 @@
10
10
 
11
11
  <p>
12
12
  <b>Second Parent:</b>
13
- <%=h @some_other_model.second_parent_name %>
13
+ <%=h @some_other_model.second_parent_other_field %>
14
14
  </p>
15
15
 
16
16
  <%= link_to 'Edit', edit_some_other_model_path(@some_other_model) %> |
@@ -4,7 +4,7 @@ class SomeOtherModel < ActiveRecord::Base
4
4
  def parent_name
5
5
  parent.name if parent
6
6
  end
7
- def second_parent_name
8
- second_parent.name if second_parent
7
+ def second_parent_other_field
8
+ second_parent.other_field if second_parent
9
9
  end
10
10
  end