dry_crud 0.6.0 → 1.0.0

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 (43) hide show
  1. data/README.rdoc +41 -36
  2. data/Rakefile +51 -43
  3. data/VERSION +1 -1
  4. data/lib/generators/dry_crud/USAGE +1 -0
  5. data/lib/generators/dry_crud/dry_crud_generator.rb +20 -0
  6. data/{rails_generators → lib/generators}/dry_crud/templates/INSTALL +4 -3
  7. data/{rails_generators → lib/generators}/dry_crud/templates/app/controllers/crud_controller.rb +31 -9
  8. data/lib/generators/dry_crud/templates/app/controllers/render_inheritable.rb +152 -0
  9. data/{rails_generators → lib/generators}/dry_crud/templates/app/helpers/crud_helper.rb +4 -4
  10. data/{rails_generators/dry_crud/templates/lib → lib/generators/dry_crud/templates/app/helpers}/standard_form_builder.rb +0 -0
  11. data/{rails_generators → lib/generators}/dry_crud/templates/app/helpers/standard_helper.rb +81 -76
  12. data/{rails_generators/dry_crud/templates/lib → lib/generators/dry_crud/templates/app/helpers}/standard_table_builder.rb +45 -46
  13. data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/_attrs.html.erb +0 -0
  14. data/lib/generators/dry_crud/templates/app/views/crud/_form.html.erb +1 -0
  15. data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/_list.html.erb +0 -0
  16. data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/edit.html.erb +1 -1
  17. data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/index.html.erb +1 -1
  18. data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/new.html.erb +1 -1
  19. data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/show.html.erb +1 -1
  20. data/{rails_generators → lib/generators}/dry_crud/templates/app/views/layouts/crud.html.erb +1 -0
  21. data/lib/generators/dry_crud/templates/app/views/shared/_error_messages.html.erb +10 -0
  22. data/lib/generators/dry_crud/templates/app/views/shared/_labeled.html.erb +4 -0
  23. data/{rails_generators → lib/generators}/dry_crud/templates/public/stylesheets/crud.css +5 -5
  24. data/{rails_generators → lib/generators}/dry_crud/templates/test/crud_test_model.rb +25 -17
  25. data/{rails_generators → lib/generators}/dry_crud/templates/test/functional/crud_controller_test_helper.rb +36 -32
  26. data/{rails_generators → lib/generators}/dry_crud/templates/test/functional/crud_test_models_controller_test.rb +17 -4
  27. data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/crud_helper_test.rb +51 -6
  28. data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/render_inheritable_test.rb +31 -39
  29. data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/standard_form_builder_test.rb +0 -0
  30. data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/standard_helper_test.rb +76 -54
  31. data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/standard_table_builder_test.rb +42 -40
  32. data/test/templates/app/views/ajax/ajax.js.rjs +1 -1
  33. data/test/templates/app/views/ajax/index.html.erb +2 -2
  34. data/test/templates/app/views/cities/_form.html.erb +1 -1
  35. data/test/templates/app/views/cities/_list.html.erb +1 -2
  36. data/test/templates/config/routes.rb +14 -5
  37. metadata +51 -37
  38. data/rails_generators/dry_crud/USAGE +0 -1
  39. data/rails_generators/dry_crud/dry_crud_generator.rb +0 -22
  40. data/rails_generators/dry_crud/templates/app/views/crud/_form.html.erb +0 -1
  41. data/rails_generators/dry_crud/templates/app/views/shared/_labeled.html.erb +0 -5
  42. data/rails_generators/dry_crud/templates/lib/crud_callbacks.rb +0 -55
  43. data/rails_generators/dry_crud/templates/lib/render_inheritable.rb +0 -118
@@ -15,18 +15,53 @@ class CrudHelperTest < ActionView::TestCase
15
15
 
16
16
  test "standard crud table" do
17
17
  @entries = CrudTestModel.all
18
- t = crud_table
18
+
19
+ t = with_test_routing do
20
+ crud_table
21
+ end
22
+
19
23
  assert_match /(<tr.+?<\/tr>){7}/m, t
