dry_crud 1.7.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +1 -1
  3. data/README.rdoc +126 -87
  4. data/VERSION +1 -1
  5. data/lib/generators/dry_crud/dry_crud_generator.rb +42 -22
  6. data/lib/generators/dry_crud/templates/INSTALL +5 -5
  7. data/lib/generators/dry_crud/templates/app/assets/stylesheets/crud.scss +0 -20
  8. data/lib/generators/dry_crud/templates/app/assets/stylesheets/sample.scss +24 -4
  9. data/lib/generators/dry_crud/templates/app/controllers/crud/generic_model.rb +89 -0
  10. data/lib/generators/dry_crud/templates/app/controllers/crud/nestable.rb +70 -0
  11. data/lib/generators/dry_crud/templates/app/controllers/crud/rememberable.rb +64 -0
  12. data/lib/generators/dry_crud/templates/app/controllers/crud/render_callbacks.rb +46 -0
  13. data/lib/generators/dry_crud/templates/app/controllers/crud/responder.rb +31 -0
  14. data/lib/generators/dry_crud/templates/app/controllers/crud/searchable.rb +55 -0
  15. data/lib/generators/dry_crud/templates/app/controllers/crud/sortable.rb +63 -0
  16. data/lib/generators/dry_crud/templates/app/controllers/crud_controller.rb +66 -69
  17. data/lib/generators/dry_crud/templates/app/controllers/list_controller.rb +23 -326
  18. data/lib/generators/dry_crud/templates/app/helpers/actions_helper.rb +64 -0
  19. data/lib/generators/dry_crud/templates/app/helpers/crud/form_builder.rb +331 -0
  20. data/lib/generators/dry_crud/templates/app/helpers/crud/table_builder.rb +280 -0
  21. data/lib/generators/dry_crud/templates/app/helpers/form_helper.rb +52 -0
  22. data/lib/generators/dry_crud/templates/app/helpers/format_helper.rb +164 -0
  23. data/lib/generators/dry_crud/templates/app/helpers/i18n_helper.rb +85 -0
  24. data/lib/generators/dry_crud/templates/app/helpers/table_helper.rb +83 -0
  25. data/lib/generators/dry_crud/templates/app/helpers/utility_helper.rb +84 -0
  26. data/lib/generators/dry_crud/templates/app/views/crud/_actions_edit.html.erb +3 -3
  27. data/lib/generators/dry_crud/templates/app/views/crud/_actions_edit.html.haml +3 -3
  28. data/lib/generators/dry_crud/templates/app/views/crud/_actions_index.html.erb +1 -1
  29. data/lib/generators/dry_crud/templates/app/views/crud/_actions_index.html.haml +1 -1
  30. data/lib/generators/dry_crud/templates/app/views/crud/_actions_show.html.erb +3 -3
  31. data/lib/generators/dry_crud/templates/app/views/crud/_actions_show.html.haml +3 -3
  32. data/lib/generators/dry_crud/templates/app/views/crud/_attrs.html.erb +1 -1
  33. data/lib/generators/dry_crud/templates/app/views/crud/_attrs.html.haml +1 -1
  34. data/lib/generators/dry_crud/templates/app/views/crud/_form.html.erb +1 -1
  35. data/lib/generators/dry_crud/templates/app/views/crud/_form.html.haml +1 -1
  36. data/lib/generators/dry_crud/templates/app/views/crud/edit.html.erb +1 -1
  37. data/lib/generators/dry_crud/templates/app/views/crud/edit.html.haml +1 -1
  38. data/lib/generators/dry_crud/templates/app/views/crud/new.html.erb +2 -2
  39. data/lib/generators/dry_crud/templates/app/views/crud/new.html.haml +2 -2
  40. data/lib/generators/dry_crud/templates/app/views/crud/show.html.erb +1 -1
  41. data/lib/generators/dry_crud/templates/app/views/crud/show.html.haml +1 -1
  42. data/lib/generators/dry_crud/templates/app/views/layouts/_flash.html.haml +1 -1
  43. data/lib/generators/dry_crud/templates/app/views/layouts/_nav.html.erb +1 -1
  44. data/lib/generators/dry_crud/templates/app/views/layouts/_nav.html.haml +1 -1
  45. data/lib/generators/dry_crud/templates/app/views/layouts/crud.html.erb +15 -7
  46. data/lib/generators/dry_crud/templates/app/views/layouts/crud.html.haml +18 -8
  47. data/lib/generators/dry_crud/templates/app/views/list/_search.html.erb +3 -3
  48. data/lib/generators/dry_crud/templates/app/views/list/_search.html.haml +3 -3
  49. data/lib/generators/dry_crud/templates/app/views/list/index.html.erb +1 -1
  50. data/lib/generators/dry_crud/templates/app/views/list/index.html.haml +1 -1
  51. data/lib/generators/dry_crud/templates/app/views/shared/_error_messages.html.erb +1 -1
  52. data/lib/generators/dry_crud/templates/app/views/shared/_error_messages.html.haml +1 -1
  53. data/lib/generators/dry_crud/templates/app/views/shared/_labeled.html.erb +2 -4
  54. data/lib/generators/dry_crud/templates/app/views/shared/_labeled.html.haml +2 -3
  55. data/lib/generators/dry_crud/templates/config/initializers/field_error_proc.rb +5 -1
  56. data/lib/generators/dry_crud/templates/config/locales/crud.de.yml +64 -0
  57. data/lib/generators/dry_crud/templates/config/locales/{en_crud.yml → crud.en.yml} +2 -2
  58. data/lib/generators/dry_crud/templates/spec/controllers/crud_test_models_controller_spec.rb +241 -231
  59. data/lib/generators/dry_crud/templates/spec/helpers/crud/form_builder_spec.rb +226 -0
  60. data/lib/generators/dry_crud/templates/spec/helpers/{standard_table_builder_spec.rb → crud/table_builder_spec.rb} +36 -34
  61. data/lib/generators/dry_crud/templates/spec/helpers/form_helper_spec.rb +238 -0
  62. data/lib/generators/dry_crud/templates/spec/helpers/format_helper_spec.rb +244 -0
  63. data/lib/generators/dry_crud/templates/spec/helpers/i18n_helper_spec.rb +132 -0
  64. data/lib/generators/dry_crud/templates/spec/helpers/table_helper_spec.rb +265 -0
  65. data/lib/generators/dry_crud/templates/spec/helpers/utility_helper_spec.rb +74 -0
  66. data/lib/generators/dry_crud/templates/spec/support/crud_controller_examples.rb +185 -100
  67. data/lib/generators/dry_crud/templates/spec/support/crud_controller_test_helper.rb +58 -49
  68. data/lib/generators/dry_crud/templates/test/{functional → controllers}/crud_test_models_controller_test.rb +112 -91
  69. data/lib/generators/dry_crud/templates/test/{unit/helpers/standard_form_builder_test.rb → helpers/crud/form_builder_test.rb} +79 -62
  70. data/lib/generators/dry_crud/templates/test/{unit/helpers/standard_table_builder_test.rb → helpers/crud/table_builder_test.rb} +31 -28
  71. data/lib/generators/dry_crud/templates/test/helpers/custom_assertions_test.rb +85 -0
  72. data/lib/generators/dry_crud/templates/test/helpers/form_helper_test.rb +129 -0
  73. data/lib/generators/dry_crud/templates/test/helpers/format_helper_test.rb +163 -0
  74. data/lib/generators/dry_crud/templates/test/helpers/i18n_helper_test.rb +79 -0
  75. data/lib/generators/dry_crud/templates/test/helpers/table_helper_test.rb +217 -0
  76. data/lib/generators/dry_crud/templates/test/helpers/utility_helper_test.rb +63 -0
  77. data/lib/generators/dry_crud/templates/test/{functional → support}/crud_controller_test_helper.rb +70 -59
  78. data/lib/generators/dry_crud/templates/test/{crud_test_model.rb → support/crud_test_model.rb} +107 -75
  79. data/lib/generators/dry_crud/templates/test/support/custom_assertions.rb +83 -0
  80. metadata +83 -146
  81. data/Rakefile +0 -211
  82. data/lib/generators/dry_crud/templates/app/helpers/crud_helper.rb +0 -168
  83. data/lib/generators/dry_crud/templates/app/helpers/list_helper.rb +0 -27
  84. data/lib/generators/dry_crud/templates/app/helpers/standard_form_builder.rb +0 -261
  85. data/lib/generators/dry_crud/templates/app/helpers/standard_helper.rb +0 -304
  86. data/lib/generators/dry_crud/templates/app/helpers/standard_table_builder.rb +0 -178
  87. data/lib/generators/dry_crud/templates/spec/helpers/crud_helper_spec.rb +0 -146
  88. data/lib/generators/dry_crud/templates/spec/helpers/list_helper_spec.rb +0 -154
  89. data/lib/generators/dry_crud/templates/spec/helpers/standard_form_builder_spec.rb +0 -215
  90. data/lib/generators/dry_crud/templates/spec/helpers/standard_helper_spec.rb +0 -387
  91. data/lib/generators/dry_crud/templates/test/custom_assertions.rb +0 -78
  92. data/lib/generators/dry_crud/templates/test/unit/custom_assertions_test.rb +0 -117
  93. data/lib/generators/dry_crud/templates/test/unit/helpers/crud_helper_test.rb +0 -111
  94. data/lib/generators/dry_crud/templates/test/unit/helpers/list_helper_test.rb +0 -123
  95. data/lib/generators/dry_crud/templates/test/unit/helpers/standard_helper_test.rb +0 -281
  96. data/test/templates/Gemfile +0 -46
  97. data/test/templates/app/controllers/admin/cities_controller.rb +0 -7
  98. data/test/templates/app/controllers/admin/countries_controller.rb +0 -13
  99. data/test/templates/app/controllers/ajax_controller.rb +0 -9
  100. data/test/templates/app/controllers/people_controller.rb +0 -13
  101. data/test/templates/app/controllers/vips_controller.rb +0 -19
  102. data/test/templates/app/helpers/cities_helper.rb +0 -9
  103. data/test/templates/app/helpers/people_helper.rb +0 -8
  104. data/test/templates/app/models/city.rb +0 -28
  105. data/test/templates/app/models/country.rb +0 -16
  106. data/test/templates/app/models/person.rb +0 -12
  107. data/test/templates/app/views/admin/cities/_actions_index.html.erb +0 -2
  108. data/test/templates/app/views/admin/cities/_actions_index.html.haml +0 -2
  109. data/test/templates/app/views/admin/cities/_attrs.html.erb +0 -1
  110. data/test/templates/app/views/admin/cities/_attrs.html.haml +0 -1
  111. data/test/templates/app/views/admin/cities/_form.html.erb +0 -7
  112. data/test/templates/app/views/admin/cities/_form.html.haml +0 -5
  113. data/test/templates/app/views/admin/cities/_hello.html.erb +0 -1
  114. data/test/templates/app/views/admin/cities/_hello.html.haml +0 -1
  115. data/test/templates/app/views/admin/cities/_list.html.erb +0 -3
  116. data/test/templates/app/views/admin/cities/_list.html.haml +0 -3
  117. data/test/templates/app/views/admin/countries/_list.html.erb +0 -4
  118. data/test/templates/app/views/admin/countries/_list.html.haml +0 -3
  119. data/test/templates/app/views/ajax/_actions_index.html.erb +0 -8
  120. data/test/templates/app/views/ajax/_actions_index.html.haml +0 -8
  121. data/test/templates/app/views/ajax/_actions_show.html.erb +0 -4
  122. data/test/templates/app/views/ajax/_actions_show.html.haml +0 -4
  123. data/test/templates/app/views/ajax/_form.html.erb +0 -2
  124. data/test/templates/app/views/ajax/_form.html.haml +0 -2
  125. data/test/templates/app/views/ajax/_hello.html.erb +0 -1
  126. data/test/templates/app/views/ajax/_hello.html.haml +0 -1
  127. data/test/templates/app/views/ajax/ajax.js.erb +0 -1
  128. data/test/templates/app/views/ajax/ajax.js.haml +0 -1
  129. data/test/templates/app/views/ajax/edit.js.erb +0 -1
  130. data/test/templates/app/views/ajax/edit.js.haml +0 -1
  131. data/test/templates/app/views/ajax/show.js.erb +0 -1
  132. data/test/templates/app/views/ajax/show.js.haml +0 -1
  133. data/test/templates/app/views/ajax/update.js.erb +0 -5
  134. data/test/templates/app/views/ajax/update.js.haml +0 -5
  135. data/test/templates/app/views/layouts/_nav.html.erb +0 -6
  136. data/test/templates/app/views/layouts/_nav.html.haml +0 -5
  137. data/test/templates/app/views/layouts/bootstrap.html.erb +0 -68
  138. data/test/templates/app/views/layouts/bootstrap.html.haml +0 -49
  139. data/test/templates/app/views/people/_attrs.html.erb +0 -5
  140. data/test/templates/app/views/people/_attrs.html.haml +0 -4
  141. data/test/templates/app/views/people/_list.html.erb +0 -1
  142. data/test/templates/app/views/people/_list.html.haml +0 -1
  143. data/test/templates/config/database.yml +0 -21
  144. data/test/templates/config/locales/en_cities.yml +0 -56
  145. data/test/templates/config/routes.rb +0 -32
  146. data/test/templates/db/migrate/20100511174904_create_people_and_cities.rb +0 -26
  147. data/test/templates/db/seeds.rb +0 -74
  148. data/test/templates/spec/controllers/admin/cities_controller_spec.rb +0 -74
  149. data/test/templates/spec/controllers/admin/countries_controller_spec.rb +0 -56
  150. data/test/templates/spec/controllers/people_controller_spec.rb +0 -80
  151. data/test/templates/spec/routing/cities_routing_spec.rb +0 -11
  152. data/test/templates/spec/routing/countries_routing_spec.rb +0 -11
  153. data/test/templates/test/fixtures/cities.yml +0 -11
  154. data/test/templates/test/fixtures/countries.yml +0 -11
  155. data/test/templates/test/fixtures/people.yml +0 -14
  156. data/test/templates/test/functional/admin/cities_controller_test.rb +0 -59
  157. data/test/templates/test/functional/admin/countries_controller_test.rb +0 -42
  158. data/test/templates/test/functional/people_controller_test.rb +0 -68
