padrino-helpers 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +7 -0
  5. data/Rakefile +58 -0
  6. data/VERSION +1 -0
  7. data/lib/padrino-helpers.rb +16 -0
  8. data/lib/padrino-helpers/asset_tag_helpers.rb +97 -0
  9. data/lib/padrino-helpers/form_builder/abstract_form_builder.rb +139 -0
  10. data/lib/padrino-helpers/form_builder/standard_form_builder.rb +37 -0
  11. data/lib/padrino-helpers/form_helpers.rb +194 -0
  12. data/lib/padrino-helpers/format_helpers.rb +74 -0
  13. data/lib/padrino-helpers/output_helpers.rb +98 -0
  14. data/lib/padrino-helpers/render_helpers.rb +63 -0
  15. data/lib/padrino-helpers/tag_helpers.rb +42 -0
  16. data/test/active_support_helpers.rb +7 -0
  17. data/test/fixtures/markup_app/app.rb +61 -0
  18. data/test/fixtures/markup_app/views/capture_concat.erb +14 -0
  19. data/test/fixtures/markup_app/views/capture_concat.haml +13 -0
  20. data/test/fixtures/markup_app/views/content_for.erb +11 -0
  21. data/test/fixtures/markup_app/views/content_for.haml +9 -0
  22. data/test/fixtures/markup_app/views/content_tag.erb +11 -0
  23. data/test/fixtures/markup_app/views/content_tag.haml +9 -0
  24. data/test/fixtures/markup_app/views/fields_for.erb +8 -0
  25. data/test/fixtures/markup_app/views/fields_for.haml +6 -0
  26. data/test/fixtures/markup_app/views/form_for.erb +56 -0
  27. data/test/fixtures/markup_app/views/form_for.haml +47 -0
  28. data/test/fixtures/markup_app/views/form_tag.erb +57 -0
  29. data/test/fixtures/markup_app/views/form_tag.haml +45 -0
  30. data/test/fixtures/markup_app/views/link_to.erb +5 -0
  31. data/test/fixtures/markup_app/views/link_to.haml +4 -0
  32. data/test/fixtures/markup_app/views/mail_to.erb +3 -0
  33. data/test/fixtures/markup_app/views/mail_to.haml +3 -0
  34. data/test/fixtures/render_app/app.rb +53 -0
  35. data/test/fixtures/render_app/views/erb/test.erb +1 -0
  36. data/test/fixtures/render_app/views/haml/test.haml +1 -0
  37. data/test/fixtures/render_app/views/template/_user.haml +7 -0
  38. data/test/fixtures/render_app/views/template/haml_template.haml +1 -0
  39. data/test/fixtures/render_app/views/template/some_template.haml +2 -0
  40. data/test/helper.rb +73 -0
  41. data/test/test_asset_tag_helpers.rb +127 -0
  42. data/test/test_form_builder.rb +611 -0
  43. data/test/test_form_helpers.rb +406 -0
  44. data/test/test_format_helpers.rb +96 -0
  45. data/test/test_output_helpers.rb +63 -0
  46. data/test/test_render_helpers.rb +78 -0
  47. data/test/test_tag_helpers.rb +73 -0
  48. metadata +174 -0