20
24
  assert_match /(<th.+?<\/th>){14}/m, t
21
25
  assert_match /(<a href.+?<\/a>.*?){18}/m, t
22
26
  end
27
+
28
+ test "custom crud table with attributes" do
29
+ @entries = CrudTestModel.all
30
+
31
+ t = with_test_routing do
32
+ crud_table :name, :children, :companion_id
33
+ end
34
+
35
+ assert_match /(<tr.+?<\/tr>){7}/m, t
36
+ assert_match /(<th.+?<\/th>){4}/m, t
37
+ assert_match /(<a href.+?<\/a>.*?){18}/m, t
38
+ end
23
39
 
24
- test "custom crud table" do
40
+ test "custom crud table with block" do
25
41
  @entries = CrudTestModel.all
26
- t = crud_table do |t|
27
- t.attrs :name, :children, :companion_id
28
- t.col("head") {|e| content_tag :span, e.income.to_s }
42
+
43
+ t = with_test_routing do
44
+ crud_table do |t|
45
+ t.attrs :name, :children, :companion_id
46
+ t.col("head") {|e| content_tag :span, e.income.to_s }
47
+ end
29
48
  end
49
+
50
+ assert_match /(<tr.+?<\/tr>){7}/m, t
51
+ assert_match /(<th.+?<\/th>){4}/m, t
52
+ assert_match /(<span>.+?<\/span>.*?){6}/m, t
53
+ assert_no_match /(<a href.+?<\/a>.*?)/m, t
54
+ end
55
+
56
+ test "custom crud table with attributes and block" do
57
+ @entries = CrudTestModel.all
58
+
59
+ t = with_test_routing do
60
+ crud_table :name, :children, :companion_id do |t|
61
+ t.col("head") {|e| content_tag :span, e.income.to_s }
62
+ end
63
+ end
64
+
30
65
  assert_match /(<tr.+?<\/tr>){7}/m, t
31
66
  assert_match /(<th.+?<\/th>){4}/m, t
32
67
  assert_match /(<span>.+?<\/span>.*?){6}/m, t
@@ -35,7 +70,9 @@ class CrudHelperTest < ActionView::TestCase
35
70
 
36
71
  test "crud form" do
37
72
  @entry = CrudTestModel.first
38
- f = capture { crud_form }
73
+ f = with_test_routing do
74
+ capture { crud_form }
75
+ end
39
76
 
40
77
  assert_match /form .*?action="\/crud_test_models\/#{@entry.id}"/, f
41
78
  assert_match /input .*?name="crud_test_model\[name\]" .*?type="text"/, f
@@ -53,5 +90,13 @@ class CrudHelperTest < ActionView::TestCase
53
90
  assert_equal [:name, :whatever, :children, :companion_id, :rating, :income,
54
91
  :birthdate, :human, :remarks, :created_at, :updated_at], default_attrs
55
92
  end
93
+
94
+ private
56
95
 
96
+ def with_test_routing
97
+ with_routing do |set|
98
+ set.draw { resources :crud_test_models }
99
+ yield
100
+ end
101
+ end
57
102
  end
@@ -1,8 +1,8 @@
1
1
  require 'test_helper'
2
2
 
3
- TEST_VIEW_PATH = File.join(RAILS_ROOT, 'test', 'test_views')
3
+ TEST_VIEW_PATH = File.join(Rails.root, 'test', 'test_views')
4
4
 
5
- class RootController < ActionController::Base
5
+ class RootController < ApplicationController
6
6
  include RenderInheritable
7
7
 
8
8
  attr_accessor :default_template_format
@@ -28,7 +28,7 @@ class GrandChildrenController < ChildrenController
28
28
 
29
29
  end
30
30
 
31
- # mock File ojbect
31
+ # mock File object
32
32
  class File
33
33
  class << self
34
34
  def touched
@@ -54,8 +54,8 @@ class RenderInheritableTest < ActiveSupport::TestCase
54
54
  teardown