@@ -1,12 +1,16 @@
1
+ # encoding: UTF-8
1
2
  require 'test_helper'
2
- require 'crud_test_model'
3
+ require 'support/crud_test_model'
3
4
 
4
- class StandardFormBuilderTest < ActionView::TestCase
5
+ # Test Crud::FormBuilder
6
+ class Crud::FormBuilderTest < ActionView::TestCase
5
7
 
8
+ include FormatHelper
9
+ include I18nHelper
6
10
  include CrudTestHelper
7
11
 
8
12
  # set dummy helper class for ActionView::TestCase
9
- self.helper_class = StandardHelper
13
+ self.helper_class = UtilityHelper
10
14
 
11
15
  attr_reader :form, :entry
12
16
 
@@ -15,206 +19,219 @@ class StandardFormBuilderTest < ActionView::TestCase
15
19
 
16
20
  def create_form
17
21
  @entry = CrudTestModel.first
18
- @form = StandardFormBuilder.new(:entry, @entry, self, {}, lambda {|form| form })
22
+ <% if Rails.version < '4.0' -%>
23
+ @form = Crud::FormBuilder.new(:entry, @entry, self, {},
24
+ ->(form) { form })
25
+ <% else -%>
26
+ @form = Crud::FormBuilder.new(:entry, @entry, self, {})
27
+ <% end -%>
19
28
  end
