helperful 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,32 @@
1
+ #
2
+ # = Helperful
3
+ #
4
+ # A collection of useful Rails helpers.
5
+ #
6
+ #
7
+ # Category:: Rails
8
+ # Package:: Helperful
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # Copyright:: 2008-2009 The Authors
11
+ # License:: MIT License
12
+ #
13
+ #--
14
+ #
15
+ #++
16
+
17
+
18
+ module Helperful
19
+
20
+ module Version
21
+ MAJOR = 0
22
+ MINOR = 5
23
+ TINY = 2
24
+
25
+ STRING = [MAJOR, MINOR, TINY].join('.')
26
+ end
27
+
28
+ VERSION = Version::STRING
29
+ STATUS = 'alpha'
30
+ BUILD = nil
31
+
32
+ end
@@ -0,0 +1,5 @@
1
+ require 'helperful'
2
+
3
+ ActionController::Base.extend Helperful::ControllerMixin
4
+
5
+ RAILS_DEFAULT_LOGGER.info("** Helperful: initialized properly") if defined?(RAILS_DEFAULT_LOGGER)
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :helperful do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ class AffiliationsHelperTest < ActionView::TestCase
4
+ tests Helperful::AffiliationsHelper
5
+
6
+ def test_tradedoubler_verification_tag
7
+ assert_equal('<!-- TradeDoubler site verification 112233 -->', tradedoubler_verification_tag('112233'))
8
+ assert_equal('<!-- TradeDoubler site verification 112233 -->', tradedoubler_verification_tag(112233))
9
+ assert_equal('<!-- TradeDoubler site verification -->', tradedoubler_verification_tag(nil))
10
+ end
11
+
12
+ end
@@ -0,0 +1,77 @@
1
+ require 'test_helper'
2
+
3
+ class AssetTagHelperTest < ActionView::TestCase
4
+ tests Helperful::AssetTagHelper
5
+
6
+ def setup
7
+ ActionController::Base.perform_caching = false
8
+ ActionController::Base.asset_host = nil
9
+ ENV.delete('RAILS_ASSET_ID')
10
+
11
+ @controller = Class.new do
12
+ attr_accessor :request
13
+ def url_for(*args)
14
+ case arg = args.first
15
+ when String
16
+ arg
17
+ when Hash
18
+ "http://www.example.com?#{arg.to_param}"
19
+ else
20
+ "http://www.example.com"
21
+ end
22
+ end
23
+ end.new
24
+
25
+ @request = Class.new do
26
+ def protocol() 'http://' end
27
+ def ssl?() false end
28
+ def host_with_port() 'localhost' end
29
+ end.new
30
+
31
+ @controller.request = @request
32
+ end
33
+
34
+
35
+ CanonicalToTag = {
36
+ %(canonical_link_tag) => %(<link href="http://www.example.com?only_path=false" rel="canonical" />),
37
+ %(canonical_link_tag(:action => "show")) => %(<link href="http://www.example.com?action=show&amp;only_path=false" rel="canonical" />),
38
+ %(canonical_link_tag("http://localhost/show")) => %(<link href="http://localhost/show" rel="canonical" />),
39
+ }
40
+
41
+ test "canonical_link_tag" do
42
+ CanonicalToTag.each do |method, tag|
43
+ assert_dom_equal(tag, eval(method))
44
+ end
45
+ end
46
+
47
+
48
+ JavascriptToTag = {
49
+ %(javascript) => %(javascript_include_tag),
50
+ %(javascript(["foo", "bar"])) => %(javascript_include_tag(["foo", "bar"])),
51
+ %(javascript("foo", "bar")) => %(javascript_include_tag("foo", "bar")),
52
+ %(javascript("foo", "bar", :cache => true)) => %(javascript_include_tag("foo", "bar", :cache => true)),
53
+ }
54
+
55
+ test "javascript" do
56
+ JavascriptToTag.each do |method, content|
57
+ expects(:content_for).with(:head, eval(content))
58
+ eval(method)
59
+ end
60
+ end
61
+
62
+
63
+ StylesheetToTag = {
64
+ %(stylesheet) => %(stylesheet_link_tag),
65
+ %(stylesheet(["foo", "bar"])) => %(stylesheet_link_tag(["foo", "bar"])),
66
+ %(stylesheet("foo", "bar")) => %(stylesheet_link_tag("foo", "bar")),
67
+ %(stylesheet("foo", "bar", :cache => true)) => %(stylesheet_link_tag("foo", "bar", :cache => true)),
68
+ }
69
+
70
+ test "stylesheet" do
71
+ StylesheetToTag.each do |method, content|
72
+ expects(:content_for).with(:head, eval(content))
73
+ eval(method)
74
+ end
75
+ end
76
+
77
+ end
@@ -0,0 +1,52 @@
1
+ require 'test_helper'
2
+
3
+ class ContentController < ActionController::Base
4
+ def self.controller_name; "content"; end
5
+ def self.controller_path; "content"; end
6
+
7
+ helperful "content"
8
+
9
+ def has_content
10
+ render :layout => "has_content"
11
+ end
12
+
13
+ def has_content_is_called_alone
14
+ render :layout => false
15
+ end
16
+
17
+ def rescue_action(e) raise end
18
+ end
19
+
20
+ ContentController.view_paths = [ File.dirname(__FILE__) + "/fixtures/" ]
21
+
22
+
23
+ class ContentTest < ActionController::TestCase
24
+
25
+ # Compatibility workaround for Rails ~> 2.2.0
26
+ tests ContentController
27
+
28
+ def setup
29
+ @controller = ContentController.new
30
+ @request = ActionController::TestRequest.new
31
+ @response = ActionController::TestResponse.new
32
+
33
+ @request.host = "test.host"
34
+ end
35
+
36
+ def test_has_content
37
+ get :has_content
38
+ assert_equal %Q{
39
+ `one' has content: this is :one for :one\n
40
+ `two' has content: this is 'two' for 'two'\n
41
+ \n
42
+ `four' has content: this is 'four' for :four\n
43
+ `five' has content: this is 'five' for :five\n}, @response.body
44
+ end
45
+
46
+ def test_has_content_is_called_alone
47
+ get :has_content_is_called_alone
48
+ assert_response :success
49
+ assert_equal('bar', @response.body)
50
+ end
51
+
52
+ end
@@ -0,0 +1,4 @@
1
+ <% content_for :one, "this is :one for :one" -%>
2
+ <% content_for 'two', "this is 'two' for 'two'" -%>
3
+ <% content_for 'four', "this is 'four' for :four" -%>
4
+ <% content_for 'five' do %>this is 'five' for :five<% end %>
@@ -0,0 +1 @@
1
+ <% if has_content? :foo %>foo<% end %><% if !has_content? :bar %>bar<% end %>
@@ -0,0 +1,3 @@
1
+ <% for name in [:one, 'two', :three, :four, :five] %>
2
+ <% if has_content? name %>`<%= name %>' has content: <%= yield name %><% end %>
3
+ <% end %>
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class HelperfulController < ActionController::Base
4
+ end
5
+
6
+ %w(First Second Third).each do |name|
7
+ class_eval <<-RUBY
8
+ module Helperful::#{name}Helper
9
+ end
10
+ RUBY
11
+ end
12
+
13
+
14
+ class HelperfulTest < Test::Unit::TestCase
15
+
16
+ def setup
17
+ @controller = HelperfulController
18
+ end
19
+
20
+ def test_helperful_should_delegate_module
21
+ @controller.expects(:helper).with(Helperful::FirstHelper)
22
+ @controller.helperful(Helperful::FirstHelper)
23
+ end
24
+
25
+ def test_helperful_should_delegate_modules
26
+ @controller.expects(:helper).with(Helperful::FirstHelper)
27
+ @controller.expects(:helper).with(Helperful::SecondHelper)
28
+ @controller.helperful(Helperful::FirstHelper, Helperful::SecondHelper)
29
+ end
30
+
31
+ def test_helperful_should_prepend_namespace_and_delegate_string_symbol
32
+ @controller.expects(:helper).with('helperful/first')
33
+ @controller.helperful('first')
34
+
35
+ @controller.expects(:helper).with('helperful/first')
36
+ @controller.helperful(:first)
37
+ end
38
+
39
+ def test_helperful_should_prepend_namespace_and_delegate_strings_symbols
40
+ @controller.expects(:helper).with('helperful/first')
41
+ @controller.helperful('first')
42
+
43
+ @controller.expects(:helper).with('helperful/first')
44
+ @controller.helperful(:first)
45
+
46
+ @controller.expects(:helper).with('helperful/first')
47
+ @controller.expects(:helper).with('helperful/second')
48
+ @controller.helperful('first', 'second')
49
+
50
+ @controller.expects(:helper).with('helperful/first')
51
+ @controller.expects(:helper).with('helperful/second')
52
+ @controller.helperful(:first, :second)
53
+ end
54
+
55
+ end
@@ -0,0 +1,91 @@
1
+ require 'test_helper'
2
+
3
+ class JavascriptHelperTest < ActionView::TestCase
4
+ tests Helperful::JavascriptHelper
5
+
6
+ attr_accessor :output_buffer
7
+
8
+ def setup
9
+ @content_for_name = nil
10
+ end
11
+
12
+ def test_javascript_content_for
13
+ javascript_content_for(:name, "alert('hello')")
14
+
15
+ assert_dom_equal "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
16
+ @content_for_name
17
+ end
18
+
19
+ def test_javascript_content_for_with_block_in_erb
20
+ __in_erb_template = ''
21
+ javascript_content_for(:name) { concat "alert('hello')" }
22
+
23
+ assert_dom_equal "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
24
+ @content_for_name
25
+ end
26
+
27
+ def test_javascript_content_for_with_block_out_of_erb
28
+ javascript_content_for(:name) { "alert('hello')" }
29
+
30
+ assert_dom_equal "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
31
+ @content_for_name
32
+ end
33
+
34
+ def test_javascript_content_for_with_options
35
+ javascript_content_for(:name, "alert('hello')", :id => "the_js_tag")
36
+
37
+ assert_dom_equal "<script id=\"the_js_tag\" type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
38
+ @content_for_name
39
+ end
40
+
41
+ def test_javascript_content_for_with_options_and_block_in_erb
42
+ __in_erb_template = ''
43
+ javascript_content_for(:name, :id => "the_js_tag") { concat "alert('hello')" }
44
+
45
+ assert_dom_equal "<script id=\"the_js_tag\" type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
46
+ @content_for_name
47
+ end
48
+
49
+ def test_javascript_content_for_with_options_and_block_out_of_erb
50
+ javascript_content_for(:name, :id => "the_js_tag") { "alert('hello')" }
51
+
52
+ assert_dom_equal "<script id=\"the_js_tag\" type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
53
+ @content_for_name
54
+ end
55
+
56
+ def test_javascript_content_for_with_subsequent_calls
57
+ javascript_content_for(:name, "alert('hello')")
58
+ javascript_content_for(:name, "alert('world')")
59
+
60
+ expected = "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>"
61
+ expected += "<script type=\"text/javascript\">\n//<![CDATA[\nalert('world')\n//]]>\n</script>"
62
+
63
+ assert_dom_equal expected,
64
+ @content_for_name
65
+ end
66
+
67
+ def test_javascript_content_for_with_subsequent_calls_and_block_in_erb
68
+ __in_erb_template = ''
69
+
70
+ javascript_content_for(:name) { concat "alert('hello')" }
71
+ javascript_content_for(:name) { concat "alert('world')" }
72
+
73
+ expected = "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>"
74
+ expected += "<script type=\"text/javascript\">\n//<![CDATA[\nalert('world')\n//]]>\n</script>"
75
+
76
+ assert_dom_equal expected,
77
+ @content_for_name
78
+ end
79
+
80
+ def test_javascript_content_for_with_subsequent_calls_and_block_out_of_erb
81
+ javascript_content_for(:name) { "alert('hello')" }
82
+ javascript_content_for(:name) { "alert('world')" }
83
+
84
+ expected = "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>"
85
+ expected += "<script type=\"text/javascript\">\n//<![CDATA[\nalert('world')\n//]]>\n</script>"
86
+
87
+ assert_dom_equal expected,
88
+ @content_for_name
89
+ end
90
+
91
+ end
@@ -0,0 +1,47 @@
1
+ #
2
+ # = Helperful
3
+ #
4
+ # A collection of useful Rails helpers.
5
+ #
6
+ #
7
+ # Category:: Rails
8
+ # Package:: Helperful
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # Copyright:: 2008-2009 The Authors
11
+ # License:: MIT License
12
+ #
13
+ #--
14
+ #
15
+ #++
16
+
17
+
18
+ require 'rubygems'
19
+ gem 'rails', '~>2.3.0'
20
+ gem 'mocha', '0.9.7'
21
+
22
+ # Remember! Due to some Mocha internal changes,
23
+ # Rails 2.2.x requires Mocha 0.9.5 and
24
+ # Rails 2.3.x requires Mocha 0.9.7
25
+ # gem 'rails', '2.2.2'
26
+ # gem 'mocha', '0.9.5'
27
+
28
+ require 'mocha'
29
+ require 'test/unit'
30
+ require 'active_support'
31
+ require 'action_controller'
32
+ require 'action_controller/cgi_ext'
33
+ require 'action_controller/test_process'
34
+ require 'action_view/test_case'
35
+
36
+ $:.unshift File.dirname(__FILE__) + '/../lib'
37
+ require File.dirname(__FILE__) + '/../init.rb'
38
+
39
+ RAILS_ROOT = '.' unless defined? RAILS_ROOT
40
+ RAILS_ENV = 'test' unless defined? RAILS_ENV
41
+
42
+ ActionController::Base.logger = nil
43
+ ActionController::Routing::Routes.reload rescue nil
44
+
45
+
46
+ # Unit tests for Helpers are based on unit tests created and developed by Rails core team.
47
+ # See action_pack/test/abstract_unit for more details.
@@ -0,0 +1,69 @@
1
+ require 'test_helper'
2
+
3
+ class HelperfulTitleHelperTest < ActionView::TestCase
4
+ tests Helperful::TitleHelper
5
+
6
+ def setup
7
+ reset!
8
+ end
9
+
10
+ def test_title_should_accepts_zero_or_more_params
11
+ assert_nothing_raised { title }
12
+ assert_nothing_raised { title('One') }
13
+ assert_nothing_raised { title('One', 'Two', 'Three') }
14
+ end
15
+
16
+ def test_title_should_return_content
17
+ assert_equal('', title)
18
+ assert_equal('One', title('One'))
19
+ end
20
+
21
+ def test_title_should_return_empty_string_if_empty
22
+ assert_equal('', title)
23
+ end
24
+
25
+ def test_title_should_store_content
26
+ assert_equal('', title)
27
+ assert_equal('One', title('One'))
28
+ assert_equal('One', title)
29
+ end
30
+
31
+ def test_title_should_join_content
32
+ assert_equal('', title)
33
+ assert_equal('One', title('One'))
34
+ assert_equal('One - Two', title('Two'))
35
+ assert_equal('One - Two - Three - Four', title('Three', 'Four'))
36
+ end
37
+
38
+ def test_title_should_join_content_with_separator
39
+ assert_equal('One - Two', title('One', 'Two'))
40
+ assert_equal('One | Two', title(:separator => ' | '))
41
+ assert_equal('One x Two x Three', title('Three', :separator => ' x '))
42
+ end
43
+
44
+ def test_title_should_append_headline_to_content
45
+ assert_equal('One - Two', title('One', 'Two'))
46
+ assert_equal('One - Two - Cool!', title(:headline => 'Cool!'))
47
+ assert_equal('One - Two - Three - Yeah!', title('Three', :headline => 'Yeah!'))
48
+ end
49
+
50
+ def test_title_should_append_site_to_content
51
+ assert_equal('One - Two', title('One', 'Two'))
52
+ assert_equal('One - Two - Cool!', title(:site => 'Cool!'))
53
+ assert_equal('One - Two - Three - Yeah!', title('Three', :site => 'Yeah!'))
54
+ end
55
+
56
+ def test_title_should_append_site_then_headline
57
+ assert_equal('One - Two', title('One', 'Two'))
58
+ assert_equal('One - Two - Cool!', title(:site => 'Cool!'))
59
+ assert_equal('One - Two - Cool! - Yeah!', title(:headline => 'Yeah!'))
60
+ end
61
+
62
+
63
+ protected
64
+
65
+ def reset!
66
+ title(nil)
67
+ end
68
+
69
+ end