55
55
  @controller = ChildrenController.new
56
56
  @grand_controller = GrandChildrenController.new
57
- ChildrenController.inheritable_cache.clear
58
- GrandChildrenController.inheritable_cache.clear
57
+ ChildrenController.send(:inheritable_cache).clear
58
+ GrandChildrenController.send(:inheritable_cache).clear
59
59
  end
60
60
 
61
61
  def teardown
@@ -69,59 +69,59 @@ class RenderInheritableTest < ActiveSupport::TestCase
69
69
  end
70
70
 
71
71
  test "lookup path" do
72
- assert_equal ['children', 'root'], ChildrenController.send(:lookup_path)
73
- assert_equal ['grand_children', 'children', 'root'], GrandChildrenController.send(:lookup_path)
72
+ assert_equal ['children', 'root'], ChildrenController.send(:inheritance_lookup_path)
73
+ assert_equal ['grand_children', 'children', 'root'], GrandChildrenController.send(:inheritance_lookup_path)
74
74
  end
75
75
 
76
- test "inheritable controller without routes finds root" do
77
- assert_equal 'root', ChildrenController.send(:inheritable_controller)
78
- assert_equal 'root', GrandChildrenController.send(:inheritable_controller)
76
+ test "inheritable controller finds controller instance" do
77
+ assert_equal 'children', ChildrenController.send(:inheritable_controller)
78
+ assert_equal 'grand_children', GrandChildrenController.send(:inheritable_controller)
79
79
  end
80
80
 
81
81
  test "find non-existing inheritable file" do
82
- assert_nil ChildrenController.send(:find_inheritable_file, 'foo')
82
+ assert_nil @controller.send(:find_inheritable_template_folder, 'foo')
83
83
  end
84
84
 
85
85
  test "find inheritable file not overwritten" do
86
86
  touch("root/root.html.erb")
87
87
 
88
- assert_equal 'root', ChildrenController.send(:find_inheritable_file, 'root')
89
- assert_equal 'root', GrandChildrenController.send(:find_inheritable_file, 'root')
88
+ assert_equal 'root', @controller.send(:find_inheritable_template_folder, 'root')
89
+ assert_equal 'root', @grand_controller.send(:find_inheritable_template_folder, 'root')
90
90
  end
91
91
 
92
92
  test "find inheritable file partially overwritten" do
93
93
  touch("root/child.html.erb")
94
94
  touch("children/child.html.erb")
95
95
 
96
- assert_equal 'children', ChildrenController.send(:find_inheritable_file, 'child')
97
- assert_equal 'children', GrandChildrenController.send(:find_inheritable_file, 'child')
96
+ assert_equal 'children', @controller.send(:find_inheritable_template_folder, 'child')
97
+ assert_equal 'children', @grand_controller.send(:find_inheritable_template_folder, 'child')
98
98
  end
99
99
 
100
100
  test "find inheritable file partially overwritten with gaps" do
101
101
  touch("root/grandchild.html.erb")
102
102
  touch("grand_children/grandchild.rhtml")
103
103
 
104
- assert_equal 'root', ChildrenController.send(:find_inheritable_file, 'grandchild')
105
- assert_equal 'grand_children', GrandChildrenController.send(:find_inheritable_file, 'grandchild')
104
+ assert_equal 'root', @controller.send(:find_inheritable_template_folder, 'grandchild')
105
+ assert_equal 'grand_children', @grand_controller.send(:find_inheritable_template_folder, 'grandchild')
106
106
  end
107
107
 
108
108
  test "find inheritable file for js format" do
109
109
  touch("root/_grandchild.js.rjs")
110
110
  touch("grand_children/_grandchild.js.rjs")
111
111
 
112
- assert_equal 'root', ChildrenController.send(:find_inheritable_file, '_grandchild', :js)
113
- assert_equal 'grand_children', GrandChildrenController.send(:find_inheritable_file, '_grandchild', :js)
112
+ assert_equal 'root', @controller.send(:find_inheritable_template_folder, 'grandchild', true)
113
+ assert_equal 'grand_children', @grand_controller.send(:find_inheritable_template_folder, 'grandchild', true)
114
114
 