20
29
 
21
- test "input_field dispatches string attr to string_field" do
30
+ test 'input_field dispatches string attr to string_field' do
22
31
  assert_equal form.string_field(:name), form.input_field(:name)
23
32
  assert form.string_field(:name).html_safe?
24
33
  end
25
34
 
26
- test "input_field dispatches password attr to password_field" do
35
+ test 'input_field dispatches password attr to password_field' do
27
36
  assert_equal form.password_field(:password), form.input_field(:password)
28
37
  assert form.password_field(:name).html_safe?
29
38
  end
30
39
 
31
- test "input_field dispatches text attr to text_area" do
40
+ test 'input_field dispatches email attr to email_field' do
41
+ assert_equal form.email_field(:email), form.input_field(:email)
42
+ assert form.email_field(:name).html_safe?
43
+ end
44
+
45
+ test 'input_field dispatches text attr to text_area' do
32
46
  assert_equal form.text_area(:remarks), form.input_field(:remarks)
33
47
  assert form.text_area(:remarks).html_safe?
34
48
  end
35
49
 
36
- test "input_field dispatches integer attr to integer_field" do
50
+ test 'input_field dispatches integer attr to integer_field' do
37
51
  assert_equal form.integer_field(:children), form.input_field(:children)
38
52
  assert form.integer_field(:children).html_safe?
