easel_helpers 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +20 -0
- data/Manifest +31 -0
- data/README.textile +3 -0
- data/Rakefile +18 -0
- data/easel_helpers.gemspec +41 -0
- data/lib/easel_helpers.rb +3 -0
- data/lib/easel_helpers/helpers.rb +81 -0
- data/lib/easel_helpers/helpers/date_helper.rb +15 -0
- data/lib/easel_helpers/helpers/form_helper.rb +68 -0
- data/lib/easel_helpers/helpers/grid_helper.rb +178 -0
- data/lib/easel_helpers/helpers/jquery_helper.rb +21 -0
- data/lib/easel_helpers/helpers/link_helper.rb +21 -0
- data/lib/easel_helpers/helpers/message_helper.rb +32 -0
- data/lib/easel_helpers/helpers/navigation_helper.rb +29 -0
- data/lib/easel_helpers/helpers/rjs_helper.rb +20 -0
- data/lib/easel_helpers/helpers/structure_helper.rb +43 -0
- data/lib/easel_helpers/helpers/table_helper.rb +61 -0
- data/lib/easel_helpers/rails_partial_caching.rb +40 -0
- data/rails/init.rb +4 -0
- data/tasks/easel_helpers_tasks.rake +4 -0
- data/test/date_helper_test.rb +59 -0
- data/test/form_helper_test.rb +135 -0
- data/test/grid_helper_test.rb +226 -0
- data/test/jquery_helper_test.rb +30 -0
- data/test/link_helper_test.rb +44 -0
- data/test/message_helper_test.rb +50 -0
- data/test/navigation_helper_test.rb +130 -0
- data/test/rjs_helper_test.rb +47 -0
- data/test/structure_helper_test.rb +54 -0
- data/test/table_helper_test.rb +112 -0
- data/test/test_helper.rb +34 -0
- metadata +152 -0
| @@ -0,0 +1,226 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class GridHelperTest < EaselHelpers::ViewTestCase
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              context "advanced grid structures" do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                should "properly assign classes for a simple column layout" do
         | 
| 8 | 
            +
                  template = %(
         | 
| 9 | 
            +
                    <% container do %>
         | 
| 10 | 
            +
                      <% column do %>
         | 
| 11 | 
            +
                        <% column :half, :id => "primary" do %>
         | 
| 12 | 
            +
                          <% column :one_third do %>
         | 
| 13 | 
            +
                            one third of one half of 24 is 4
         | 
| 14 | 
            +
                          <% end %>
         | 
| 15 | 
            +
                          <% column :one_third, :last, prepend_one_third do %>
         | 
| 16 | 
            +
                            one third of one half of 24 is 4 (but prepended 4 as well)
         | 
| 17 | 
            +
                          <% end %>
         | 
| 18 | 
            +
                          <hr/>
         | 
| 19 | 
            +
                          more text
         | 
| 20 | 
            +
                        <% end %>
         | 
| 21 | 
            +
                        <% column :half, :last, :id => "secondary" do %>
         | 
| 22 | 
            +
                          second column
         | 
| 23 | 
            +
                        <% end %>
         | 
| 24 | 
            +
                        <hr/>
         | 
| 25 | 
            +
                        text
         | 
| 26 | 
            +
                      <% end %>
         | 
| 27 | 
            +
                    <% end %>
         | 
| 28 | 
            +
                  )
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  show_view template do
         | 
| 31 | 
            +
                    assert_select ".container", 1
         | 
| 32 | 
            +
                    assert_select ".container.col-24", 0
         | 
| 33 | 
            +
                    assert_select ".col-24", 1
         | 
| 34 | 
            +
                    assert_select ".col-12", 2
         | 
| 35 | 
            +
                    assert_select ".col-12#primary", 1
         | 
| 36 | 
            +
                    assert_select ".col-12#secondary", 1
         | 
| 37 | 
            +
                    assert_select ".col-4", 2
         | 
| 38 | 
            +
                    assert_select ".prepend-4", 1
         | 