115
- assert_equal({:js => { '_grandchild' => {nil => 'root'}}}, ChildrenController.inheritable_cache)
116
- assert_equal({:js => { '_grandchild' => {nil => 'grand_children'}}}, GrandChildrenController.inheritable_cache)
115
+ assert_equal({:js => { true => {'grandchild' => {nil => 'root'}}}}, ChildrenController.send(:inheritable_cache))
116
+ assert_equal({:js => { true => {'grandchild' => {nil => 'grand_children'}}}}, GrandChildrenController.send(:inheritable_cache))
117
117
  end
118
118
 
119
119
  test "find inheritable file for xml format" do
120
120
  touch("root/_grandchild.xml.builder")
121
121
  touch("grand_children/_grandchild.xml.builder")
122
122
 
123
- assert_equal 'root', ChildrenController.send(:find_inheritable_file, '_grandchild', :xml)
124
- assert_equal 'grand_children', GrandChildrenController.send(:find_inheritable_file, '_grandchild', :xml)
123
+ assert_equal 'root', @controller.send(:find_inheritable_template_folder, 'grandchild', true)
124
+ assert_equal 'grand_children', @grand_controller.send(:find_inheritable_template_folder, 'grandchild', true)
125
125
  end
126
126
 
127
127
  test "find inheritable file all overwritten" do
@@ -129,33 +129,25 @@ class RenderInheritableTest < ActiveSupport::TestCase
129
129
  touch("children/all.rhtml")
130
130
  touch("grand_children/all.html.erb")
131
131
 
132
- assert_equal 'children', ChildrenController.send(:find_inheritable_file, 'all')
133
- assert_equal 'grand_children', GrandChildrenController.send(:find_inheritable_file, 'all')
132
+ assert_equal 'children', @controller.send(:find_inheritable_template_folder, 'all')
133
+ assert_equal 'grand_children', @grand_controller.send(:find_inheritable_template_folder, 'all')
134
134
 
135
- assert_equal({:html => { 'all' => {nil => 'children'}}}, ChildrenController.inheritable_cache)
136
- assert_equal({:html => { 'all' => {nil => 'grand_children'}}}, GrandChildrenController.inheritable_cache)
135
+ assert_equal({:html => { false => { 'all' => {nil => 'children'}}}}, ChildrenController.send(:inheritable_cache))
136
+ assert_equal({:html => { false => { 'all' => {nil => 'grand_children'}}}}, GrandChildrenController.send(:inheritable_cache))
137
137
 
138
- assert_equal 'children', ChildrenController.send(:find_inheritable_file, 'all')
139
- assert_equal 'grand_children', GrandChildrenController.send(:find_inheritable_file, 'all')
138
+ assert_equal 'children', @controller.send(:find_inheritable_template_folder, 'all')
139
+ assert_equal 'grand_children', @grand_controller.send(:find_inheritable_template_folder, 'all')
140
140
 
141
- assert_equal({:html => { 'all' => {nil => 'children'}}}, ChildrenController.inheritable_cache)
142
- assert_equal({:html => { 'all' => {nil => 'grand_children'}}}, GrandChildrenController.inheritable_cache)
141
+ assert_equal({:html => { false => { 'all' => {nil => 'children'}}}}, ChildrenController.send(:inheritable_cache))
142
+ assert_equal({:html => { false => { 'all' => {nil => 'grand_children'}}}}, GrandChildrenController.send(:inheritable_cache))
143
143
  end
144
-
145
-
146
144
 
147
145
  private
148
146
 
149
147
  def touch(file)
150
- #File.touch_template(file)
151
148
  f = File.join(TEST_VIEW_PATH, file)
152
149
  FileUtils.mkdir_p(File.dirname(f))
153
150
  FileUtils.touch(f)