39
53
  end
40
54
 
41
- test "input_field dispatches boolean attr to boolean_field" do
55
+ test 'input_field dispatches boolean attr to boolean_field' do
42
56
  assert_equal form.boolean_field(:human), form.input_field(:human)
43
57
  assert form.boolean_field(:human).html_safe?
44
58
  end
45
59
 
46
- test "input_field dispatches date attr to date_field" do
60
+ test 'input_field dispatches date attr to date_field' do
47
61
  assert_equal form.date_field(:birthdate), form.input_field(:birthdate)
48
62
  assert form.date_field(:birthdate).html_safe?
49
63
  end
50
64
 
51
- test "input_field dispatches belongs_to attr to select field" do
52
- assert_equal form.belongs_to_field(:companion_id), form.input_field(:companion_id)
65
+ test 'input_field dispatches belongs_to attr to select field' do
66
+ assert_equal form.belongs_to_field(:companion_id),
67
+ form.input_field(:companion_id)
53
68
  assert form.belongs_to_field(:companion_id).html_safe?
54
69
  end
55
70
 
56
- test "input_field dispatches has_and_belongs_to_many attr to select field" do
71
+ test 'input_field dispatches has_and_belongs_to_many attr to select field' do
57
72
  assert_equal form.has_many_field(:other_ids), form.input_field(:other_ids)
58
73
  assert form.has_many_field(:other_ids).html_safe?
59
74
  end
60
75
 
61
- test "input_field dispatches has_many attr to select field" do
76
+ test 'input_field dispatches has_many attr to select field' do
62
77
  assert_equal form.has_many_field(:more_ids), form.input_field(:more_ids)