@@ -0,0 +1,56 @@
1
+ <% form_for MarkupUser.new, '/demo', :id => 'demo' do |f| %>
2
+ <%= f.error_messages(:header_message => "custom MarkupUser cannot be saved!") %>
3
+ <%= f.hidden_field :session_id %>
4
+ <p>
5
+ <%= f.label :username, :caption => "Login", :class => 'user-label' %>
6
+ <%= f.text_field :username, :class => 'user-text', :value => "John" %>
7
+ </p>
8
+ <p>
9
+ <%= f.label :email, :caption => "Email", :class => 'user-email' %>
10
+ <%= f.text_field :email %>
11
+ </p>
12
+ <p>
13
+ <%= f.label :password %>
14
+ <%= f.password_field :password, :class => 'user-password', :value => "secret" %>
15
+ </p>
16
+ <p>
17
+ <%= f.label :photo %>
18
+ <%= f.file_field :photo, :class => 'user-photo' %>
19
+ </p>
20
+ <p>
21
+ <%= f.label :about, :caption => "About Me" %>
22
+ <%= f.text_area :about, :class => 'user-about' %>
23
+ </p>
24
+ <p>
25
+ <%= f.label :gender, :caption => "Your gender:" %>
26
+ <%= f.radio_button :gender, :value => 'male' %>
27
+ <%= f.radio_button :gender, :value => 'female' %>
28
+ </p>
29
+ <p>
30
+ <%= f.label :country, :caption => "Your country" %>
31
+ <%= f.select :country, :options => ['USA', 'Canada', 'Mexico'], :selected => 'USA', :class => 'selector' %>
32
+ </p>
33
+ <p>
34
+ <%= f.label :remember_me %>
35
+ <%= f.check_box :remember_me, :value => '1' %>
36
+ </p>
37
+ <p><%= f.submit "Create", :class => 'success', :id => 'demo-button' %></p>
38
+ <p><%= f.image_submit "buttons/post.png", :class => 'success', :id => 'image-button' %></p>
39
+ <% end %>
40
+
41
+ <% form_for MarkupUser.new, '/another_demo', :id => 'demo2', :method => 'get' do |f| %>
42
+ <%= f.error_messages :header_message => "custom MarkupUser cannot be saved!" %>
43
+ <%= f.hidden_field :session_id %>
44
+ <%= f.text_field_block :username, { :class => 'input' }, { :caption => 'Nickname', :class => 'label' } %>
45
+ <%= f.password_field_block :code, { :class => 'input' } %>
46
+ <%= f.text_area_block :about, { :class => 'textarea' } %>
47
+ <%= f.file_field_block :photo, { :class => 'upload' } %>
48
+ <%= f.check_box_block :remember_me, { :class => 'checker' } %>
49
+ <%= f.select_block :state, :options => ['California', 'Texas'], :class => 'selector' %>
50
+ <%= f.submit_block "Create", { :class => 'button' } %>
51
+ <%= f.image_submit_block "buttons/ok.png", { :class => 'image' } %>
52
+ <% end %>
53
+
54
+ <% form_for :markup_user, '/third_demo', :id => 'demo3', :method => 'get' do |f| %>
55
+ <%= f.text_field_block :username %>
56
+ <% end %>
@@ -0,0 +1,47 @@
1
+ - form_for MarkupUser.new, '/demo', :id => 'demo' do |f|
2
+ = f.error_messages(:header_message => "custom MarkupUser cannot be saved!")
3
+ = f.hidden_field :session_id
4
+ %p
5
+ = f.label :username, :caption => "Login", :class => 'user-label'
6
+ = f.text_field :username, :class => 'user-text', :value => "John"
7
+ %p
8
+ = f.label :email, :caption => "Email", :class => 'user-email'
9
+ = f.text_field :email
10
+ %p
11
+ = f.label :password
12
+ = f.password_field :password, :class => 'user-password', :value => "secret"
13
+ %p
14
+ = f.label :photo
15
+ = f.file_field :photo, :class => 'user-photo'
16
+ %p
17
+ = f.label :about, :caption => "About Me"
18
+ = f.text_area :about, :class => 'user-about'
19
+ %p
20
+ = f.label :gender, :caption => "Your gender"
21
+ = f.radio_button :gender, :value => 'male'
22
+ = f.radio_button :gender, :value => 'female'
23
+ %p
24
+ = f.label :country, :caption => "Your country"
25
+ = f.select :country, :options => ['USA', 'Canada', 'Mexico'], :selected => 'USA', :class => 'selector'
26
+ %p
27
+ = f.label :remember_me
28
+ = f.check_box :remember_me, :value => "1"
29
+ %p
30
+ = f.submit "Create", :class => 'success', :id => 'demo-button'
31
+ %p
32
+ = f.image_submit "buttons/post.png", :class => 'success', :id => 'image-button'
33
+
34
+ - form_for MarkupUser.new, '/another_demo', :id => 'demo2', :method => 'get' do |f|
35
+ = f.error_messages :header_message => "custom MarkupUser cannot be saved!"
36
+ = f.hidden_field :session_id
37
+ = f.text_field_block :username, { :class => 'input' }, { :caption => 'Nickname', :class => 'label' }
38
+ = f.password_field_block :code, { :class => 'input' }
39
+ = f.text_area_block :about, { :class => 'textarea' }
40
+ = f.file_field_block :photo, { :class => 'upload' }
41
+ = f.check_box_block :remember_me, { :class => 'checker' }
42
+ = f.select_block :state, :options => ['California', 'Texas'], :class => 'selector'
43
+ = f.submit_block "Create", { :class => 'button' }
44
+ = f.image_submit_block "buttons/ok.png", { :class => 'image' }
45
+
46
+ - form_for :markup_user, '/third_demo', :id => 'demo3', :method => 'get' do |f|
47
+ = f.text_field_block :username
@@ -0,0 +1,57 @@
1
+ <% form_tag '/simple', :class => 'simple-form' do %>
2
+ <%= error_messages_for(nil) %>
3
+ <%= hidden_field_tag :session_id, :value => "__secret__" %>
4
+ <% field_set_tag do %>
5
+ <%= label_tag :username %>
6
+ <%= text_field_tag :username %>
7
+ <%= label_tag :password %>
8
+ <%= password_field_tag :password %>
9
+ <%= check_box_tag :remember_me %>
10
+ <%= label_tag :gender %>
11
+ <%= label_tag :color %>
12
+ <%= select_tag :color, :options => ['green', 'orange', 'purple'] %>
13
+ <%= radio_button_tag :gender, :value => 'male' %>
14
+ <%= radio_button_tag :gender, :value => 'female' %>
15
+ <%= submit_tag %>
16
+ <% end %>
17
+ <% end %>
18
+
19
+ <% form_tag '/advanced', :id => 'advanced', :class => 'advanced-form', :method => 'get' do %>
20
+ <%= error_messages_for MarkupUser.new, :header_message => "There are problems with saving user!" %>
21
+ <%= hidden_field_tag :session_id, :value => "__secret__" %>
22
+ <% field_set_tag "Advanced", :class => 'advanced-field-set' do %>
23
+ <p>
24
+ <%= label_tag :username, :class => 'first', :caption => "Nickname" %>
25
+ <%= text_field_tag :username, :value => params[:username], :id => 'the_username' %>
26
+ </p>
27
+ <p>
28
+ <%= label_tag :password, :class => 'first' %>
29
+ <%= password_field_tag :password, :value => params[:password] %>
30
+ </p>
31
+ <p>
32
+ <%= label_tag :about, :class => 'about', :caption => "About Me" %>
33
+ <%= text_area_tag :about, :class => 'large' %>
34
+ </p>
35
+ <p>
36
+ <%= label_tag :photo, :class => 'photo' %>
37
+ <%= file_field_tag :photo, :class => 'upload' %>
38
+ </p>
39
+ <p>
40
+ <%= label_tag :gender, :class => 'gender' %>
41
+ <%= radio_button_tag :gender, :value => 'male', :checked => true %>
42
+ <%= radio_button_tag :remember_me, :value => 'female' %>
43
+ <p>
44
+ <p>
45
+ <%= label_tag :fav_color %>
46
+ <%= select_tag :fav_color, :options => [ ['green', '1'], ['orange', '2'], ['purple', '3'] ], :selected => '2' %>
47
+ </p>
48
+ <p>
49
+ <%= check_box_tag :remember_me, :value => '1', :checked => true %>
50
+ <p>
51
+ <% end %>
52
+ <% field_set_tag(:class => 'buttons') do %>
53
+ <%= submit_tag "Login" %>
54
+ <%= button_tag "Cancel" %>
55
+ <%= image_submit_tag "buttons/submit.png" %>
56
+ <% end %>
57
+ <% 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,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,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,53 @@
1
+ require 'sinatra/base'
2
+ require 'haml'
3
+
4
+ class RenderUser
5
+ attr_accessor :name
6
+ def initialize(name); @name = name; end
7
+ end
8
+
9
+ class RenderDemo < Sinatra::Base
10
+ register Padrino::Helpers
11
+
12
+ configure do
13
+ set :root, File.dirname(__FILE__)
14
+ end
15
+
16
+ # haml_template
17
+ get '/render_haml' do
18
+ @template = 'haml'
19
+ haml_template 'haml/test'
20
+ end
21
+
22
+ # erb_template
23
+ get '/render_erb' do
24
+ @template = 'erb'
25
+ erb_template 'erb/test'
26
+ end
27
+
28
+ # render_template with explicit engine
29
+ get '/render_template/:engine' do
30
+ @template = params[:engine]
31
+ render_template "template/#{@template}_template", :template_engine => @template
32
+ end
33
+
34
+ # render_template without explicit engine
35
+ get '/render_template' do
36
+ render_template "template/some_template"
37
+ end
38
+
39
+ # partial with object
40
+ get '/partial/object' do
41
+ partial 'template/user', :object => RenderUser.new('John'), :locals => { :extra => "bar" }
42
+ end
43
+
44
+ # partial with collection
45
+ get '/partial/collection' do
46
+ partial 'template/user', :collection => [RenderUser.new('John'), RenderUser.new('Billy')], :locals => { :extra => "bar" }
47
+ end
48
+
49
+ # partial with locals
50
+ get '/partial/locals' do
51
+ partial 'template/user', :locals => { :user => RenderUser.new('John'), :extra => "bar" }
52
+ end
53
+ end
@@ -0,0 +1 @@
1
+ <h1>This is a <%= @template %> template!</h1>
@@ -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!
data/test/helper.rb ADDED
@@ -0,0 +1,73 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'mocha'
5
+ require 'rack/test'
6
+ require 'webrat'
7
+
8
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
10
+ require 'active_support_helpers'
11
+ require File.dirname(__FILE__) + '/../lib/padrino-helpers.rb'
12
+
13
+ class Test::Unit::TestCase
14
+ include Padrino::Helpers::OutputHelpers
15
+ include Padrino::Helpers::TagHelpers
16
+ include Padrino::Helpers::AssetTagHelpers
17
+ include Rack::Test::Methods
18
+ include Webrat::Methods
19
+ include Webrat::Matchers
20
+
21
+ Webrat.configure do |config|
22
+ config.mode = :rack
23
+ end
24
+
25
+ def stop_time_for_test
26
+ time = Time.now
27
+ Time.stubs(:now).returns(time)
28
+ return time
29
+ end
30
+
31
+ # assert_has_tag(:h1, :content => "yellow") { "<h1>yellow</h1>" }
32
+ # In this case, block is the html to evaluate
33
+ def assert_has_tag(name, attributes = {}, &block)
34
+ html = block && block.call
35
+ matcher = HaveSelector.new(name, attributes)
36
+ raise "Please specify a block!" if html.blank?
37
+ assert matcher.matches?(html), matcher.failure_message
38
+ end
39
+
40
+ # assert_has_no_tag, tag(:h1, :content => "yellow") { "<h1>green</h1>" }
41
+ # In this case, block is the html to evaluate
42
+ def assert_has_no_tag(name, attributes = {}, &block)
43
+ html = block && block.call
44
+ attributes.merge!(:count => 0)
45
+ matcher = HaveSelector.new(name, attributes)
46
+ raise "Please specify a block!" if html.blank?
47
+ assert matcher.matches?(html), matcher.failure_message
48
+ end
49
+
50
+ # Silences the output by redirecting to stringIO
51
+ # silence_logger { ...commands... } => "...output..."
52
+ def silence_logger(&block)
53
+ orig_stdout = $stdout
54
+ $stdout = log_buffer = StringIO.new
55
+ block.call
56
+ $stdout = orig_stdout
57
+ log_buffer.rewind && log_buffer.read
58
+ end
59
+
60
+ # Asserts that a file matches the pattern
61
+ def assert_match_in_file(pattern, file)
62
+ assert File.exist?(file), "File '#{file}' does not exist!"
63
+ assert_match pattern, File.read(file)
64
+ end
65
+ end
66
+
67
+ module Webrat
68
+ module Logging
69
+ def logger # :nodoc:
70
+ @logger = nil
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,127 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+ require 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.flash', :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
+ should "display link element with given attributes" do
30
+ actual_html = link_to('Sign up', '/register', :class => 'first', :id => 'linky')
31
+ assert_has_tag('a#linky.first', :content => "Sign up", :href => '/register') { actual_html }
32
+ end
33
+ should "display link element with ruby block" do
34
+ actual_link = link_to('/register', :class => 'first', :id => 'binky') { "Sign up" }
35
+ assert_has_tag('a#binky.first', :content => "Sign up", :href => '/register') { actual_link }
36
+ end
37
+ should "display link block element in haml" do
38
+ visit '/haml/link_to'
39
+ assert_have_selector :a, :content => "Test 1 No Block", :href => '/test1', :class => 'test', :id => 'test1'
40
+ assert_have_selector :a, :content => "Test 2 With Block", :href => '/test2', :class => 'test', :id => 'test2'
41
+ end
42
+ should "display link block element in erb" do
43
+ visit '/erb/link_to'
44
+ assert_have_selector :a, :content => "Test 1 No Block", :href => '/test1', :class => 'test', :id => 'test1'
45
+ assert_have_selector :a, :content => "Test 2 With Block", :href => '/test2', :class => 'test', :id => 'test2'
46
+ end
47
+ end
48
+
49
+ context 'for #mail_to method' do
50
+ should "display link element for mail to no caption" do
51
+ actual_html = mail_to('test@demo.com')
52
+ assert_has_tag(:a, :href => "mailto:test@demo.com", :content => 'test@demo.com') { actual_html }
53
+ end
54
+
55
+ should "display link element for mail to with caption" do
56
+ actual_html = mail_to('test@demo.com', "My Email", :class => 'demo')
57
+ assert_has_tag(:a, :href => "mailto:test@demo.com", :content => 'My Email', :class => 'demo') { actual_html }
58
+ end
59
+
60
+ should "display link element for mail to with caption and mail options" do
61
+ actual_html = mail_to('test@demo.com', "My Email", :subject => 'demo test', :class => 'demo', :cc => 'foo@test.com')
62
+ assert_has_tag(:a, :class => 'demo') { actual_html }
63
+ assert_match /mailto\:test\@demo.com\?/, actual_html
64
+ assert_match /cc=foo\@test\.com/, actual_html
65
+ assert_match /subject\=demo\%20test/, actual_html
66
+ end
67
+
68
+ should "display mail link element in haml" do
69
+ visit '/haml/mail_to'
70
+ assert_have_selector 'p.simple a', :href => 'mailto:test@demo.com', :content => 'test@demo.com'
71
+ assert_have_selector 'p.captioned a', :href => 'mailto:test@demo.com', :content => 'Click my Email'
72
+ end
73
+
74
+ should "display mail link element in erb" do
75
+ visit '/erb/mail_to'
76
+ assert_have_selector 'p.simple a', :href => 'mailto:test@demo.com', :content => 'test@demo.com'
77
+ assert_have_selector 'p.captioned a', :href => 'mailto:test@demo.com', :content => 'Click my Email'
78
+ end
79
+ end
80
+
81
+ context 'for #image_tag method' do
82
+ should "display image tag absolute link with no options" do
83
+ assert_has_tag('img', :src => "/absolute/pic.gif") { image_tag('/absolute/pic.gif') }
84
+ end
85
+ should "display image tag relative link with options" do
86
+ assert_has_tag('img.photo', :src => "/images/relative/pic.gif") { image_tag('relative/pic.gif', :class => 'photo') }
87
+ end
88
+ should "display image tag uri link with options" do
89
+ assert_has_tag('img.photo', :src => "http://demo.org/pic.gif") { image_tag('http://demo.org/pic.gif', :class => 'photo') }
90
+ end
91
+ should "display image tag relative link with incorrect spacing" do
92
+ assert_has_tag('img.photo', :src => "/images/relative/pic.gif") { image_tag(' relative/ pic.gif ', :class => 'photo') }
93
+ end
94
+ end
95
+
96
+ context 'for #stylesheet_link_tag method' do
97
+ should "display stylesheet link item" do
98
+ time = stop_time_for_test
99
+ expected_options = { :media => "screen", :rel => "stylesheet", :type => "text/css" }
100
+ assert_has_tag('link', expected_options.merge(:href => "/stylesheets/style.css?#{time.to_i}")) { stylesheet_link_tag('style') }
101
+ end
102
+ should "display stylesheet link items" do
103
+ time = stop_time_for_test
104
+ actual_html = stylesheet_link_tag('style', 'layout.css', 'http://google.com/style.css')
105
+ assert_has_tag('link', :media => "screen", :rel => "stylesheet", :type => "text/css", :count => 3) { actual_html }
106
+ assert_has_tag('link', :href => "/stylesheets/style.css?#{time.to_i}") { actual_html }
107
+ assert_has_tag('link', :href => "/stylesheets/layout.css?#{time.to_i}") { actual_html }
108
+ assert_has_tag('link', :href => "http://google.com/style.css") { actual_html }
109
+ end
110
+ end
111
+
112
+ context 'for #javascript_include_tag method' do
113
+ should "display javascript item" do
114
+ time = stop_time_for_test
115
+ actual_html = javascript_include_tag('application')
116
+ assert_has_tag('script', :src => "/javascripts/application.js?#{time.to_i}", :type => "text/javascript") { actual_html }
117
+ end
118
+ should "display javascript items" do
119
+ time = stop_time_for_test
120
+ actual_html = javascript_include_tag('application', 'base.js', 'http://google.com/lib.js')
121
+ assert_has_tag('script', :type => "text/javascript", :count => 3) { actual_html }
122
+ assert_has_tag('script', :src => "/javascripts/application.js?#{time.to_i}") { actual_html }
123
+ assert_has_tag('script', :src => "/javascripts/base.js?#{time.to_i}") { actual_html }
124
+ assert_has_tag('script', :src => "http://google.com/lib.js") { actual_html }
125
+ end
126
+ end
127
+ end