154
-
155
- RootController.view_paths.last.instance_variable_set(:@loaded, false)
156
- RootController.view_paths.last.load!
157
151
  end
158
152
 
159
-
160
-
161
153
  end
@@ -3,66 +3,66 @@ require 'crud_test_model'
3
3
 
4
4
  class StandardHelperTest < ActionView::TestCase
5
5
 
6
- include StandardHelper
6
+ include StandardHelper
7
7
  include CrudTestHelper
8
8
 
9
9
  setup :reset_db, :setup_db, :create_test_data
10
10
  teardown :reset_db
11
-
11
+
12
12
  def format_size(obj)
13
13
  "#{f(obj.size)} chars"
14
14
  end
15
15
 
16
- test "labeled text as block" do
17
- result = labeled("label") { "value" }
18
-
19
- assert_dom_equal "<div class='labeled'><div class='caption'>label</div><div class='value'>value</div></div>", result
16
+ test "labeled text as block" do
17
+ result = labeled("label") { "value" }
18
+
19
+ assert_dom_equal "<div class='labeled'> <div class='caption'>label</div> <div class='value'>value</div> </div>", result.squish
20
20
  end
21
21
 
22
22
  test "labeled text empty" do
23
23
  result = labeled("label", "")
24
24
 
25
- assert_dom_equal "<div class='labeled'><div class='caption'>label</div><div class='value'>#{EMPTY_STRING}</div></div>", result
25
+ assert_dom_equal "<div class='labeled'> <div class='caption'>label</div> <div class='value'>#{EMPTY_STRING}</div> </div>", result.squish
26
26
  end
27
27
 
28
28
  test "labeled text as content" do
29
29
  result = labeled("label", "value")
30
30
 
31
- assert_dom_equal "<div class='labeled'><div class='caption'>label</div><div class='value'>value</div></div>", result
31
+ assert_dom_equal "<div class='labeled'> <div class='caption'>label</div> <div class='value'>value</div> </div>", result.squish
32
32
  end
33
33
 
34
- test "alternate row" do
35
- result_1 = tr_alt { "(test row content)" }
36
- result_2 = tr_alt { "(test row content)" }
34
+ test "alternate row" do
35
+ result_1 = tr_alt { "(test row content)" }
36
+ result_2 = tr_alt { "(test row content)" }
37
37
 
38
- assert_dom_equal "<tr class='even'>(test row content)</tr>", result_1
39
- assert_dom_equal "<tr class='odd'>(test row content)</tr>", result_2
40
- end
41
-
42
- test "format Fixnums" do
43
- assert_equal "0", f(0)
44
- assert_equal "10", f(10)
38
+ assert_dom_equal "<tr class='even'>(test row content)</tr>", result_1
39
+ assert_dom_equal "<tr class='odd'>(test row content)</tr>", result_2
40
+ end
41
+
42
+ test "format Fixnums" do
43
+ assert_equal "0", f(0)
44
+ assert_equal "10", f(10)
45
45
  assert_equal "10,000,000", f(10000000)
46
- end
47
-
48
- test "format Floats" do
49
- assert_equal "1.00", f(1.0)
50
- assert_equal "1.20", f(1.2)
51
- assert_equal "3.14", f(3.14159)
52
- end
53
-
54
- test "format Booleans" do
55
- assert_equal "yes", f(true)
56
- assert_equal "no", f(false)
57
- end
58
-
59
- test "format nil" do
60
- assert_equal EMPTY_STRING, f(nil)
61
- end
62
-
63
- test "format Strings" do
64
- assert_equal "blah blah", f("blah blah")
65
- assert_equal "&lt;injection&gt;", f("<injection>")
46
+ end
47
+
48
+ test "format Floats" do
49
+ assert_equal "1.00", f(1.0)
50
+ assert_equal "1.20", f(1.2)
51
+ assert_equal "3.14", f(3.14159)
52
+ end
53
+
54
+ test "format Booleans" do
55
+ assert_equal "yes", f(true)
56
+ assert_equal "no", f(false)
57
+ end
58
+
59
+ test "format nil" do
60
+ assert_equal EMPTY_STRING, f(nil)
61
+ end
62
+
63
+ test "format Strings" do
64
+ assert_equal "blah blah", f("blah blah")
65
+ assert_equal "&lt;injection&gt;", f("<injection>")
66
66
  end
