middleman 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. data/CHANGELOG +8 -0
  2. data/lib/middleman.rb +7 -1
  3. data/lib/middleman/vendor/padrino-core-0.10.0/.document +5 -0
  4. data/lib/middleman/vendor/padrino-core-0.10.0/.gitignore +22 -0
  5. data/lib/middleman/vendor/padrino-core-0.10.0/LICENSE +20 -0
  6. data/lib/middleman/vendor/padrino-core-0.10.0/README.rdoc +294 -0
  7. data/lib/middleman/vendor/padrino-core-0.10.0/Rakefile +5 -0
  8. data/lib/middleman/vendor/padrino-core-0.10.0/bin/padrino +9 -0
  9. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core.rb +119 -0
  10. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application.rb +259 -0
  11. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/rendering.rb +228 -0
  12. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/routing.rb +821 -0
  13. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/application/showexceptions.rb +18 -0
  14. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/caller.rb +45 -0
  15. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/adapter.rb +24 -0
  16. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/base.rb +152 -0
  17. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/console.rb +20 -0
  18. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/rake.rb +24 -0
  19. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/cli/rake_tasks.rb +59 -0
  20. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/command.rb +27 -0
  21. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/images/404.png +0 -0
  22. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/images/500.png +0 -0
  23. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/loader.rb +182 -0
  24. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/cz.yml +30 -0
  25. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/da.yml +30 -0
  26. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/de.yml +30 -0
  27. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/en.yml +30 -0
  28. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/es.yml +30 -0
  29. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/fr.yml +30 -0
  30. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/hu.yml +30 -0
  31. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/it.yml +37 -0
  32. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/ja.yml +30 -0
  33. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/nl.yml +30 -0
  34. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/no.yml +31 -0
  35. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/pl.yml +30 -0
  36. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/pt_br.yml +37 -0
  37. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/ru.yml +30 -0
  38. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/tr.yml +30 -0
  39. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/uk.yml +30 -0
  40. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/zh_cn.yml +30 -0
  41. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/locale/zh_tw.yml +30 -0
  42. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/logger.rb +344 -0
  43. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/mounter.rb +192 -0
  44. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/reloader.rb +247 -0
  45. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/router.rb +79 -0
  46. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/server.rb +70 -0
  47. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/support_lite.rb +135 -0
  48. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/tasks.rb +23 -0
  49. data/lib/middleman/vendor/padrino-core-0.10.0/lib/padrino-core/version.rb +15 -0
  50. data/lib/middleman/vendor/padrino-core-0.10.0/padrino-core.gemspec +38 -0
  51. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/.components +6 -0
  52. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/.gitignore +7 -0
  53. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/complex.rb +27 -0
  54. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/apps/simple.rb +33 -0
  55. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/a.rb +9 -0
  56. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/b.rb +4 -0
  57. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/c.rb +1 -0
  58. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/e.rb +13 -0
  59. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/f.rb +2 -0
  60. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/circular/g.rb +2 -0
  61. data/lib/middleman/vendor/padrino-core-0.10.0/test/fixtures/dependencies/d.rb +4 -0
  62. data/lib/middleman/vendor/padrino-core-0.10.0/test/helper.rb +101 -0
  63. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_application.rb +83 -0
  64. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_core.rb +79 -0
  65. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_dependencies.rb +44 -0
  66. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_filters.rb +266 -0
  67. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_logger.rb +91 -0
  68. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_mounter.rb +176 -0
  69. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_reloader_complex.rb +66 -0
  70. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_reloader_simple.rb +97 -0
  71. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_rendering.rb +437 -0
  72. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_router.rb +146 -0
  73. data/lib/middleman/vendor/padrino-core-0.10.0/test/test_routing.rb +1491 -0
  74. data/lib/middleman/vendor/padrino-helpers-0.10.0/.document +5 -0
  75. data/lib/middleman/vendor/padrino-helpers-0.10.0/.gitignore +21 -0
  76. data/lib/middleman/vendor/padrino-helpers-0.10.0/LICENSE +20 -0
  77. data/lib/middleman/vendor/padrino-helpers-0.10.0/README.rdoc +239 -0
  78. data/lib/middleman/vendor/padrino-helpers-0.10.0/Rakefile +5 -0
  79. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers.rb +51 -0
  80. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/asset_tag_helpers.rb +288 -0
  81. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_builder/abstract_form_builder.rb +220 -0
  82. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_builder/standard_form_builder.rb +43 -0
  83. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/form_helpers.rb +446 -0
  84. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/format_helpers.rb +260 -0
  85. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/cz.yml +103 -0
  86. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/da.yml +91 -0
  87. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/de.yml +78 -0
  88. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/en.yml +103 -0
  89. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/es.yml +103 -0
  90. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/fr.yml +79 -0
  91. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/hu.yml +103 -0
  92. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/it.yml +85 -0
  93. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/ja.yml +103 -0
  94. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/nl.yml +78 -0
  95. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/no.yml +91 -0
  96. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/pl.yml +95 -0
  97. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/pt_br.yml +103 -0
  98. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/ru.yml +103 -0
  99. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/tr.yml +103 -0
  100. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/uk.yml +103 -0
  101. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/zh_cn.yml +103 -0
  102. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/locale/zh_tw.yml +103 -0
  103. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/number_helpers.rb +273 -0
  104. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers.rb +128 -0
  105. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/abstract_handler.rb +103 -0
  106. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/erb_handler.rb +79 -0
  107. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/haml_handler.rb +64 -0
  108. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/output_helpers/slim_handler.rb +82 -0
  109. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/render_helpers.rb +40 -0
  110. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/tag_helpers.rb +59 -0
  111. data/lib/middleman/vendor/padrino-helpers-0.10.0/lib/padrino-helpers/translation_helpers.rb +21 -0
  112. data/lib/middleman/vendor/padrino-helpers-0.10.0/padrino-helpers.gemspec +27 -0
  113. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/app.rb +73 -0
  114. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.erb +14 -0
  115. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.haml +12 -0
  116. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/capture_concat.slim +13 -0
  117. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.erb +11 -0
  118. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.haml +9 -0
  119. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_for.slim +9 -0
  120. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.erb +11 -0
  121. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.haml +9 -0
  122. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/content_tag.slim +9 -0
  123. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.erb +5 -0
  124. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.haml +5 -0
  125. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/current_engine.slim +5 -0
  126. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.erb +20 -0
  127. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.haml +15 -0
  128. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/fields_for.slim +15 -0
  129. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.erb +56 -0
  130. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.haml +47 -0
  131. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_for.slim +47 -0
  132. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.erb +56 -0
  133. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.haml +45 -0
  134. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/form_tag.slim +45 -0
  135. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.erb +5 -0
  136. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.haml +4 -0
  137. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/link_to.slim +4 -0
  138. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.erb +3 -0
  139. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.haml +3 -0
  140. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/mail_to.slim +3 -0
  141. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.erb +3 -0
  142. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.haml +3 -0
  143. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/meta_tag.slim +3 -0
  144. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_erb.erb +1 -0
  145. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_haml.haml +1 -0
  146. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
  147. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.erb +1 -0
  148. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.haml +1 -0
  149. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/markup_app/views/simple_partial.slim +1 -0
  150. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/app.rb +45 -0
  151. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engine.haml +5 -0
  152. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_erb.erb +1 -0
  153. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_haml.haml +1 -0
  154. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/current_engines/_slim.slim +1 -0
  155. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/erb/test.erb +1 -0
  156. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/explicit_engine.haml +5 -0
  157. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/haml/test.haml +1 -0
  158. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/_user.haml +7 -0
  159. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/haml_template.haml +1 -0
  160. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/fixtures/render_app/views/template/some_template.haml +2 -0
  161. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/helper.rb +78 -0
  162. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_asset_tag_helpers.rb +320 -0
  163. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_form_builder.rb +998 -0
  164. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_form_helpers.rb +645 -0
  165. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_format_helpers.rb +227 -0
  166. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_number_helpers.rb +136 -0
  167. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_output_helpers.rb +133 -0
  168. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_render_helpers.rb +69 -0
  169. data/lib/middleman/vendor/padrino-helpers-0.10.0/test/test_tag_helpers.rb +100 -0
  170. data/lib/middleman/version.rb +1 -1
  171. data/middleman.gemspec +6 -2
  172. metadata +218 -67