63
78
  assert form.has_many_field(:more_ids).html_safe?
64
79
  end
65
80
 
66
- test "input_fields concats multiple fields" do
81
+ test 'input_fields concats multiple fields' do
67
82
  result = form.labeled_input_fields(:name, :remarks, :children)
68
83
  assert result.html_safe?
69
- assert result.include?(form.input_field(:name))
84
+ assert result.include?(form.input_field(:name, required: 'required'))
70
85
  assert result.include?(form.input_field(:remarks))
71
86
  assert result.include?(form.input_field(:children))
72
87
  end
73
88
 
74
- test "labeld_input_field adds required mark" do
89
+ test 'labeld_input_field adds required mark' do
75
90
  result = form.labeled_input_field(:name)
76
- assert result.include?(StandardFormBuilder::REQUIRED_MARK)
91
+ assert result.include?(Crud::FormBuilder::REQUIRED_MARK)
77
92
  result = form.labeled_input_field(:remarks)
78
- assert !result.include?(StandardFormBuilder::REQUIRED_MARK)
93
+ assert !result.include?(Crud::FormBuilder::REQUIRED_MARK)
79
94
  end
80
95
 
81
- test "labeld_input_field adds help text" do
82
- result = form.labeled_input_field(:name, :help => 'Some Help')
96
+ test 'labeld_input_field adds help text' do
97
+ result = form.labeled_input_field(:name, help: 'Some Help')
83
98
  assert result.include?(form.help_block('Some Help'))
84
- assert result.include?(StandardFormBuilder::REQUIRED_MARK)
99
+ assert result.include?(Crud::FormBuilder::REQUIRED_MARK)
85
100
  end
86
101
 
87
- test "belongs_to_field has all options by default" do
102
+ test 'belongs_to_field has all options by default' do
88
103
  f = form.belongs_to_field(:companion_id)
89
104
  assert_equal 7, f.scan('</option>').size
90
105
  end
91
106
 
92
- test "belongs_to_field with :list option" do
107
+ test 'belongs_to_field with :list option' do
93
108
  list = CrudTestModel.all
94
- f = form.belongs_to_field(:companion_id, :list => [list.first, list.second])
109
+ f = form.belongs_to_field(:companion_id,
110
+ list: [list.first, list.second])
95
111
  assert_equal 3, f.scan('</option>').size
96
112
  end
97
113
 
98
- test "belongs_to_field with instance variable" do
114
+ test 'belongs_to_field with instance variable' do
99
115
  list = CrudTestModel.all
100
116
  @companions = [list.first, list.second]
101
117
  f = form.belongs_to_field(:companion_id)
102
118
  assert_equal 3, f.scan('</option>').size
103
119
  end
104
120
 
105
- test "belongs_to_field with empty list" do
121
+ test 'belongs_to_field with empty list' do
106
122
  @companions = []
107
123
  f = form.belongs_to_field(:companion_id)
108
- assert_match /none available/m, f
124
+ assert_match t('global.associations.none_available'), f
109
125
  assert_equal 0, f.scan('</option>').size
110
126
  end
111
127
 
112
- test "has_and_belongs_to_many_field has all options by default" do
128
+ test 'has_and_belongs_to_many_field has all options by default' do
113
129
  f = form.has_many_field(:other_ids)
114
130
  assert_equal 6, f.scan('</option>').size
115
131
  end
116
132
 
117
- test "has_and_belongs_to_many_field with :list option" do
133
+ test 'has_and_belongs_to_many_field with :list option' do
118
134
  list = OtherCrudTestModel.all
119
- f = form.has_many_field(:other_ids, :list => [list.first, list.second])
135
+ f = form.has_many_field(:other_ids, list: [list.first, list.second])
120
136
  assert_equal 2, f.scan('</option>').size
121
137
  end
122
138
 
123
- test "has_and_belongs_to_many_field with instance variable" do
139
+ test 'has_and_belongs_to_many_field with instance variable' do
124
140
  list = OtherCrudTestModel.all
125
141
  @others = [list.first, list.second]
126
142
  f = form.has_many_field(:other_ids)
127
143
  assert_equal 2, f.scan('</option>').size
128
144
  end
129
145
 
130
- test "has_and_belongs_to_many_field with empty list" do
146
+ test 'has_and_belongs_to_many_field with empty list' do
131
147
  @others = []
132
148
  f = form.has_many_field(:other_ids)
133
- assert_match /none available/m, f
149
+ assert_match t('global.associations.none_available'), f
134
150
  assert_equal 0, f.scan('</option>').size
135
151
  end
136
152
 