67
67
 
68
68
  test "format attr with fallthrough to f" do
@@ -101,7 +101,7 @@ class StandardHelperTest < ActionView::TestCase
101
101
  m.rating = 3.145
102
102
  assert_equal '3.15', format_type(m, :rating)
103
103
  end
104
-
104
+
105
105
  test "format decimal column" do
106
106
  m = crud_test_models(:AAAAA)
107
107
  assert_equal '10000000.10', format_type(m, :income)
@@ -117,29 +117,37 @@ class StandardHelperTest < ActionView::TestCase
117
117
  assert_equal "<p>AAAAA AAAAA AAAAA\n<br />AAAAA AAAAA AAAAA\n<br />AAAAA AAAAA AAAAA\n</p>", format_type(m, :remarks)
118
118
  end
119
119
 
120
- test "empty table should render message" do
121
- assert_dom_equal "<div class='list'>#{NO_LIST_ENTRIES_MESSAGE}</div>", table([]) { }
122
- end
123
-
120
+ test "empty table should render message" do
121
+ assert_dom_equal "<div class='list'>#{NO_LIST_ENTRIES_MESSAGE}</div>", table([]) { }
122
+ end
123
+
124
124
  test "non empty table should render table" do
125
125
  assert_match(/^\<table.*\<\/table\>$/, table(['foo', 'bar']) {|t| t.attrs :size, :upcase })
126
126
  end
127
127
 
128
+ test "table with attrs" do
129
+ expected = StandardTableBuilder.table(['foo', 'bar'], self) { |t| t.attrs :size, :upcase }
130
+ actual = table(['foo', 'bar'], :size, :upcase)
131
+ assert_equal expected, actual
132
+ end
133
+
128
134
  test "captionize" do
129
135
  assert_equal "Camel Case", captionize(:camel_case)
130
136
  assert_equal "All Upper Case", captionize("all upper case")
131
137
  assert_equal "With Object", captionize("With object", Object.new)
132
138
  end
133
-
139
+
134
140
  test "standard form for existing entry" do
135
141
  e = crud_test_models('AAAAA')
136
- f = capture { standard_form(e, [:name, :children, :birthdate, :human], :class => 'special') }
137
-
142
+ f = with_test_routing do
143
+ f = capture { standard_form(e, [:name, :children, :birthdate, :human], :class => 'special') }
144
+ end
145
+
138
146
  assert_match /form .*?action="\/crud_test_models\/#{e.id}" .*?method="post"/, f
139
147
  assert_match /input .*?name="_method" .*?type="hidden" .*?value="put"/, f
140
148
  assert_match /input .*?name="crud_test_model\[name\]" .*?type="text" .*?value="AAAAA"/, f
141
149
  assert_match /select .*?name="crud_test_model\[birthdate\(1i\)\]"/, f
142
- assert_match /option selected="selected" value="1910">1910<\/option>/, f
150
+ assert_match /option selected="selected" value="1910">1910<\/option>/, f
143
151
  assert_match /option selected="selected" value="1">January<\/option>/, f
144
152
  assert_match /option selected="selected" value="1">1<\/option>/, f
145
153
  assert_match /input .*?name="crud_test_model\[children\]" .*?type="text" .*?value=\"1\"/, f
@@ -147,10 +155,13 @@ class StandardHelperTest < ActionView::TestCase
147
155
  assert_match /input .*?type="submit" .*?value="Save"/, f
148
156
  end
149
157
 
158
+
150
159
  test "standard form for new entry" do
151
160
  e = CrudTestModel.new