| 39 | 
            +
                    assert_select ".col-24.col-last", 0
         | 
| 40 | 
            +
                    assert_select ".col-12.col-last", 1
         | 
| 41 | 
            +
                    assert_select ".col-4.col-last", 1
         | 
| 42 | 
            +
                    assert_select "hr", 2
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                should "properly assign classes for generic helpers" do
         | 
| 47 | 
            +
                  template = %(
         | 
| 48 | 
            +
                    <% column do %>
         | 
| 49 | 
            +
                      <% fieldset :hform, :half do %>
         | 
| 50 | 
            +
                        <% set :one_third do %>text<% end %>
         | 
| 51 | 
            +
                        <% set :two_thirds, :last do %>more text<% end %>
         | 
| 52 | 
            +
                      <% end %>
         | 
| 53 | 
            +
                      <% recordset :half, :last do %>table<% end %>
         | 
| 54 | 
            +
                    <% end %>
         | 
| 55 | 
            +
                  )
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  show_view template do
         | 
| 58 | 
            +
                    assert_select "div.col-24" do
         | 
| 59 | 
            +
                      assert_select "fieldset.hform.col-12" do
         | 
| 60 | 
            +
                        assert_select "div.col-4", "text"
         | 
| 61 | 
            +
                        assert_select "div.col-8.col-last", "more text"
         | 
| 62 | 
            +
                      end
         | 
| 63 | 
            +
                      assert_select "table.col-12.col-last", "table"
         | 
| 64 | 
            +
                    end
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                should "properly assign classes for generic helpers without column wrappers" do
         | 
| 69 | 
            +
                  template = %(
         | 
| 70 | 
            +
                    <% fieldset :hform, :half do %>
         | 
| 71 | 
            +
                      <% set :one_third do %>text<% end %>
         | 
| 72 | 
            +
                      <% set :two_thirds, :last do %>more text<% end %>
         | 
| 73 | 
            +
                      <% column do %>
         | 
| 74 | 
            +
                        <% column :one_third do %>one third<% end %>
         | 
| 75 | 
            +
                        <% column :two_thirds, :last do %>
         | 
| 76 | 
            +
                          <% column :half do %>half<% end %>
         | 
| 77 | 
            +
                          <% column :half, :last do %>last half<% end %>
         | 
| 78 | 
            +
                        <% end %>
         | 
| 79 | 
            +
                      <% end %>
         | 
| 80 | 
            +
                    <% end %>
         | 
| 81 | 
            +
                    <% column :one_third do %>
         | 
| 82 | 
            +
                      <% column :one_fourth do %>two wide<% end %>
         | 
| 83 | 
            +
                      <% column :half do %>four wide<% end %>
         | 
| 84 | 
            +
                      <% column :one_fourth, :last do %>two more wide<% end %>
         | 
| 85 | 
            +
                    <% end %>
         | 
| 86 | 
            +
                    <% recordset :one_sixth, :last do %>table<% end %>
         | 
| 87 | 
            +
                  )
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                  show_view template do
         | 
| 90 | 
            +
                    assert_select "fieldset.hform.col-12" do
         | 
| 91 | 
            +
                      assert_select "div.col-4", "text"
         | 
| 92 | 
            +
                      assert_select "div.col-8.col-last", "more text"
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                      assert_select "div.col-12.col-last" do
         | 
| 95 | 
            +
                        assert_select "div.col-4", "one third"
         | 
| 96 | 
            +
                        assert_select "div.col-8.col-last" do
         | 
| 97 | 
            +
                          assert_select "div.col-4", "half"
         | 
| 98 | 
            +
                          assert_select "div.col-4.col-last", "last half"
         | 
| 99 | 
            +
                        end
         | 
| 100 | 
            +
                      end
         | 
| 101 | 
            +
                    end
         | 
| 102 | 
            +
                    assert_select "div.col-8" do
         | 
| 103 | 
            +
                      assert_select "div.col-2", "two wide"
         | 