137
- test "has_many_field has all options by default" do
153
+ test 'has_many_field has all options by default' do
138
154
  f = form.has_many_field(:more_ids)
139
155
  assert_equal 6, f.scan('</option>').size
140
156
  end
141
157
 
142
- test "has_many_field with :list option" do
158
+ test 'has_many_field with :list option' do
143
159
  list = OtherCrudTestModel.all
144
- f = form.has_many_field(:more_ids, :list => [list.first, list.second])
160
+ f = form.has_many_field(:more_ids, list: [list.first, list.second])
145
161
  assert_equal 2, f.scan('</option>').size
146
162
  end
147
163
 
148
- test "has_many_field with instance variable" do
164
+ test 'has_many_field with instance variable' do
149
165
  list = OtherCrudTestModel.all
150
166
  @mores = [list.first, list.second]
151
167
  f = form.has_many_field(:more_ids)
152
168
  assert_equal 2, f.scan('</option>').size
153
169
  end
154
170
 
155
- test "has_many_field with empty list" do
171
+ test 'has_many_field with empty list' do
156
172
  @mores = []
157
173
  f = form.has_many_field(:more_ids)
158
- assert_match /none available/m, f
174
+ assert_match t('global.associations.none_available'), f
159
175
  assert_equal 0, f.scan('</option>').size
160
176
  end
161
177
 
162
- test "string_field sets maxlength attribute if limit" do
178
+ test 'string_field sets maxlength attribute if limit' do
163
179
  assert_match /maxlength="50"/, form.string_field(:name)
164
180
  end
165
181
 
166
- test "label creates captionized label" do
182
+ test 'label creates captionized label' do
167
183
  assert_match /label [^>]*for.+Gugus dada/, form.label(:gugus_dada)
168
184
  assert form.label(:gugus_dada).html_safe?
169
185
  end
170
186
 
171
- test "classic label still works" do
172
- assert_match /label [^>]*for.+hoho/, form.label(:gugus_dada, "hoho")
173
- assert form.label(:gugus_dada, "hoho").html_safe?
187
+ test 'classic label still works' do
188
+ assert_match /label [^>]*for.+hoho/, form.label(:gugus_dada, 'hoho')
189
+ assert form.label(:gugus_dada, 'hoho').html_safe?
174
190
  end
175
191
 
176
- test "labeled_text_field create label" do
192
+ test 'labeled_text_field create label' do
177
193
  assert_match /label [^>]*for.+input/m, form.labeled_string_field(:name)
178
194
  assert form.labeled_string_field(:name).html_safe?
179
195
  end
180
196
 
181
- test "labeled field creates label" do
182
- result = form.labeled("gugus", "<input type='text' name='gugus' />".html_safe)
197
+ test 'labeled field creates label' do
198
+ result = form.labeled('gugus',
199
+ "<input type='text' name='gugus' />".html_safe)
183
200
  assert result.html_safe?
184
201
  assert_match /label [^>]*for.+<input/m, result
185
202
  end
186
203
 
187
- test "labeled field creates label and block" do
188
- result = form.labeled("gugus") { "<input type='text' name='gugus' />".html_safe }
204
+ test 'labeled field creates label and block' do
205
+ result = form.labeled('gugus') do
206
+ "<input type='text' name='gugus' />".html_safe
207
+ end
189
208
  assert result.html_safe?
190
209
  assert_match /label [^>]*for.+<input/m, result
191
210
  end
192
211
 
193
- test "labeled field creates label with caption" do
194
- result = form.labeled("gugus", 'Caption', "<input type='text' name='gugus' />".html_safe)
212
+ test 'labeled field creates label with caption' do
213
+ result = form.labeled('gugus',
214
+ 'Caption',
215
+ "<input type='text' name='gugus' />".html_safe)
195
216
  assert result.html_safe?
196
217
  assert_match /label [^>]*for.+>Caption<\/label>.*<input/m, result
197
218
  end
198
219
 
199
- test "labeled field creates label with caption and block" do
200
- result = form.labeled("gugus", 'Caption') { "<input type='text' name='gugus' />".html_safe }
220
+ test 'labeled field creates label with caption and block' do
221
+ result = form.labeled('gugus', 'Caption') do
222
+ "<input type='text' name='gugus' />".html_safe
223
+ end
201
224
  assert result.html_safe?
202
225
  assert_match /label [^>]*for.+>Caption<\/label>.*<input/m, result
203
226
  end
204
227
 
205
- test "required mark is shown" do
206
- assert_equal StandardFormBuilder::REQUIRED_MARK, form.required_mark(:name)
207
- assert_equal "", form.required_mark(:rating)
208
- assert_equal "", form.required_mark(:anything)
209
- end
210
-
211
- test "method missing still works" do
228
+ test 'method missing still works' do
212
229
  assert_raise(NoMethodError) do