152
- f = capture { standard_form(e, [:name, :children, :birthdate, :human], :class => 'special') }
153
-
161
+ f = with_test_routing do
162
+ f = capture { standard_form(e, [:name, :children, :birthdate, :human], :class => 'special') }
163
+ end
164
+
154
165
  assert_match /form .*?action="\/crud_test_models" .*?method="post"/, f
155
166
  assert_match /input .*?name="crud_test_model\[name\]" .*?type="text"/, f
156
167
  assert_no_match /input .*?name="crud_test_model\[name\]" .*?type="text" .*?value=/, f
@@ -164,13 +175,15 @@ class StandardHelperTest < ActionView::TestCase
164
175
  e = crud_test_models('AAAAA')
165
176
  e.name = nil
166
177
  assert !e.valid?
167
-
168
- f = capture { standard_form(e, [:name, :children, :birthdate, :human], :class => 'special') }
169
178
 
179
+ f = with_test_routing do
180
+ f = capture { standard_form(e, [:name, :children, :birthdate, :human], :class => 'special') }
181
+ end
182
+
170
183
  assert_match /form .*?action="\/crud_test_models\/#{e.id}" .*?method="post"/, f
171
184
  assert_match /input .*?name="_method" .*?type="hidden" .*?value="put"/, f
172
- assert_match /div class="errorExplanation"/, f
173
- assert_match /div class="fieldWithErrors"\>.*?\<input .*?name="crud_test_model\[name\]" .*?type="text"/, f
185
+ assert_match /div id="error_explanation"/, f
186
+ assert_match /div class="field_with_errors"\>.*?\<input .*?name="crud_test_model\[name\]" .*?type="text"/, f
174
187
  assert_match /select .*?name="crud_test_model\[birthdate\(1i\)\]"/, f
175
188
  assert_match /option selected="selected" value="1910">1910<\/option>/, f
176
189
  assert_match /option selected="selected" value="1">January<\/option>/, f
@@ -180,4 +193,13 @@ class StandardHelperTest < ActionView::TestCase
180
193
  assert_match /input .*?type="submit" .*?value="Save"/, f
181
194
  end
182
195
 
183
- end
196
+ private
197
+
198
+ def with_test_routing
199
+ with_routing do |set|
200
+ set.draw { resources :crud_test_models }
201
+ yield
202
+ end
203
+ end
204
+
205
+ end
@@ -54,46 +54,48 @@ class StandardTableBuilderTest < ActionView::TestCase
54
54
 
55
55
  assert_equal "4 chars", col.content("abcd")
56
56
  end
57
-
58
- test "two x two table" do
59
- dom = <<-FIN
60
- <table class="list">
61
- <tr><th>Upcase</th><th>Size</th></tr>
62
- <tr class="even"><td>FOO</td><td>3 chars</td></tr>
63
- <tr class="odd"><td>BAHR</td><td>4 chars</td></tr>
64
- </table>
65
- FIN
57
+
58
+ test "two x two table" do
59
+ dom = <<-FIN
60
+ <table class="list">
61
+ <tr><th>Upcase</th><th>Size</th></tr>
62
+ <tr class="even"><td>FOO</td><td>3 chars</td></tr>
63
+ <tr class="odd"><td>BAHR</td><td>4 chars</td></tr>
64
+ </table>
65
+ FIN
66
+ dom.gsub!(/[\n\t]/, "").gsub!(/\s{2,}/, "")
66
67
 
67
68
  table.attrs :upcase, :size
68
69
 