| 104 | 
            +
                      assert_select "div.col-4", "four wide"
         | 
| 105 | 
            +
                      assert_select "div.col-2.col-last", "two more wide"
         | 
| 106 | 
            +
                    end
         | 
| 107 | 
            +
                    assert_select "table.col-4.col-last", "table"
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                should "properly assign classes for a deeply-nested view" do
         | 
| 112 | 
            +
                  template = %(
         | 
| 113 | 
            +
                    <% container :full do %>
         | 
| 114 | 
            +
                      <% column :half do %>
         | 
| 115 | 
            +
                        <% fieldset :hform, :half do %>
         | 
| 116 | 
            +
                          <% set :one_third do %>text<% end %>
         | 
| 117 | 
            +
                          <% set :two_thirds, :last do %>more text<% end %>
         | 
| 118 | 
            +
                        <% end %>
         | 
| 119 | 
            +
                        <% recordset :half, :last do %>table<% end %>
         | 
| 120 | 
            +
                      <% end %>
         | 
| 121 | 
            +
                      <% column :one_third do %>one third!<% end %>
         | 
| 122 | 
            +
                      <% column :one_sixth, :last do %>
         | 
| 123 | 
            +
                        <% fieldset :vform, :full do %>
         | 
| 124 | 
            +
                          <% set do %>text<% end %>
         | 
| 125 | 
            +
                        <% end %>
         | 
| 126 | 
            +
                      <% end %>
         | 
| 127 | 
            +
                    <% end %>
         | 
| 128 | 
            +
                  )
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                  show_view template do
         | 
| 131 | 
            +
                    assert_select "div.container.col-24", 1
         | 
| 132 | 
            +
                    assert_select "div.container" do
         | 
| 133 | 
            +
                      assert_select "div.col-12" do
         | 
| 134 | 
            +
                        assert_select "fieldset.hform.col-6" do
         | 
| 135 | 
            +
                          assert_select "div.col-2", "text"
         | 
| 136 | 
            +
                          assert_select "div.col-4.col-last", "more text"
         | 
| 137 | 
            +
                        end
         | 
| 138 | 
            +
                        assert_select "table.col-6.col-last", "table"
         | 
| 139 | 
            +
                      end
         | 
| 140 | 
            +
             | 
| 141 | 
            +
                      assert_select "div.col-8", "one third!"
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                      assert_select "div.col-4.col-last" do
         | 
| 144 | 
            +
                        assert_select "fieldset.vform.col-4.col-last" do
         | 
| 145 | 
            +
                          assert_select "div", "text"
         | 
| 146 | 
            +
                        end
         | 
| 147 | 
            +
                      end
         | 
| 148 | 
            +
                    end
         | 
| 149 | 
            +
                  end
         | 
| 150 | 
            +
                end
         | 
| 151 | 
            +
             | 
| 152 | 
            +
                should "properly assign classes when using Blueprint grid" do
         | 
| 153 | 
            +
                  template = %(
         | 
| 154 | 
            +
                    <% container do %>
         | 
| 155 | 
            +
                      <% column do %>
         | 
| 156 | 
            +
                        <% column :half, :id => "primary" do %>
         | 
| 157 | 
            +
                          <% column :one_third do %>
         | 
| 158 | 
            +
                            one third of one half of 24 is 4
         | 
| 159 | 
            +
                          <% end %>
         | 
| 160 | 
            +
                          <% column :one_third, :last, prepend_one_third do %>
         | 
| 161 | 
            +
                            one third of one half of 24 is 4 (but prepended 4 as well)
         | 
| 162 | 
            +
                          <% end %>
         | 
| 163 | 
            +
                          <hr/>
         | 
| 164 | 
            +
                          more text
         | 
| 165 | 
            +
                        <% end %>
         | 
| 166 | 
            +
                        <% column :half, :last, :id => "secondary" do %>
         | 
| 167 | 
            +
                          second column
         | 
| 168 | 
            +
                        <% end %>
         | 
| 169 | 
            +
                        <hr/>
         | 
| 170 | 
            +
                        text
         | 
| 171 | 
            +
                      <% end %>
         | 
| 172 | 
            +
                    <% end %>
         | 
| 173 | 
            +
                  )
         | 