213
230
  form.blabla
214
231
  end
215
232
  end
216
233
 
217
- test "respond to still works" do
234
+ test 'respond to still works' do
218
235
  assert !form.respond_to?(:blalba)
219
236
  assert form.respond_to?(:text_field)
220
237
  assert form.respond_to?(:labeled_text_field)
@@ -1,22 +1,26 @@
1
+ # encoding: UTF-8
1
2
  require 'test_helper'
2
3
 
3
- class StandardTableBuilderTest < ActionView::TestCase
4
+ # Test Crud::TableBuilder
5
+ class Crud::TableBuilderTest < ActionView::TestCase
4
6
 
5
7
  # set dummy helper class for ActionView::TestCase
6
- self.helper_class = StandardHelper
8
+ self.helper_class = UtilityHelper
9
+
10
+ include FormatHelper
7
11
 
8
12
  attr_reader :table, :entries
9
13
 
10
14
  def setup
11
15
  @entries = %w(foo bahr)
12
- @table = StandardTableBuilder.new(entries, self)
16
+ @table = Crud::TableBuilder.new(entries, self)
13
17
  end
14
18
 
15
19
  def format_size(obj)
16
20
  "#{obj.size} chars"
17
21
  end
18
22
 
19
- test "html header" do
23
+ test 'html header' do
20
24
  table.attrs :upcase, :size
21
25
 
22
26
  dom = '<tr><th>Upcase</th><th>Size</th></tr>'
@@ -24,7 +28,7 @@ class StandardTableBuilderTest < ActionView::TestCase
24
28
  assert_dom_equal dom, table.send(:html_header)
25
29
  end
26
30
 
27
- test "single attr row" do
31
+ test 'single attr row' do
28
32
  table.attrs :upcase, :size
29
33
 
30
34
  dom = '<tr><td>FOO</td><td>3 chars</td></tr>'
@@ -32,33 +36,33 @@ class StandardTableBuilderTest < ActionView::TestCase
32
36
  assert_dom_equal dom, table.send(:html_row, entries.first)
33
37
  end
34
38
 
35
- test "custom row" do
36
- table.col("Header", :class => 'hula') {|e| "Weights #{e.size} kg" }
39
+ test 'custom row' do
40
+ table.col('Header', class: 'hula') { |e| "Weights #{e.size} kg" }
37
41
 
38
42
  dom = '<tr><td class="hula">Weights 3 kg</td></tr>'
39
43
 
40
44
  assert_dom_equal dom, table.send(:html_row, entries.first)
41
45
  end
42
46
 
43
- test "attr col output" do
47
+ test 'attr col output' do
44
48
  table.attrs :upcase
45
49
  col = table.cols.first
46
50
 
47
- assert_equal "<th>Upcase</th>", col.html_header
48
- assert_equal "FOO", col.content("foo")
49
- assert_equal "<td>FOO</td>", col.html_cell("foo")
51
+ assert_equal '<th>Upcase</th>', col.html_header
52
+ assert_equal 'FOO', col.content('foo')
53
+ assert_equal '<td>FOO</td>', col.html_cell('foo')
50
54
  end
51
55
 
52
- test "attr col content with custom format_size method" do
56
+ test 'attr col content with custom format_size method' do
53
57
  table.attrs :size
54
58
  col = table.cols.first
55
59
 
56
- assert_equal "4 chars", col.content("abcd")
60
+ assert_equal '4 chars', col.content('abcd')
57
61
  end
58
62
 
59
- test "two x two table" do
63
+ test 'two x two table' do
60
64
  dom = <<-FIN
61
- <table class="table">
65
+ <table>
62
66
  <thead>
63
67
  <tr><th>Upcase</th><th>Size</th></tr>
64
68
  </thead>
@@ -68,18 +72,18 @@ class StandardTableBuilderTest < ActionView::TestCase
68
72
  </tbody>
69
73
  </table>
70
74
  FIN
71
- dom.gsub!(/[\n\t]/, "").gsub!(/\s{2,}/, "")
75
+ dom.gsub!(/[\n\t]/, '').gsub!(/\s{2,}/, '')
72
76
 
73
77
  table.attrs :upcase, :size
74
78
 
75
79
  assert_dom_equal dom, table.to_html
76
80
  end
77
81
 
78
- test "table with before and after cells" do
82
+ test 'table with before and after cells' do
79
83
  dom = <<-FIN
80
- <table class="table">
84
+ <table>
81
85
  <thead>
82
- <tr><th>head</th><th>Upcase</th><th>Size</th><th></th></tr>
86
+ <tr><th class='left'>head</th><th>Upcase</th><th>Size</th><th></th></tr>
83
87
  </thead>