@@ -0,0 +1,56 @@
1
+ <% form_tag '/simple', :class => 'simple-form' do %>
2
+ <%= hidden_field_tag :session_id, :value => "__secret__" %>
3
+ <% field_set_tag do %>
4
+ <%= label_tag :username %>
5
+ <%= text_field_tag :username %>
6
+ <%= label_tag :password %>
7
+ <%= password_field_tag :password %>
8
+ <%= check_box_tag :remember_me %>
9
+ <%= label_tag :gender %>
10
+ <%= label_tag :color %>
11
+ <%= select_tag :color, :options => ['green', 'orange', 'purple'] %>
12
+ <%= radio_button_tag :gender, :value => 'male' %>
13
+ <%= radio_button_tag :gender, :value => 'female' %>
14
+ <%= submit_tag %>
15
+ <% end %>
16
+ <% end %>
17
+
18
+ <% form_tag '/advanced', :id => 'advanced', :class => 'advanced-form', :method => 'get' do %>
19
+ <%= error_messages_for MarkupUser.new, :header_message => "There are problems with saving user!" %>
20
+ <%= hidden_field_tag :session_id, :value => "__secret__" %>
21
+ <% field_set_tag "Advanced", :class => 'advanced-field-set' do %>
22
+ <p>
23
+ <%= label_tag :username, :class => 'first', :caption => "Nickname" %>
24
+ <%= text_field_tag :username, :value => params[:username], :id => 'the_username' %>
25
+ </p>
26
+ <p>
27
+ <%= label_tag :password, :class => 'first' %>
28
+ <%= password_field_tag :password, :value => params[:password] %>
29
+ </p>
30
+ <p>
31
+ <%= label_tag :about, :class => 'about', :caption => "About Me" %>
32
+ <%= text_area_tag :about, :class => 'large' %>
33
+ </p>
34
+ <p>
35
+ <%= label_tag :photo, :class => 'photo' %>
36
+ <%= file_field_tag :photo, :class => 'upload' %>
37
+ </p>
38
+ <p>
39
+ <%= label_tag :gender, :class => 'gender' %>
40
+ <%= radio_button_tag :gender, :value => 'male', :checked => true %>
41
+ <%= radio_button_tag :remember_me, :value => 'female' %>
42
+ <p>
43
+ <p>
44
+ <%= label_tag :fav_color %>
45
+ <%= select_tag :fav_color, :options => [ ['green', '1'], ['orange', '2'], ['purple', '3'] ], :selected => '2' %>
46
+ </p>
47
+ <p>
48
+ <%= check_box_tag :remember_me, :value => '1', :checked => true %>
49
+ <p>
50
+ <% end %>
51
+ <% field_set_tag(:class => 'buttons') do %>
52
+ <%= submit_tag "Login" %>
53
+ <%= button_tag "Cancel" %>
54
+ <%= image_submit_tag "buttons/submit.png" %>
55
+ <% end %>
56
+ <% end %>
@@ -0,0 +1,45 @@
1
+ - form_tag '/simple', :class => 'simple-form' do
2
+ = error_messages_for nil
3
+ - field_set_tag do
4
+ = hidden_field_tag :session_id, :value => "__secret__"
5
+ = label_tag :username
6
+ = text_field_tag :username
7
+ = label_tag :password
8
+ = password_field_tag :password
9
+ = label_tag :color
10
+ = select_tag :color, :options => ['green', 'orange', 'purple']
11
+ = label_tag :gender
12
+ = radio_button_tag :gender, :value => 'male'
13
+ = radio_button_tag :gender, :value => 'female'
14
+ = check_box_tag :remember_me
15
+ = submit_tag
16
+
17
+ - form_tag '/advanced', :id => 'advanced', :class => 'advanced-form', :method => 'get' do
18
+ = error_messages_for MarkupUser.new, :header_message => "There are problems with saving user!"
19
+ = hidden_field_tag :session_id, :value => "__secret__"
20
+ - field_set_tag "Advanced", :class => 'advanced-field-set' do
21
+ %p
22
+ = label_tag :username, :class => 'first', :caption => "Nickname"
23
+ = text_field_tag :username, :value => params[:username], :id => 'the_username'
24
+ %p
25
+ = label_tag :password, :class => 'first'
26
+ = password_field_tag :password, :value => params[:password]
27
+ %p
28
+ = label_tag :about, :class => 'about', :caption => "About Me"
29
+ = text_area_tag :about, :class => 'large'
30
+ %p
31
+ = label_tag :gender, :class => 'gender'
32
+ = radio_button_tag :gender, :value => 'male', :checked => true
33
+ = radio_button_tag :gender, :value => 'female'
34
+ %p
35
+ = label_tag :photo, :class => 'photo'
36
+ = file_field_tag :photo, :class => 'upload'
37
+ %p
38
+ = label_tag :fav_color
39
+ = select_tag :fav_color, :options => [ ['green', '1'], ['orange', '2'], ['purple', '3'] ], :selected => '2'
40
+ %p
41
+ = check_box_tag :remember_me, :value => "1", :checked => true
42
+ - field_set_tag(:class => 'buttons') do
43
+ = submit_tag "Login"
44
+ = button_tag "Cancel"
45
+ = image_submit_tag "buttons/submit.png"
@@ -0,0 +1,45 @@
1
+ == form_tag '/simple', :class => 'simple-form' do
2
+ == error_messages_for nil
3
+ == field_set_tag do
4
+ == hidden_field_tag :session_id, :value => "__secret__"
5
+ == label_tag :username
6
+ == text_field_tag :username
7
+ == label_tag :password
8
+ == password_field_tag :password
9
+ == label_tag :color
10
+ == select_tag :color, :options => ['green', 'orange', 'purple']
11
+ == label_tag :gender
12
+ == radio_button_tag :gender, :value => 'male'
13
+ == radio_button_tag :gender, :value => 'female'
14
+ == check_box_tag :remember_me
15
+ == submit_tag
16
+
17
+ == form_tag '/advanced', :id => 'advanced', :class => 'advanced-form', :method => 'get' do
18
+ == error_messages_for MarkupUser.new, :header_message => "There are problems with saving user!"
19
+ == hidden_field_tag :session_id, :value => "__secret__"
20
+ == field_set_tag "Advanced", :class => 'advanced-field-set' do
21
+ p
22
+ == label_tag :username, :class => 'first', :caption => "Nickname"
23
+ == text_field_tag :username, :value => params[:username], :id => 'the_username'
24
+ p
25
+ == label_tag :password, :class => 'first'
26
+ == password_field_tag :password, :value => params[:password]
27
+ p
28
+ == label_tag :about, :class => 'about', :caption => "About Me"
29
+ == text_area_tag :about, :class => 'large'
30
+ p
31
+ == label_tag :gender, :class => 'gender'
32
+ == radio_button_tag :gender, :value => 'male', :checked => true
33
+ == radio_button_tag :gender, :value => 'female'
34
+ p
35
+ == label_tag :photo, :class => 'photo'
36
+ == file_field_tag :photo, :class => 'upload'
37
+ p
38
+ == label_tag :fav_color
39
+ == select_tag :fav_color, :options => [ ['green', '1'], ['orange', '2'], ['purple', '3'] ], :selected => '2'
40
+ p
41
+ == check_box_tag :remember_me, :value => "1", :checked => true
42
+ == field_set_tag(:class => 'buttons') do
43
+ == submit_tag "Login"
44
+ == button_tag "Cancel"
45
+ == image_submit_tag "buttons/submit.png"
@@ -0,0 +1,5 @@
1
+ <%= link_to "Test 1 No Block", '/test1', :class => 'test', :id => 'test1' %>
2
+
3
+ <% link_to("/test2", :class => 'test', :id => 'test2') do %>
4
+ <span>Test 2 With Block</span>
5
+ <% end %>
@@ -0,0 +1,4 @@
1
+ = link_to "Test 1 No Block", '/test1', :class => 'test', :id => 'test1'
2
+
3
+ - link_to("/test2", :class => 'test', :id => 'test2') do
4
+ %span Test 2 With Block
@@ -0,0 +1,4 @@
1
+ = link_to "Test 1 No Block", '/test1', :class => 'test', :id => 'test1'
2
+
3
+ - link_to("/test2", :class => 'test', :id => 'test2') do
4
+ span Test 2 With Block
@@ -0,0 +1,3 @@
1
+ <p class='simple'><%= mail_to 'test@demo.com' %></p>
2
+
3
+ <p class='captioned'><%= mail_to 'test@demo.com', "Click my Email" %></p>
@@ -0,0 +1,3 @@
1
+ %p.simple= mail_to 'test@demo.com'
2
+
3
+ %p.captioned= mail_to 'test@demo.com', "Click my Email"
@@ -0,0 +1,3 @@
1
+ p.simple== mail_to 'test@demo.com'
2
+
3
+ p.captioned== mail_to 'test@demo.com', "Click my Email"
@@ -0,0 +1,3 @@
1
+ <%= meta_tag "weblog,news", :name => "keywords" %>
2
+
3
+ <%= meta_tag "text/html; charset=UTF-8", :"http-equiv" => "Content-Type" %>
@@ -0,0 +1,3 @@
1
+ = meta_tag "weblog,news", :name => "keywords"
2
+
3
+ = meta_tag "text/html; charset=UTF-8", :"http-equiv" => "Content-Type"
@@ -0,0 +1,3 @@
1
+ == meta_tag "weblog,news", :name => "keywords"
2
+
3
+ == meta_tag "text/html; charset=UTF-8", :"http-equiv" => "Content-Type"
@@ -0,0 +1 @@
1
+ <p class="erb"><%= partial 'partials/erb', :engine => "erb" %></p>
@@ -0,0 +1 @@
1
+ %p.haml= partial 'partials/haml', :engine => "haml"
@@ -0,0 +1 @@
1
+ p.slim= partial 'partials/slim', :engine => "slim"
@@ -0,0 +1,45 @@
1
+ PADRINO_ROOT = File.dirname(__FILE__) unless defined? PADRINO_ROOT
2
+ PADRINO_ENV = 'test' unless defined? PADRINO_ENV
3
+
4
+ require 'padrino-core'
5
+ require 'slim'
6
+
7
+ class RenderUser
8
+ attr_accessor :name
9
+ def initialize(name); @name = name; end
10
+ end
11
+
12
+ class RenderDemo < Padrino::Application
13
+ register Padrino::Rendering
14
+ register Padrino::Helpers
15
+
16
+ configure do
17
+ set :logging, false
18
+ set :padrino_logging, false
19
+ end
20
+
21
+ # get current engines from partials
22
+ get '/current_engine' do
23
+ render :current_engine
24
+ end
25
+
26
+ # get current engines from explicit engine partials
27
+ get '/explicit_engine' do
28
+ render :explicit_engine
29
+ end
30
+
31
+ # partial with object
32
+ get '/partial/object' do
33
+ partial 'template/user', :object => RenderUser.new('John'), :locals => { :extra => "bar" }
34
+ end
35
+
36
+ # partial with collection
37
+ get '/partial/collection' do
38
+ partial 'template/user', :collection => [RenderUser.new('John'), RenderUser.new('Billy')], :locals => { :extra => "bar" }
39
+ end
40
+
41
+ # partial with locals
42
+ get '/partial/locals' do
43
+ partial 'template/user', :locals => { :user => RenderUser.new('John'), :extra => "bar" }
44
+ end
45
+ end
@@ -0,0 +1,5 @@
1
+ %p.start= current_engine
2
+ %p.haml= partial 'current_engines/haml'
3
+ %p.erb= partial 'current_engines/erb'
4
+ %p.slim= partial 'current_engines/slim'
5
+ %p.end= current_engine
@@ -0,0 +1 @@
1
+ <h1>This is a <%= @template %> template!</h1>
@@ -0,0 +1,5 @@
1
+ %p.start= current_engine
2
+ %p.haml= partial "current_engines/haml", :engine => :haml
3
+ %p.erb= partial 'current_engines/erb', :engine => :erb
4
+ %p.slim= partial 'current_engines/slim', :engine => :slim
5
+ %p.end= current_engine
@@ -0,0 +1 @@
1
+ %h1 This is a #{@template} template!
@@ -0,0 +1,7 @@
1
+ %h1 User name is #{user.name}
2
+
3
+ - if defined?(extra)
4
+ %p Extra is #{extra}
5
+
6
+ - if defined?(user_counter)
7
+ %p My counter is #{user_counter}
@@ -0,0 +1 @@
1
+ %h1 This is a #{@template} template sent from render_template!
@@ -0,0 +1,2 @@
1
+
2
+ %h1 This is a haml template which was detected!
@@ -0,0 +1,78 @@
1
+ require File.expand_path('../../../load_paths', __FILE__)
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'mocha'
5
+ require 'rack/test'
6
+ require 'webrat'
7
+ require 'padrino-helpers'
8
+ require 'active_support/time'
9
+
10
+ class Test::Unit::TestCase
11
+ include Padrino::Helpers::OutputHelpers
12
+ include Padrino::Helpers::TagHelpers
13
+ include Padrino::Helpers::AssetTagHelpers
14
+ include Rack::Test::Methods
15
+ include Webrat::Methods
16
+ include Webrat::Matchers
17
+
18
+ Webrat.configure do |config|
19
+ config.mode = :rack
20
+ end
21
+
22
+ def stop_time_for_test
23
+ time = Time.now
24
+ Time.stubs(:now).returns(time)
25
+ return time
26
+ end
27
+
28
+ # assert_has_tag(:h1, :content => "yellow") { "<h1>yellow</h1>" }
29
+ # In this case, block is the html to evaluate
30
+ def assert_has_tag(name, attributes = {}, &block)
31
+ html = block && block.call
32
+ matcher = HaveSelector.new(name, attributes)
33
+ raise "Please specify a block!" if html.blank?
34
+ assert matcher.matches?(html), matcher.failure_message
35
+ end
36
+
37
+ # assert_has_no_tag, tag(:h1, :content => "yellow") { "<h1>green</h1>" }
38
+ # In this case, block is the html to evaluate
39
+ def assert_has_no_tag(name, attributes = {}, &block)
40
+ html = block && block.call
41
+ attributes.merge!(:count => 0)
42
+ matcher = HaveSelector.new(name, attributes)
43
+ raise "Please specify a block!" if html.blank?
44
+ assert matcher.matches?(html), matcher.failure_message
45
+ end
46
+
47
+ # Silences the output by redirecting to stringIO
48
+ # silence_logger { ...commands... } => "...output..."
49
+ def silence_logger(&block)
50
+ orig_stdout = $stdout
51
+ $stdout = log_buffer = StringIO.new
52
+ block.call
53
+ $stdout = orig_stdout
54
+ log_buffer.rewind && log_buffer.read
55
+ end
56
+
57
+ # Asserts that a file matches the pattern
58
+ def assert_match_in_file(pattern, file)
59
+ assert File.exist?(file), "File '#{file}' does not exist!"
60
+ assert_match pattern, File.read(file)
61
+ end
62
+
63
+ # mock_model("Business", :new_record? => true) => <Business>
64
+ def mock_model(klazz, options={})
65
+ options.reverse_merge!(:class => klazz, :new_record? => false, :id => 20, :errors => {})
66
+ record = stub(options)
67
+ record.stubs(:to_ary => [record])
68
+ record
69
+ end
70
+ end
71
+
72
+ module Webrat
73
+ module Logging
74
+ def logger # :nodoc:
75
+ @logger = nil
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,320 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/fixtures/markup_app/app')
3
+
4
+ class TestAssetTagHelpers < Test::Unit::TestCase
5
+ include Padrino::Helpers::AssetTagHelpers
6
+
7
+ def app
8
+ MarkupDemo.tap { |app| app.set :environment, :test }
9
+ end
10
+
11
+ def flash
12
+ { :notice => "Demo notice" }
13
+ end
14
+
15
+ context 'for #flash_tag method' do
16
+ should "display flash with no given attributes" do
17
+ assert_has_tag('div.notice', :content => "Demo notice") { flash_tag(:notice) }
18
+ end
19
+ should "display flash with given attributes" do
20
+ actual_html = flash_tag(:notice, :class => 'notice', :id => 'notice-area')
21
+ assert_has_tag('div.notice#notice-area', :content => "Demo notice") { actual_html }
22
+ end
23
+ end
24
+
25
+ context 'for #link_to method' do
26
+ should "display link element with no given attributes" do
27
+ assert_has_tag('a', :content => "Sign up", :href => '/register') { link_to('Sign up', '/register') }
28
+ end
29
+
30
+ should "display link element with given attributes" do
31
+ actual_html = link_to('Sign up', '/register', :class => 'first', :id => 'linky')
32
+ assert_has_tag('a#linky.first', :content => "Sign up", :href => '/register') { actual_html }
33
+ end
34
+
35
+ should "display link element with anchor attribute" do
36
+ actual_html = link_to("Anchor", "/anchor", :anchor => :foo)
37
+ assert_has_tag('a', :content => "Anchor", :href => '/anchor#foo') { actual_html }
38
+ end
39
+
40
+ should "display link element with void url and options" do
41
+ actual_link = link_to('Sign up', :class => "test")
42
+ assert_has_tag('a', :content => "Sign up", :href => 'javascript:void(0);', :class => 'test') { actual_link }
43
+ end
44
+
45
+ should "display link element with remote option" do
46
+ actual_link = link_to('Sign up', '/register', :remote => true)
47
+ assert_has_tag('a', :content => "Sign up", :href => '/register', 'data-remote' => 'true') { actual_link }
48
+ end
49
+
50
+ should "display link element with method option" do
51
+ actual_link = link_to('Sign up', '/register', :method => :delete)
52
+ assert_has_tag('a', :content => "Sign up", :href => '/register', 'data-method' => 'delete', :rel => 'nofollow') { actual_link }
53
+ end
54
+
55
+ should "display link element with confirm option" do
56
+ actual_link = link_to('Sign up', '/register', :confirm => "Are you sure?")
57
+ assert_has_tag('a', :content => "Sign up", :href => '/register', 'data-confirm' => 'Are you sure?') { actual_link }
58
+ end
59
+
60
+ should "display link element with ruby block" do
61
+ actual_link = link_to('/register', :class => 'first', :id => 'binky') { "Sign up" }
62
+ assert_has_tag('a#binky.first', :content => "Sign up", :href => '/register') { actual_link }
63
+ end
64
+
65
+ should "display link block element in haml" do
66
+ visit '/haml/link_to'
67
+ assert_have_selector :a, :content => "Test 1 No Block", :href => '/test1', :class => 'test', :id => 'test1'
68
+ assert_have_selector :a, :content => "Test 2 With Block", :href => '/test2', :class => 'test', :id => 'test2'
69
+ end
70
+
71
+ should "display link block element in erb" do
72
+ visit '/erb/link_to'
73
+ assert_have_selector :a, :content => "Test 1 No Block", :href => '/test1', :class => 'test', :id => 'test1'
74
+ assert_have_selector :a, :content => "Test 2 With Block", :href => '/test2', :class => 'test', :id => 'test2'
75
+ end
76
+ end
77
+
78
+ context 'for #mail_to method' do
79
+ should "display link element for mail to no caption" do
80
+ actual_html = mail_to('test@demo.com')
81
+ assert_has_tag(:a, :href => "mailto:test@demo.com", :content => 'test@demo.com') { actual_html }
82
+ end
83
+
84
+ should "display link element for mail to with caption" do
85
+ actual_html = mail_to('test@demo.com', "My Email", :class => 'demo')
86
+ assert_has_tag(:a, :href => "mailto:test@demo.com", :content => 'My Email', :class => 'demo') { actual_html }
87
+ end
88
+
89
+ should "display link element for mail to with caption and mail options" do
90
+ actual_html = mail_to('test@demo.com', "My Email", :subject => 'demo test', :class => 'demo', :cc => 'foo@test.com')
91
+ assert_has_tag(:a, :class => 'demo') { actual_html }
92
+ assert_match %r{mailto\:test\@demo.com\?}, actual_html
93
+ assert_match %r{cc=foo\@test\.com}, actual_html
94
+ assert_match %r{subject\=demo\%20test}, actual_html
95
+ end
96
+
97
+ should "display mail link element in haml" do
98
+ visit '/haml/mail_to'
99
+ assert_have_selector 'p.simple a', :href => 'mailto:test@demo.com', :content => 'test@demo.com'
100
+ assert_have_selector 'p.captioned a', :href => 'mailto:test@demo.com', :content => 'Click my Email'
101
+ end
102
+
103
+ should "display mail link element in erb" do
104
+ visit '/erb/mail_to'
105
+ assert_have_selector 'p.simple a', :href => 'mailto:test@demo.com', :content => 'test@demo.com'
106
+ assert_have_selector 'p.captioned a', :href => 'mailto:test@demo.com', :content => 'Click my Email'
107
+ end
108
+
109
+ should "display mail link element in slim" do
110
+ visit '/slim/mail_to'
111
+ assert_have_selector 'p.simple a', :href => 'mailto:test@demo.com', :content => 'test@demo.com'
112
+ assert_have_selector 'p.captioned a', :href => 'mailto:test@demo.com', :content => 'Click my Email'
113
+ end
114
+ end
115
+
116
+ context 'for #meta_tag method' do
117
+ should "display meta tag with given content and name" do
118
+ actual_html = meta_tag("weblog,news", :name => "keywords")
119
+ assert_has_tag("meta", :name => "keywords", "content" => "weblog,news") { actual_html }
120
+ end
121
+
122
+ should "display meta tag with given content and http-equiv" do
123
+ actual_html = meta_tag("text/html; charset=UTF-8", :"http-equiv" => "Content-Type")
124
+ assert_has_tag("meta", :"http-equiv" => "Content-Type", "content" => "text/html; charset=UTF-8") { actual_html }
125
+ end
126
+
127
+ should "display meta tag element in haml" do
128
+ visit '/haml/meta_tag'
129
+ assert_have_selector 'meta', "content" => "weblog,news", :name => "keywords"
130
+ assert_have_selector 'meta', "content" => "text/html; charset=UTF-8", :"http-equiv" => "Content-Type"
131
+ end
132
+
133
+ should "display meta tag element in erb" do
134
+ visit '/erb/meta_tag'
135
+ assert_have_selector 'meta', "content" => "weblog,news", :name => "keywords"
136
+ assert_have_selector 'meta', "content" => "text/html; charset=UTF-8", :"http-equiv" => "Content-Type"
137
+ end
138
+
139
+ should "display meta tag element in slim" do
140
+ visit '/slim/meta_tag'
141
+ assert_have_selector 'meta', "content" => "weblog,news", :name => "keywords"
142
+ assert_have_selector 'meta', "content" => "text/html; charset=UTF-8", :"http-equiv" => "Content-Type"
143
+ end
144
+ end
145
+
146
+ context 'for #image_tag method' do
147
+ should "display image tag absolute link with no options" do
148
+ time = stop_time_for_test
149
+ assert_has_tag('img', :src => "/absolute/pic.gif?#{time.to_i}") { image_tag('/absolute/pic.gif') }
150
+ end
151
+
152
+ should "display image tag absolute link with specified uri root" do
153
+ time = stop_time_for_test
154
+ self.class.stubs(:uri_root).returns("/blog")
155
+ assert_has_tag('img', :src => "/blog/images/relative/pic.gif?#{time.to_i}") { image_tag('relative/pic.gif') }
156
+ end
157
+
158
+ should "display image tag relative link with options" do
159
+ time = stop_time_for_test
160
+ assert_has_tag('img.photo', :src => "/images/relative/pic.gif?#{time.to_i}") {
161
+ image_tag('relative/pic.gif', :class => 'photo') }
162
+ end
163
+
164
+ should "display image tag uri link with options" do
165
+ time = stop_time_for_test
166
+ assert_has_tag('img.photo', :src => "http://demo.org/pic.gif") { image_tag('http://demo.org/pic.gif', :class => 'photo') }
167
+ end
168
+
169
+ should "display image tag relative link with incorrect spacing" do
170
+ time = stop_time_for_test
171
+ assert_has_tag('img.photo', :src => "/images/%20relative/%20pic.gif%20%20?#{time.to_i}") {
172
+ image_tag(' relative/ pic.gif ', :class => 'photo') }
173
+ end
174
+
175
+ should "not use a timestamp if stamp setting is false" do
176
+ self.class.expects(:asset_stamp).returns(false)
177
+ assert_has_tag('img', :src => "/absolute/pic.gif") { image_tag('/absolute/pic.gif') }
178
+ end
179
+
180
+ should "have xhtml convention tag" do
181
+ self.class.expects(:asset_stamp).returns(false)
182
+ assert_equal image_tag('/absolute/pic.gif'), '<img src="/absolute/pic.gif" />'
183
+ end
184
+ end
185
+
186
+ context 'for #stylesheet_link_tag method' do
187
+ should "display stylesheet link item" do
188
+ time = stop_time_for_test
189
+ expected_options = { :media => "screen", :rel => "stylesheet", :type => "text/css" }
190
+ assert_has_tag('link', expected_options.merge(:href => "/stylesheets/style.css?#{time.to_i}")) { stylesheet_link_tag('style') }
191
+ end
192
+
193
+ should "display stylesheet link item for long relative path" do
194
+ time = stop_time_for_test
195
+ expected_options = { :media => "screen", :rel => "stylesheet", :type => "text/css" }
196
+ actual_html = stylesheet_link_tag('example/demo/style')
197
+ assert_has_tag('link', expected_options.merge(:href => "/stylesheets/example/demo/style.css?#{time.to_i}")) { actual_html }
198
+ end
199
+
200
+ should "display stylesheet link item with absolute path" do
201
+ time = stop_time_for_test
202
+ expected_options = { :media => "screen", :rel => "stylesheet", :type => "text/css" }
203
+ actual_html = stylesheet_link_tag('/css/style')
204
+ assert_has_tag('link', expected_options.merge(:href => "/css/style.css?#{time.to_i}")) { actual_html }
205
+ end
206
+
207
+ should "display stylesheet link item with uri root" do
208
+ self.class.stubs(:uri_root).returns("/blog")
209
+ time = stop_time_for_test
210
+ expected_options = { :media => "screen", :rel => "stylesheet", :type => "text/css" }
211
+ actual_html = stylesheet_link_tag('style')
212
+ assert_has_tag('link', expected_options.merge(:href => "/blog/stylesheets/style.css?#{time.to_i}")) { actual_html }
213
+ end
214
+
215
+ should "display stylesheet link items" do
216
+ time = stop_time_for_test
217
+ actual_html = stylesheet_link_tag('style', 'layout.css', 'http://google.com/style.css')
218
+ assert_has_tag('link', :media => "screen", :rel => "stylesheet", :type => "text/css", :count => 3) { actual_html }
219
+ assert_has_tag('link', :href => "/stylesheets/style.css?#{time.to_i}") { actual_html }
220
+ assert_has_tag('link', :href => "/stylesheets/layout.css?#{time.to_i}") { actual_html }
221
+ assert_has_tag('link', :href => "http://google.com/style.css") { actual_html }
222
+ assert_equal actual_html, stylesheet_link_tag(['style', 'layout.css', 'http://google.com/style.css'])
223
+ end
224
+
225
+ should "not use a timestamp if stamp setting is false" do
226
+ self.class.expects(:asset_stamp).returns(false)
227
+ expected_options = { :media => "screen", :rel => "stylesheet", :type => "text/css" }
228
+ assert_has_tag('link', expected_options.merge(:href => "/stylesheets/style.css")) { stylesheet_link_tag('style') }
229
+ end
230
+ end
231
+
232
+ context 'for #javascript_include_tag method' do
233
+ should "display javascript item" do
234
+ time = stop_time_for_test
235
+ actual_html = javascript_include_tag('application')
236
+ assert_has_tag('script', :src => "/javascripts/application.js?#{time.to_i}", :type => "text/javascript") { actual_html }
237
+ end
238
+
239
+ should "display javascript item for long relative path" do
240
+ time = stop_time_for_test
241
+ actual_html = javascript_include_tag('example/demo/application')
242
+ assert_has_tag('script', :src => "/javascripts/example/demo/application.js?#{time.to_i}", :type => "text/javascript") { actual_html }
243
+ end
244
+
245
+ should "display javascript item for path containing js" do
246
+ time = stop_time_for_test
247
+ actual_html = javascript_include_tag 'test/jquery.json'
248
+ assert_has_tag('script', :src => "/javascripts/test/jquery.json?#{time.to_i}", :type => "text/javascript") { actual_html }
249
+ end
250
+
251
+ should "display javascript item for path containing period" do
252
+ time = stop_time_for_test
253
+ actual_html = javascript_include_tag 'test/jquery.min'
254
+ assert_has_tag('script', :src => "/javascripts/test/jquery.min.js?#{time.to_i}", :type => "text/javascript") { actual_html }
255
+ end
256
+
257
+ should "display javascript item with absolute path" do
258
+ time = stop_time_for_test
259
+ actual_html = javascript_include_tag('/js/application')
260
+ assert_has_tag('script', :src => "/js/application.js?#{time.to_i}", :type => "text/javascript") { actual_html }
261
+ end
262
+
263
+ should "display javascript item with uri root" do
264
+ self.class.stubs(:uri_root).returns("/blog")
265
+ time = stop_time_for_test
266
+ actual_html = javascript_include_tag('application')
267
+ assert_has_tag('script', :src => "/blog/javascripts/application.js?#{time.to_i}", :type => "text/javascript") { actual_html }
268
+ end
269
+
270
+ should "display javascript items" do
271
+ time = stop_time_for_test
272
+ actual_html = javascript_include_tag('application', 'base.js', 'http://google.com/lib.js')
273
+ assert_has_tag('script', :type => "text/javascript", :count => 3) { actual_html }
274
+ assert_has_tag('script', :src => "/javascripts/application.js?#{time.to_i}") { actual_html }
275
+ assert_has_tag('script', :src => "/javascripts/base.js?#{time.to_i}") { actual_html }
276
+ assert_has_tag('script', :src => "http://google.com/lib.js") { actual_html }
277
+ assert_equal actual_html, javascript_include_tag(['application', 'base.js', 'http://google.com/lib.js'])
278
+ end
279
+
280
+ should "not use a timestamp if stamp setting is false" do
281
+ self.class.expects(:asset_stamp).returns(false)
282
+ actual_html = javascript_include_tag('application')
283
+ assert_has_tag('script', :src => "/javascripts/application.js", :type => "text/javascript") { actual_html }
284
+ end
285
+ end
286
+
287
+ context "for #favicon_tag method" do
288
+ should "display favicon" do
289
+ time = stop_time_for_test
290
+ actual_html = favicon_tag('icons/favicon.png')
291
+ assert_has_tag('link', :rel => 'icon', :type => 'image/png', :href => "/images/icons/favicon.png?#{time.to_i}") { actual_html }
292
+ end
293
+
294
+ should "match type with file ext" do
295
+ time = stop_time_for_test
296
+ actual_html = favicon_tag('favicon.ico')
297
+ assert_has_tag('link', :rel => 'icon', :type => 'image/ico', :href => "/images/favicon.ico?#{time.to_i}") { actual_html }
298
+ end
299
+
300
+ should "allow option overrides" do
301
+ time = stop_time_for_test
302
+ actual_html = favicon_tag('favicon.png', :type => 'image/ico')
303
+ assert_has_tag('link', :rel => 'icon', :type => 'image/ico', :href => "/images/favicon.png?#{time.to_i}") { actual_html }
304
+ end
305
+ end
306
+
307
+ context 'for #feed_tag method' do
308
+ should "generate correctly link tag for rss" do
309
+ assert_has_tag('link', :type => 'application/rss+xml', :rel => 'alternate', :href => "/blog/post.rss", :title => 'rss') { feed_tag :rss, "/blog/post.rss" }
310
+ end
311
+
312
+ should "generate correctly link tag for atom" do
313
+ assert_has_tag('link', :type => 'application/atom+xml', :rel => 'alternate', :href => "/blog/post.atom", :title => 'atom') { feed_tag :atom, "/blog/post.atom" }
314
+ end
315
+
316
+ should "override options" do
317
+ assert_has_tag('link', :type => 'my-type', :rel => 'my-rel', :href => "/blog/post.rss", :title => 'my-title') { feed_tag :rss, "/blog/post.rss", :type => "my-type", :rel => "my-rel", :title => "my-title" }
318
+ end
319
+ end
320
+ end