| 174 | 
            +
                  EaselHelpers::Helpers::GridHelper.blueprint_grid!
         | 
| 175 | 
            +
                  show_view template do
         | 
| 176 | 
            +
                    assert_select ".container", 1
         | 
| 177 | 
            +
                    assert_select ".span-24", 1
         | 
| 178 | 
            +
                    assert_select ".span-12", 2
         | 
| 179 | 
            +
                    assert_select ".span-12#primary", 1
         | 
| 180 | 
            +
                    assert_select ".span-12#secondary", 1
         | 
| 181 | 
            +
                    assert_select ".span-4", 2
         | 
| 182 | 
            +
                    assert_select ".prepend-4", 1
         | 
| 183 | 
            +
                    assert_select ".span-24.last", 0
         | 
| 184 | 
            +
                    assert_select ".span-12.last", 1
         | 
| 185 | 
            +
                    assert_select ".span-4.last", 1
         | 
| 186 | 
            +
                    assert_select "hr", 2
         | 
| 187 | 
            +
                  end
         | 
| 188 | 
            +
                  EaselHelpers::Helpers::GridHelper.easel_grid!
         | 
| 189 | 
            +
                end
         | 
| 190 | 
            +
              end
         | 
| 191 | 
            +
             | 
| 192 | 
            +
              context "column" do
         | 
| 193 | 
            +
             | 
| 194 | 
            +
                should "allow assigning options hash without having to define a width" do
         | 
| 195 | 
            +
                  show_view %(
         | 
| 196 | 
            +
                    <% column :id => "my-custom-id", :class => "content" do %>words<% end %>
         | 
| 197 | 
            +
                  ) do
         | 
| 198 | 
            +
                    assert_select "div.col-24.content#my-custom-id", "words"
         | 
| 199 | 
            +
                  end
         | 
| 200 | 
            +
                end
         | 
| 201 | 
            +
             | 
| 202 | 
            +
                should "allow explicit column assignment" do
         | 
| 203 | 
            +
                  show_view %(
         | 
| 204 | 
            +
                    <% column 6, :sidebar do %>
         | 
| 205 | 
            +
                      <% column :id => "main" do %>main sidebar<% end %>
         | 
| 206 | 
            +
                      <% column :half do %>three<% end %>
         | 
| 207 | 
            +
                      <% column :one_third do %>two<% end %>
         | 
| 208 | 
            +
                      <% column 1, :last do %>one<% end %>
         | 
| 209 | 
            +
                    <% end %>
         | 
| 210 | 
            +
                  ) do
         | 
| 211 | 
            +
                    assert_select "div.col-6.sidebar" do
         | 
| 212 | 
            +
                      assert_select "div.col-6.col-last#main", "main sidebar"
         | 
| 213 | 
            +
                      assert_select "div.col-3", "three"
         | 
| 214 | 
            +
                      assert_select "div.col-2", "two"
         | 
| 215 | 
            +
                      assert_select "div.col-1.col-last", "one"
         | 
| 216 | 
            +
                    end
         | 
| 217 | 
            +
                  end
         | 
| 218 | 
            +
                end
         | 
| 219 | 
            +
             | 
| 220 | 
            +
                should "allow tag overriding" do
         | 
| 221 | 
            +
                  show_view %(<% column :tag => :section do %>content<% end %>) do
         | 
| 222 | 
            +
                    assert_select "section.col-24:not([tag=section])", "content"
         | 
| 223 | 
            +
                  end
         | 
| 224 | 
            +
                end
         | 
| 225 | 
            +
              end
         | 
| 226 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class JqueryHelperTest < EaselHelpers::ViewTestCase
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              context "document_ready" do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                setup do
         | 