84
88
  <tbody>
85
89
  <tr>
@@ -97,30 +101,29 @@ class StandardTableBuilderTest < ActionView::TestCase
97
101
  </tbody>
98
102
  </table>
99
103
  FIN
100
- dom.gsub!(/[\n\t]/, "").gsub!(/\s{2,}/, "")
104
+ dom.gsub!(/[\n\t]/, '').gsub!(/\s{2,}/, '')
101
105
 
102
- table.col('head', :class => 'left') { |e| link_to e, "/" }
106
+ table.col('head', class: 'left') { |e| link_to e, '/' }
103
107
  table.attrs :upcase, :size
104
108
  table.col { |e| "Never #{e}" }
105
109
 
106
-
107
110
  assert_dom_equal dom, table.to_html
108
111
  end
109
112
 
110
- test "empty entries collection renders empty table" do
113
+ test 'empty entries collection renders empty table' do
111
114
  dom = <<-FIN
112
- <table class="table">
115
+ <table>
113
116
  <thead>
114
- <tr><th>head</th><th>Upcase</th><th>Size</th><th></th></tr>
117
+ <tr><th class='left'>head</th><th>Upcase</th><th>Size</th><th></th></tr>
115
118
  </thead>
116
119
  <tbody>
117
120
  </tbody>
118
121
  </table>
119
122
  FIN
120
- dom.gsub!(/[\n\t]/, "").gsub!(/\s{2,}/, "")
123
+ dom.gsub!(/[\n\t]/, '').gsub!(/\s{2,}/, '')
121
124
 
122
- table = StandardTableBuilder.new([], self)
123
- table.col('head', :class => 'left') { |e| link_to e, "/" }
125
+ table = Crud::TableBuilder.new([], self)
126
+ table.col('head', class: 'left') { |e| link_to e, '/' }
124
127
  table.attrs :upcase, :size
125
128
  table.col { |e| "Never #{e}" }
126
129
 
@@ -0,0 +1,85 @@
1
+ # encoding: UTF-8
2
+ require 'test_helper'
3
+ require 'support/custom_assertions'
4
+ require 'support/crud_test_model'
5
+
6
+ # Test CustomAssertions
7
+ class CustomAssertionsTest < ActiveSupport::TestCase
8
+
9
+ include CustomAssertions
10
+
11
+ include CrudTestHelper
12
+
13
+ setup :reset_db, :setup_db, :create_test_data
14
+ teardown :reset_db
15
+
16
+ test 'assert count succeeds if count matches' do
17
+ assert_nothing_raised do
18
+ assert_count 3, 'ba', 'barbabapa'
19
+ end
20
+ end
21
+
22
+ test 'assert count succeeds if count is zero' do
23
+ assert_nothing_raised do
24
+ assert_count 0, 'bo', 'barbabapa'
25
+ end
26
+ end
27
+
28
+ test 'assert count fails if count does not match' do
29
+ assert_raise(MiniTest::Assertion) do
30
+ assert_count 2, 'ba', 'barbabapa'
31
+ end
32
+ end
33
+
34
+ test 'assert valid record succeeds' do
35
+ assert_nothing_raised do
36
+ assert_valid crud_test_models('AAAAA')
37
+ end
38
+ end
39
+
40
+ test 'assert valid record fails for invalid' do
41
+ assert_raise(MiniTest::Assertion) do
42
+ assert_valid invalid_record
43
+ end
44
+ end
45
+
46
+ test 'assert not valid succeeds if record invalid' do
47
+ assert_nothing_raised do
48
+ assert_not_valid invalid_record
49
+ end
50
+ end
51
+
52
+ test 'assert not valid succeds if record invalid and invalid attrs given' do
53
+ assert_nothing_raised do
54
+ assert_not_valid invalid_record, :name, :rating
55
+ end
56
+ end
57
+
58
+ test 'assert not valid fails if record valid' do
59
+ assert_raise(MiniTest::Assertion) do
60
+ assert_not_valid crud_test_models('AAAAA')
61
+ end
62
+ end
63
+
64
+ test 'assert not valid fails if record invalid and valid attrs given' do
65
+ assert_raise(MiniTest::Assertion) do
66
+ assert_not_valid invalid_record, :name, :rating, :children
67
+ end
68
+ end
69
+
70
+ test 'assert not valid fails if not all invalid attrs given' do
71
+ assert_raise(MiniTest::Assertion) do
72
+ assert_not_valid invalid_record, :name
73
+ end
74
+ end
75
+
76
+ private
77
+
78
+ def invalid_record
79
+ m = crud_test_models('AAAAA')
80
+ m.name = nil
81
+ m.rating = 42
82
+ m
83
+ end
84
+
85
+ end