69
- assert_dom_equal dom, table.to_html
70
- end
71
-
72
- test "table with before and after cells" do
73
- dom = <<-FIN
74
- <table class="list">
75
- <tr><th>head</th><th>Upcase</th><th>Size</th><th></th></tr>
76
- <tr class="even">
77
- <td class='left'><a href='/'>foo</a></td>
78
- <td>FOO</td>
79
- <td>3 chars</td>
80
- <td>Never foo</td>
81
- </tr>
82
- <tr class="odd">
83
- <td class='left'><a href='/'>bahr</a></td>
84
- <td>BAHR</td>
85
- <td>4 chars</td>
86
- <td>Never bahr</td>
87
- </tr>
88
- </table>
89
- FIN
90
-
91
- table.col('head', :class => 'left') { |e| link_to e, "/" }
92
- table.attrs :upcase, :size
93
- table.col { |e| "Never #{e}" }
94
-
95
- assert_dom_equal dom, table.to_html
96
- end
97
-
98
-
99
- end
70
+ assert_dom_equal dom, table.to_html
71
+ end
72
+
73
+ test "table with before and after cells" do
74
+ dom = <<-FIN
75
+ <table class="list">
76
+ <tr><th>head</th><th>Upcase</th><th>Size</th><th></th></tr>
77
+ <tr class="even">
78
+ <td class='left'><a href='/'>foo</a></td>
79
+ <td>FOO</td>
80
+ <td>3 chars</td>
81
+ <td>Never foo</td>
82
+ </tr>
83
+ <tr class="odd">
84
+ <td class='left'><a href='/'>bahr</a></td>
85
+ <td>BAHR</td>
86
+ <td>4 chars</td>
87
+ <td>Never bahr</td>
88
+ </tr>
89
+ </table>
90
+ FIN
91
+ dom.gsub!(/[\n\t]/, "").gsub!(/\s{2,}/, "")
92
+
93
+ table.col('head', :class => 'left') { |e| link_to e, "/" }
94
+ table.attrs :upcase, :size
95
+ table.col { |e| "Never #{e}" }
96
+
97
+
98
+ assert_dom_equal dom, table.to_html
99
+ end
100
+
101
+ end
@@ -1 +1 @@
1
- page.replace_html(:response, render_inheritable(:partial => 'hello'))
1
+ page.replace_html(:response, :partial => 'hello')
@@ -1,9 +1,9 @@
1
1
  <% @title = "Listing #{models_label}" -%>
2
2
 
3
- <%= render_inheritable :partial => 'list' %>
3
+ <%= render :partial => 'list' %>
4
4
 
5
5
  <br/>
6
6
 
7
7
  <%= link_action_add %>
8
- <%= link_to_remote 'Ajahx', :url => {:action => 'ajax'}, :method => :get %>
8
+ <%= link_to 'Ajahx', {:action => 'ajax'}, :method => :get, :remote => true %>
9
9
  <div id="response"></div>
@@ -1,4 +1,4 @@
1
- <% crud_form do |f| -%>
1
+ <%= crud_form do |f| -%>
2
2
  <%= f.labeled_input_field :name %>
3
3
  <%= f.labeled_collection_select(:country_code, ['BR', 'CH', 'DE', 'GB', 'JP', 'USA'], :to_s, :to_s, { :include_blank => "Please select" })%>
4
4
  <% end -%>
@@ -1,5 +1,4 @@
1
- <%= crud_table do |t|
2
- t.attrs :name, :country_code
1
+ <%= crud_table :name, :country_code do |t|
3
2
  t.col {|e| link_action_edit(e) }
4
3
  t.col {|e| link_action_destroy(e) }
5
4
  end %>
@@ -1,11 +1,20 @@
1
- ActionController::Routing::Routes.draw do |map|
1
+ TestApp::Application.routes.draw do
2
2
 
3
- map.resources :cities, :new => {:ajax => :get}
4
- map.resources :people, :new => {:ajax => :get}
3
+ resources :cities do
4
+ collection do
5
+ get :ajax
6
+ end
7
+ end
8
+
9
+ resources :people do
10
+ collection do
11
+ get :ajax
12
+ end
13
+ end
5
14
 
6
15
  # Install the default routes as the lowest priority.
7
16
  # Note: These default routes make all actions in every controller accessible via GET requests. You should
8
17
  # consider removing or commenting them out if you're using named routes and resources.
9
- map.connect ':controller/:action/:id'
10
- map.connect ':controller/:action/:id.:format'
18
+ #map.connect ':controller/:action/:id.:format'
19
+ #map.connect ':controller/:action/:id'
11
20
  end