| 8 | 
            +
                  @whitespace = '\s+?'
         | 
| 9 | 
            +
                  @anything =   '(.|\s)+?'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  @anon_function_start_regex  = Regexp.escape "(function($) {"
         | 
| 12 | 
            +
                  @document_ready_start_regex = Regexp.escape   "$(document).ready(function() {"
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  @document_ready_end_regex   = Regexp.escape   "});"
         | 
| 15 | 
            +
                  @anon_function_end_regex    = Regexp.escape "})(jQuery);"
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                should "properly build the document ready script tag" do
         | 
| 19 | 
            +
                  show_view %(
         | 
| 20 | 
            +
                    <% document_ready do %>
         | 
| 21 | 
            +
                      alert("hello!");
         | 
| 22 | 
            +
                    <% end %>
         | 
| 23 | 
            +
                  ) do
         | 
| 24 | 
            +
                    assert_select "script[type=?]", "text/javascript", /#{@anon_function_start_regex}#{@whitespace}#{@document_ready_start_regex}#{@whitespace}alert#{@anything}#{@document_ready_end_regex}#{@whitespace}#{@anon_function_end_regex}/
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            end
         | 
| @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class LinkHelperTest < EaselHelpers::ViewTestCase
         | 
| 4 | 
            +
              context "link_button" do
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                should "default with the correct structure" do
         | 
| 7 | 
            +
                  show_view "<%= link_button 'Link Text', '#' %>" do
         | 
| 8 | 
            +
                    assert_select "a.btn[href=#]" do
         | 
| 9 | 
            +
                      assert_select "span", "Link Text"
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                should "allow the same assignment as link_to" do
         | 
| 15 | 
            +
                  show_view "<%= link_button 'Link Text', '#', :class => 'my-button', :id => 'link-text' %>" do
         | 
| 16 | 
            +
                    assert_select "a.btn.my-button#link-text[href=#]" do
         | 
| 17 | 
            +
                      assert_select "span", "Link Text"
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              context "link_to_email" do
         | 
| 25 | 
            +
                should "default with the correct structure" do
         | 
| 26 | 
            +
                  show_view "<%= link_to_email 'test@example.com' %>" do
         | 
| 27 | 
            +
                    assert_select "a[href=mailto:test@example.com]", "test@example.com"
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                should "allow override of link text as the first argument after email" do
         | 
| 32 | 
            +
                  show_view "<%= link_to_email 'test@example.com', 'Send an email to Test User' %>" do
         | 
| 33 | 
            +
                    assert_select "a[href=mailto:test@example.com]", "Send an email to Test User"
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                should "allow the same assignment as link_to" do
         | 
| 38 | 
            +
                  show_view "<%= link_to_email 'test@example.com', :class => 'test-user-email', :id => 'user_1_email' %>" do
         | 
| 39 | 
            +
                    assert_select "a.test-user-email#user_1_email[href=mailto:test@example.com]", "test@example.com"
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
            end
         | 
| @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class MessageHelperTest < EaselHelpers::ViewTestCase
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              context "messages" do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                should "default with the correct structure" do
         | 
| 8 | 
            +
                  show_view %(<%= messages(:structure => "Flash message") %>) do
         | 
| 9 | 
            +
                    assert_select "p.structure.box.single-line", "Flash message"
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                should "display all flash messages present" do
         | 
| 14 | 
            +
                  show_view %(<%= messages(:structure => "Flash message", :error => "Warning message") %>) do
         | 
| 15 | 
            +
                    assert_select "p.structure", "Flash message"
         | 
| 16 | 
            +
                    assert_select "p.error", "Warning message"
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                should "not display a flash if it is blank" do
         | 
| 21 | 
            +
                  show_view %(<%= messages(:structure => "", :error => nil) %>) do
         | 
| 22 | 
            +
                    assert_select "p.structure", false
         | 
| 23 | 
            +
                    assert_select "p.error", false
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                should "filter by the :only option" do
         | 
| 28 | 
            +
                  show_view %(<%= messages({:structure => "Flash message", :error => "Warning message", :notice => "Notice!"}, {:only => [:structure, :error]}) %>) do
         | 
| 29 | 
            +
                    assert_select "p.structure", "Flash message"
         | 
| 30 | 
            +
                    assert_select "p.error", "Warning message"
         | 
| 31 | 
            +
                    assert_select "p.notice", false
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                should "filter by the :except option" do
         | 
| 36 | 
            +
                  show_view %(<%= messages({:structure => "Flash message", :error => "Warning message", :notice => "Notice!"}, {:except => [:structure, :error]}) %>) do
         | 
| 37 | 
            +
                    assert_select "p.structure", false
         | 
| 38 | 
            +
                    assert_select "p.error", false
         | 
| 39 | 
            +
                    assert_select "p.notice", "Notice!"
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                should "raise an error of :only and :except are both passed" do
         | 
| 44 | 
            +
                  assert_raise ArgumentError, /conflict/ do
         | 
| 45 | 
            +
                    show_view %(<%= messages({:structure => "Flash message"}, {:except => [:structure, :error], :only => :structure}) %>)
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            end
         | 
| @@ -0,0 +1,130 @@ | |
| 1 | 
            +
            require "test_helper"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class NavigationHelperTest < ActiveSupport::TestCase
         | 
| 4 | 
            +
              include EaselHelpers::Helpers::NavigationHelper
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              context "tab" do
         | 
| 7 | 
            +
                should "parse tab options properly" do
         | 
| 8 | 
            +
                  expects(:parse_tab_options).with("test", {:b => 2}).returns({})
         | 
| 9 | 
            +
                  stubs(:link_to)
         | 
| 10 | 
            +
                  stubs(:content_tag)
         | 
| 11 | 
            +
                  stubs(:clean_css_classes)
         | 
| 12 | 
            +
                  tab("test", "/", {:a => 1}, {:b => 2})
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                should "call link_to properly" do
         | 
| 16 | 
            +
                  stubs(:content_tag)
         | 
| 17 | 
            +
                  stubs(:clean_css_classes)
         | 
| 18 | 
            +
                  stubs(:parse_tab_options).returns({})
         | 
| 19 | 
            +
                  expects(:link_to).with("test", "/path", {:a => 1, :b => 2})
         | 
| 20 | 
            +
                  tab("test", "/path", {:a => 1, :b => 2})
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                context "compiling li classes" do
         | 
| 24 | 
            +
                  setup do
         | 
| 25 | 
            +
                    @result_options = { :active => "1",
         | 
| 26 | 
            +
                                        :comparison => "2",
         | 
| 27 | 
            +
                                        :compare => false,
         | 
| 28 | 
            +
                                        :li_classes => "one two three" }
         | 
| 29 | 
            +
                    stubs(:link_to).returns("link_to")
         | 
| 30 | 
            +
                    stubs(:content_tag)
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  should "properly use classes passed in the options" do
         | 
| 34 | 
            +
                    stubs(:parse_tab_options).returns(@result_options)
         | 
| 35 | 
            +
                    expects(:clean_css_classes).with(["one two three", nil])
         | 
| 36 | 
            +
                    tab("test", "/")
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  should "properly compare information" do
         | 
| 40 | 
            +
                    @result_options[:comparison] = "1"
         | 
| 41 | 
            +
                    stubs(:parse_tab_options).returns(@result_options)
         | 
| 42 | 
            +
                    expects(:clean_css_classes).with(["one two three", "active"])
         | 
| 43 | 
            +
                    tab("test", "/")
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  should "properly use compare value" do
         | 
| 47 | 
            +
                    @result_options[:compare] = true
         | 
| 48 | 
            +
                    stubs(:parse_tab_options).returns(@result_options)
         | 
| 49 | 
            +
                    expects(:clean_css_classes).with(["one two three", "active"])
         | 
| 50 | 
            +
                    tab("test", "/")
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  should "not assign class if css_classes is blank" do
         | 
| 54 | 
            +
                    @result_options[:li_classes] = nil
         | 
| 55 | 
            +
                    stubs(:parse_tab_options).returns({})
         | 
| 56 | 
            +
                    stubs(:clean_css_classes).returns("")
         | 
| 57 | 
            +
                    expects(:content_tag).with(:li, "link_to", {})
         | 
| 58 | 
            +
                    tab("test", "/")
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                context "parse_tab_options" do
         | 
| 63 | 
            +
                  context "calculating :active" do
         | 
| 64 | 
            +
                    setup do
         | 
| 65 | 
            +
                      stubs(:controller).returns(stub_everything)
         | 
| 66 | 
            +
                    end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                    should "be based on option" do
         | 
| 69 | 
            +
                      result = send(:parse_tab_options, "name", {:active => "words"})
         | 
| 70 | 
            +
                      assert_equal "words", result[:active]
         | 
| 71 | 
            +
                    end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                    should "be based on name" do
         | 
| 74 | 
            +
                      name = tableized_name = stub
         | 
| 75 | 
            +
                      name.expects(:gsub).with(/\s/, '').returns(tableized_name)
         | 
| 76 | 
            +
                      tableized_name.expects(:tableize).returns("name")
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                      result = send(:parse_tab_options, name, {})
         | 
| 79 | 
            +
                      assert_equal "name", result[:active]
         | 
| 80 | 
            +
                    end
         | 
| 81 | 
            +
                  end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                  context "calculating :comparison" do
         | 
| 84 | 
            +
                    should "be based on option" do
         | 
| 85 | 
            +
                      result = send(:parse_tab_options, "name", {:active_compare => "active"})
         | 
| 86 | 
            +
                      assert_equal "active", result[:comparison]
         | 
| 87 | 
            +
                    end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                    should "be based on controller name" do
         | 
| 90 | 
            +
                      controller = stub(:controller_name => "controller-name")
         | 
| 91 | 
            +
                      expects(:controller).returns(controller)
         | 
| 92 | 
            +
                      result = send(:parse_tab_options, "name", {})
         | 
| 93 | 
            +
                      assert_equal "controller-name", result[:comparison]
         | 
| 94 | 
            +
                    end
         | 
| 95 | 
            +
                  end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                  context "calculating :compare" do
         | 
| 98 | 
            +
                    setup do
         | 
| 99 | 
            +
                      stubs(:controller).returns(stub_everything)
         | 
| 100 | 
            +
                    end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                    should "be based on option" do
         | 
| 103 | 
            +
                      result = send(:parse_tab_options, "name", {:compare => true})
         | 
| 104 | 
            +
                      assert_equal true, result[:compare]
         | 
| 105 | 
            +
                    end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                    should "have a default value" do
         | 
| 108 | 
            +
                      result = send(:parse_tab_options, "name")
         | 
| 109 | 
            +
                      assert_equal false, result[:compare]
         | 
| 110 | 
            +
                    end
         | 
| 111 | 
            +
                  end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                  context "calculating :li_classes" do
         | 
| 114 | 
            +
                    setup do
         | 
| 115 | 
            +
                      stubs(:controller).returns(stub_everything)
         | 
| 116 | 
            +
                    end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                    should "be based on option" do
         | 
| 119 | 
            +
                      result = send(:parse_tab_options, "name", {:class => "custom classes"})
         | 
| 120 | 
            +
                      assert_equal "custom classes", result[:li_classes]
         | 
| 121 | 
            +
                    end
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                    should "be nil if no option is passed" do
         | 
| 124 | 
            +
                      result = send(:parse_tab_options, "name")
         | 
| 125 | 
            +
                      assert_nil result[:li_classes]
         | 
| 126 | 
            +
                    end
         | 
| 127 | 
            +
                  end
         | 
| 128 | 
            +
                end
         | 
| 129 | 
            +
              end
         | 
| 130 | 
            +
            end
         |