gretel 3.0.7 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +11 -7
  3. data/.travis.yml +9 -7
  4. data/CHANGELOG.md +29 -1
  5. data/Gemfile +2 -13
  6. data/LICENSE.txt +2 -2
  7. data/README.md +36 -84
  8. data/Rakefile +3 -7
  9. data/coverage/coverage.txt +5 -0
  10. data/gretel.gemspec +12 -11
  11. data/lib/gretel.rb +2 -23
  12. data/lib/gretel/crumb.rb +9 -0
  13. data/lib/gretel/renderer.rb +43 -27
  14. data/lib/gretel/version.rb +2 -2
  15. data/lib/gretel/view_helpers.rb +0 -4
  16. metadata +63 -116
  17. data/gemfiles/Gemfile-rails.3.2.x +0 -17
  18. data/gemfiles/Gemfile-rails.4.0.x +0 -17
  19. data/gemfiles/Gemfile-rails.4.1.x +0 -17
  20. data/lib/gretel/deprecated.rb +0 -1
  21. data/lib/gretel/deprecated/default_style_key.rb +0 -11
  22. data/lib/gretel/deprecated/layout.rb +0 -15
  23. data/lib/gretel/deprecated/show_root_alone.rb +0 -12
  24. data/lib/gretel/deprecated/yield_links.rb +0 -20
  25. data/test/deprecated_test.rb +0 -45
  26. data/test/dummy/Rakefile +0 -7
  27. data/test/dummy/app/assets/javascripts/application.js +0 -15
  28. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  29. data/test/dummy/app/controllers/application_controller.rb +0 -3
  30. data/test/dummy/app/helpers/application_helper.rb +0 -5
  31. data/test/dummy/app/mailers/.gitkeep +0 -0
  32. data/test/dummy/app/models/.gitkeep +0 -0
  33. data/test/dummy/app/models/issue.rb +0 -3
  34. data/test/dummy/app/models/project.rb +0 -3
  35. data/test/dummy/app/views/breadcrumbs/site.rb +0 -3
  36. data/test/dummy/config.ru +0 -4
  37. data/test/dummy/config/application.rb +0 -14
  38. data/test/dummy/config/boot.rb +0 -10
  39. data/test/dummy/config/breadcrumbs.rb +0 -3
  40. data/test/dummy/config/breadcrumbs/test_crumbs.rb +0 -80
  41. data/test/dummy/config/database.yml +0 -25
  42. data/test/dummy/config/environment.rb +0 -5
  43. data/test/dummy/config/environments/development.rb +0 -2
  44. data/test/dummy/config/environments/production.rb +0 -2
  45. data/test/dummy/config/environments/test.rb +0 -2
  46. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  47. data/test/dummy/config/initializers/inflections.rb +0 -15
  48. data/test/dummy/config/initializers/mime_types.rb +0 -5
  49. data/test/dummy/config/initializers/secret_token.rb +0 -7
  50. data/test/dummy/config/initializers/session_store.rb +0 -8
  51. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  52. data/test/dummy/config/locales/en.yml +0 -5
  53. data/test/dummy/config/routes.rb +0 -11
  54. data/test/dummy/db/migrate/20130122163007_create_projects.rb +0 -9
  55. data/test/dummy/db/migrate/20130122163051_create_issues.rb +0 -10
  56. data/test/dummy/db/schema.rb +0 -29
  57. data/test/dummy/lib/assets/.gitkeep +0 -0
  58. data/test/dummy/log/.gitkeep +0 -0
  59. data/test/dummy/public/404.html +0 -26
  60. data/test/dummy/public/422.html +0 -26
  61. data/test/dummy/public/500.html +0 -25
  62. data/test/dummy/public/favicon.ico +0 -0
  63. data/test/dummy/script/rails +0 -6
  64. data/test/fixtures/issues.yml +0 -4
  65. data/test/fixtures/projects.yml +0 -3
  66. data/test/gretel_test.rb +0 -24
  67. data/test/helper_methods_test.rb +0 -532
  68. data/test/test_helper.rb +0 -15
@@ -1,5 +0,0 @@
1
- # Sample localization file for English. Add more files in this directory for other locales.
2
- # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
-
4
- en:
5
- hello: "Hello world"
@@ -1,11 +0,0 @@
1
- Dummy::Application.routes.draw do
2
- root to: "dummy#dummy"
3
-
4
- get "about" => "dummy#dummy", as: :about
5
- get "about/contact" => "dummy#dummy", as: :contact
6
- get "about/contact/form" => "dummy#dummy", as: :contact_form
7
-
8
- resources :projects do
9
- resources :issues
10
- end
11
- end
@@ -1,9 +0,0 @@
1
- class CreateProjects < ActiveRecord::Migration
2
- def change
3
- create_table :projects do |t|
4
- t.string :name
5
-
6
- t.timestamps
7
- end
8
- end
9
- end
@@ -1,10 +0,0 @@
1
- class CreateIssues < ActiveRecord::Migration
2
- def change
3
- create_table :issues do |t|
4
- t.string :title
5
- t.integer :project_id
6
-
7
- t.timestamps
8
- end
9
- end
10
- end
@@ -1,29 +0,0 @@
1
- # encoding: UTF-8
2
- # This file is auto-generated from the current state of the database. Instead
3
- # of editing this file, please use the migrations feature of Active Record to
4
- # incrementally modify your database, and then regenerate this schema definition.
5
- #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
11
- #
12
- # It's strongly recommended to check this file into your version control system.
13
-
14
- ActiveRecord::Schema.define(:version => 20130122163051) do
15
-
16
- create_table "issues", :force => true do |t|
17
- t.string "title"
18
- t.integer "project_id"
19
- t.datetime "created_at", :null => false
20
- t.datetime "updated_at", :null => false
21
- end
22
-
23
- create_table "projects", :force => true do |t|
24
- t.string "name"
25
- t.datetime "created_at", :null => false
26
- t.datetime "updated_at", :null => false
27
- end
28
-
29
- end
File without changes
File without changes
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The page you were looking for doesn't exist (404)</title>
5
- <style type="text/css">
6
- body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
- div.dialog {
8
- width: 25em;
9
- padding: 0 4em;
10
- margin: 4em auto 0 auto;
11
- border: 1px solid #ccc;
12
- border-right-color: #999;
13
- border-bottom-color: #999;
14
- }
15
- h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <!-- This file lives in public/404.html -->
21
- <div class="dialog">
22
- <h1>The page you were looking for doesn't exist.</h1>
23
- <p>You may have mistyped the address or the page may have moved.</p>
24
- </div>
25
- </body>
26
- </html>
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The change you wanted was rejected (422)</title>
5
- <style type="text/css">
6
- body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
- div.dialog {
8
- width: 25em;
9
- padding: 0 4em;
10
- margin: 4em auto 0 auto;
11
- border: 1px solid #ccc;
12
- border-right-color: #999;
13
- border-bottom-color: #999;
14
- }
15
- h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <!-- This file lives in public/422.html -->
21
- <div class="dialog">
22
- <h1>The change you wanted was rejected.</h1>
23
- <p>Maybe you tried to change something you didn't have access to.</p>
24
- </div>
25
- </body>
26
- </html>
@@ -1,25 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>We're sorry, but something went wrong (500)</title>
5
- <style type="text/css">
6
- body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
- div.dialog {
8
- width: 25em;
9
- padding: 0 4em;
10
- margin: 4em auto 0 auto;
11
- border: 1px solid #ccc;
12
- border-right-color: #999;
13
- border-bottom-color: #999;
14
- }
15
- h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <!-- This file lives in public/500.html -->
21
- <div class="dialog">
22
- <h1>We're sorry, but something went wrong.</h1>
23
- </div>
24
- </body>
25
- </html>
File without changes
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
-
4
- APP_PATH = File.expand_path('../../config/application', __FILE__)
5
- require File.expand_path('../../config/boot', __FILE__)
6
- require 'rails/commands'
@@ -1,4 +0,0 @@
1
- one:
2
- id: 1
3
- project_id: 1
4
- title: Test Issue
@@ -1,3 +0,0 @@
1
- one:
2
- id: 1
3
- name: Test Project
@@ -1,24 +0,0 @@
1
- require 'test_helper'
2
-
3
- class GretelTest < ActiveSupport::TestCase
4
- setup do
5
- Gretel.reset!
6
- end
7
-
8
- test "defaults" do
9
- assert_equal [Rails.root.join("config", "breadcrumbs.rb"),
10
- Rails.root.join("config", "breadcrumbs", "**", "*.rb"),
11
- Rails.root.join("app", "views", "breadcrumbs", "**", "*.rb")],
12
- Gretel.breadcrumb_paths[-3..-1]
13
- assert_equal ["development"], Gretel.reload_environments
14
- assert !Gretel.suppress_deprecation_warnings?
15
- end
16
-
17
- test "configuration block" do
18
- Gretel.configure do |config|
19
- config.reload_environments << "staging"
20
- end
21
-
22
- assert_equal ["development", "staging"], Gretel.reload_environments
23
- end
24
- end
@@ -1,532 +0,0 @@
1
- require 'test_helper'
2
-
3
- class HelperMethodsTest < ActionView::TestCase
4
- include Gretel::ViewHelpers
5
-
6
- self.fixture_path = File.expand_path("../../test/fixtures", __FILE__)
7
- fixtures :all
8
-
9
- helper :application
10
-
11
- setup do
12
- Gretel.reset!
13
- end
14
-
15
- def itemscope_value
16
- ActionView::Helpers::TagHelper::BOOLEAN_ATTRIBUTES.include?("itemscope") ?
17
- "itemscope" : ""
18
- end
19
-
20
- # Breadcrumb generation
21
-
22
- test "basic breadcrumb" do
23
- breadcrumb :basic
24
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
25
- breadcrumbs.to_s
26
- end
27
-
28
- test "breadcrumb with root" do
29
- breadcrumb :with_root
30
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
31
- breadcrumbs.to_s
32
- end
33
-
34
- test "breadcrumb with parent" do
35
- breadcrumb :with_parent
36
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/about">About</a> &rsaquo; <span class="current">Contact</span></div>},
37
- breadcrumbs.to_s
38
- end
39
-
40
- test "breadcrumb with autopath" do
41
- breadcrumb :with_autopath, projects(:one)
42
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">Test Project</span></div>},
43
- breadcrumbs.to_s
44
- end
45
-
46
- test "breadcrumb with parent object" do
47
- breadcrumb :with_parent_object, issues(:one)
48
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/projects/1">Test Project</a> &rsaquo; <span class="current">Test Issue</span></div>},
49
- breadcrumbs.to_s
50
- end
51
-
52
- test "multiple links" do
53
- breadcrumb :multiple_links
54
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/about/contact">Contact</a> &rsaquo; <span class="current">Contact form</span></div>},
55
- breadcrumbs.to_s
56
- end
57
-
58
- test "multiple links with parent" do
59
- breadcrumb :multiple_links_with_parent
60
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/about">About</a> &rsaquo; <a href="/about/contact">Contact</a> &rsaquo; <span class="current">Contact form</span></div>},
61
- breadcrumbs.to_s
62
- end
63
-
64
- test "semantic breadcrumb" do
65
- breadcrumb :with_root
66
- assert_dom_equal %Q{<div class="breadcrumbs"><span itemscope="#{itemscope_value}" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/" itemprop="url"><span itemprop="title">Home</span></a></span> &rsaquo; <span itemscope="#{itemscope_value}" itemtype="http://data-vocabulary.org/Breadcrumb"><span class="current" itemprop="title">About</span></span></div>},
67
- breadcrumbs(semantic: true).to_s
68
- end
69
-
70
- test "doesn't show root alone" do
71
- breadcrumb :root
72
- assert_dom_equal "", breadcrumbs.to_s
73
- end
74
-
75
- test "displays single fragment" do
76
- breadcrumb :root
77
- assert_dom_equal %{<div class="breadcrumbs"><span class="current">Home</span></div>},
78
- breadcrumbs(display_single_fragment: true).to_s
79
- end
80
-
81
- test "displays single non-root fragment" do
82
- breadcrumb :basic
83
- assert_dom_equal %{<div class="breadcrumbs"><span class="current">About</span></div>},
84
- breadcrumbs(autoroot: false, display_single_fragment: true).to_s
85
- end
86
-
87
- test "no breadcrumb" do
88
- assert_dom_equal "", breadcrumbs.to_s
89
- end
90
-
91
- test "links current breadcrumb" do
92
- breadcrumb :with_root
93
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/about" class="current">About</a></div>},
94
- breadcrumbs(link_current: true).to_s
95
- end
96
-
97
- test "pretext" do
98
- breadcrumb :basic
99
- assert_dom_equal %{<div class="breadcrumbs"><span class="pretext">You are here:</span> <a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
100
- breadcrumbs(pretext: "You are here:").to_s
101
- end
102
-
103
- test "posttext" do
104
- breadcrumb :basic
105
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span> <span class="posttext">text after breadcrumbs</span></div>},
106
- breadcrumbs(posttext: "text after breadcrumbs").to_s
107
- end
108
-
109
- test "autoroot disabled" do
110
- breadcrumb :basic
111
- assert_dom_equal "", breadcrumbs(autoroot: false).to_s
112
- end
113
-
114
- test "separator" do
115
- breadcrumb :with_root
116
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &raquo; <span class="current">About</span></div>},
117
- breadcrumbs(separator: " &raquo; ").to_s
118
- end
119
-
120
- test "element id" do
121
- breadcrumb :basic
122
- assert_dom_equal %{<div class="breadcrumbs" id="custom_id"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
123
- breadcrumbs(id: "custom_id").to_s
124
- end
125
-
126
- test "custom container class" do
127
- breadcrumb :basic
128
- assert_dom_equal %{<div class="custom_class"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
129
- breadcrumbs(class: "custom_class").to_s
130
- end
131
-
132
- test "custom current class" do
133
- breadcrumb :basic
134
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="custom_current_class">About</span></div>},
135
- breadcrumbs(current_class: "custom_current_class").to_s
136
- end
137
-
138
- test "custom pretext class" do
139
- breadcrumb :basic
140
- assert_dom_equal %{<div class="breadcrumbs"><span class="custom_pretext_class">You are here:</span> <a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
141
- breadcrumbs(pretext: "You are here:", pretext_class: "custom_pretext_class").to_s
142
- end
143
-
144
- test "custom posttext class" do
145
- breadcrumb :basic
146
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span> <span class="custom_posttext_class">after breadcrumbs</span></div>},
147
- breadcrumbs(posttext: "after breadcrumbs", posttext_class: "custom_posttext_class").to_s
148
- end
149
-
150
- test "unsafe html" do
151
- breadcrumb :with_unsafe_html
152
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">Test &lt;strong&gt;bold text&lt;/strong&gt;</span></div>},
153
- breadcrumbs.to_s
154
- end
155
-
156
- test "safe html" do
157
- breadcrumb :with_safe_html
158
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">Test <strong>bold text</strong></span></div>},
159
- breadcrumbs.to_s
160
- end
161
-
162
- test "parent breadcrumb" do
163
- breadcrumb :multiple_links_with_parent
164
-
165
- parent = parent_breadcrumb
166
- assert_equal [:multiple_links_with_parent, "Contact", "/about/contact"],
167
- [parent.key, parent.text, parent.url]
168
- end
169
-
170
- test "yields parent breadcrumb" do
171
- breadcrumb :multiple_links_with_parent
172
-
173
- out = parent_breadcrumb do |parent|
174
- [parent.key, parent.text, parent.url]
175
- end
176
- assert_equal [:multiple_links_with_parent, "Contact", "/about/contact"],
177
- out
178
- end
179
-
180
- test "parent breadcrumb returns nil if not present" do
181
- breadcrumb :basic
182
-
183
- assert_nil parent_breadcrumb(autoroot: false)
184
- end
185
-
186
- test "parent breadcrumb yields only if present" do
187
- breadcrumb :basic
188
-
189
- out = parent_breadcrumb(autoroot: false) do
190
- "yielded"
191
- end
192
-
193
- assert_nil out
194
- end
195
-
196
- test "link keys" do
197
- breadcrumb :basic
198
- assert_equal [:root, :basic], breadcrumbs.keys
199
- end
200
-
201
- test "using breadcrumbs as array" do
202
- breadcrumb :basic
203
-
204
- breadcrumbs.tap do |links|
205
- assert_kind_of Array, links
206
- assert_equal 2, links.count
207
- end
208
- end
209
-
210
- test "sets current on last link in array" do
211
- breadcrumb :multiple_links_with_parent
212
- assert_equal [false, false, false, true], breadcrumbs.map(&:current?)
213
- end
214
-
215
- test "passing options to links" do
216
- breadcrumb :with_link_options
217
-
218
- breadcrumbs(autoroot: false).tap do |links|
219
- links[0].tap do |link|
220
- assert link.title?
221
- assert_equal "My Title", link.title
222
-
223
- assert link.other?
224
- assert_equal "Other Option", link.other
225
-
226
- assert !link.nonexistent?
227
- assert_nil link.nonexistent
228
- end
229
-
230
- links[1].tap do |link|
231
- assert link.some_option?
232
- assert_equal "Test", link.some_option
233
- end
234
- end
235
-
236
- assert_dom_equal %{<div class="breadcrumbs"><a href="/about">Test</a> &rsaquo; <span class="current">Other Link</span></div>},
237
- breadcrumbs(autoroot: false).to_s
238
- end
239
-
240
- test "without link" do
241
- breadcrumb :without_link
242
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; Also without link &rsaquo; <span class="current">Without link</span></div>},
243
- breadcrumbs.to_s
244
- end
245
-
246
- test "view context" do
247
- breadcrumb :using_view_helper
248
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">TestTest</span></div>},
249
- breadcrumbs.to_s
250
- end
251
-
252
- test "multiple arguments" do
253
- breadcrumb :with_multiple_arguments, "One", "Two", "Three"
254
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/about">First OneOne then TwoTwo then ThreeThree</a> &rsaquo; <span class="current">One and Two and Three</span></div>},
255
- breadcrumbs.to_s
256
- end
257
-
258
- test "from views folder" do
259
- breadcrumb :from_views
260
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">Breadcrumb From View</span></div>},
261
- breadcrumbs.to_s
262
- end
263
-
264
- test "with_breadcrumb" do
265
- breadcrumb :basic
266
-
267
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
268
- breadcrumbs.to_s
269
-
270
- with_breadcrumb(:with_parent_object, issues(:one)) do
271
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/projects/1">Test Project</a> &rsaquo; <span class="current">Test Issue</span></div>},
272
- breadcrumbs.to_s
273
- end
274
-
275
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
276
- breadcrumbs.to_s
277
- end
278
-
279
- test "calling breadcrumbs helper twice" do
280
- breadcrumb :with_parent
281
- 2.times do
282
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/about">About</a> &rsaquo; <span class="current">Contact</span></div>},
283
- breadcrumbs.to_s
284
- end
285
- end
286
-
287
- test "breadcrumb not found" do
288
- assert_raises ArgumentError do
289
- breadcrumb :nonexistent
290
- breadcrumbs
291
- end
292
- end
293
-
294
- test "current link url is set to fullpath" do
295
- self.request = OpenStruct.new(fullpath: "/testpath?a=1&b=2")
296
-
297
- breadcrumb :basic
298
- assert_equal "/testpath?a=1&b=2", breadcrumbs.last.url
299
- end
300
-
301
- test "calling the breadcrumb method with wrong arguments" do
302
- assert_nothing_raised do
303
- breadcrumb :basic, test: 1
304
- end
305
-
306
- assert_raises ArgumentError do
307
- breadcrumb
308
- end
309
-
310
- assert_raises ArgumentError do
311
- breadcrumb(pretext: "bla")
312
- end
313
- end
314
-
315
- test "inferred breadcrumb" do
316
- breadcrumb Project.first
317
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">Test Project</span></div>},
318
- breadcrumbs.to_s
319
- end
320
-
321
- # Styles
322
-
323
- test "default style" do
324
- breadcrumb :basic
325
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
326
- breadcrumbs.to_s
327
- end
328
-
329
- test "ordered list style" do
330
- breadcrumb :basic
331
- assert_dom_equal %{<ol class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ol>},
332
- breadcrumbs(style: :ol).to_s
333
- end
334
-
335
- test "unordered list style" do
336
- breadcrumb :basic
337
- assert_dom_equal %{<ul class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ul>},
338
- breadcrumbs(style: :ul).to_s
339
- end
340
-
341
- test "bootstrap style" do
342
- breadcrumb :basic
343
- assert_dom_equal %{<ol class="breadcrumb"><li><a href="/">Home</a></li><li class="active">About</li></ol>},
344
- breadcrumbs(style: :bootstrap).to_s
345
- end
346
-
347
- test "foundation5 style" do
348
- breadcrumb :basic
349
- assert_dom_equal %{<ul class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ul>},
350
- breadcrumbs(style: :foundation5).to_s
351
- end
352
-
353
- test "custom container and fragment tags" do
354
- breadcrumb :basic
355
- assert_dom_equal %{<c class="breadcrumbs"><f><a href="/">Home</a></f> &rsaquo; <f class="current">About</f></c>},
356
- breadcrumbs(container_tag: :c, fragment_tag: :f).to_s
357
- end
358
-
359
- test "custom semantic container and fragment tags" do
360
- breadcrumb :basic
361
- assert_dom_equal %Q{<c class="breadcrumbs"><f itemscope="#{itemscope_value}" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/" itemprop="url"><span itemprop="title">Home</span></a></f> &rsaquo; <f class="current" itemscope="#{itemscope_value}" itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title">About</span></f></c>},
362
- breadcrumbs(container_tag: :c, fragment_tag: :f, semantic: true).to_s
363
- end
364
-
365
- test "unknown style" do
366
- breadcrumb :basic
367
- assert_raises ArgumentError do
368
- breadcrumbs(style: :nonexistent)
369
- end
370
- end
371
-
372
- test "register style" do
373
- Gretel.register_style :test_style, { container_tag: :one, fragment_tag: :two }
374
-
375
- breadcrumb :basic
376
-
377
- assert_dom_equal %{<one class="breadcrumbs"><two><a href="/">Home</a></two><two class="current">About</two></one>},
378
- breadcrumbs(style: :test_style).to_s
379
- end
380
-
381
- # Configuration reload
382
-
383
- test "reload configuration when file is changed" do
384
- path = setup_loading_from_tmp_folder
385
- Gretel.reload_environments << "test"
386
-
387
- File.open(path.join("site.rb"), "w") do |f|
388
- f.write <<-EOT
389
- crumb :root do
390
- link "Home (loaded)", root_path
391
- end
392
- crumb :about do
393
- link "About (loaded)", about_path
394
- end
395
- EOT
396
- end
397
-
398
- breadcrumb :about
399
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
400
-
401
- sleep 1 # File change interval is 1 second
402
-
403
- File.open(path.join("site.rb"), "w") do |f|
404
- f.write <<-EOT
405
- crumb :root do
406
- link "Home (reloaded)", "/test"
407
- end
408
- crumb :about do
409
- link "About (reloaded)", "/reloaded"
410
- end
411
- EOT
412
- end
413
-
414
- breadcrumb :about
415
- assert_dom_equal %{<div class="breadcrumbs"><a href="/test">Home (reloaded)</a> &rsaquo; <span class="current">About (reloaded)</span></div>}, breadcrumbs.to_s
416
- end
417
-
418
- test "reload configuration when file is added" do
419
- path = setup_loading_from_tmp_folder
420
- Gretel.reload_environments << "test"
421
-
422
- File.open(path.join("site.rb"), "w") do |f|
423
- f.write <<-EOT
424
- crumb :root do
425
- link "Home (loaded)", root_path
426
- end
427
- EOT
428
- end
429
-
430
- assert_raises ArgumentError do
431
- breadcrumb :about
432
- breadcrumbs
433
- end
434
-
435
- File.open(path.join("pages.rb"), "w") do |f|
436
- f.write <<-EOT
437
- crumb :about do
438
- link "About (loaded)", about_path
439
- end
440
- EOT
441
- end
442
-
443
- breadcrumb :about
444
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
445
- end
446
-
447
- test "reload configuration when file is deleted" do
448
- path = setup_loading_from_tmp_folder
449
- Gretel.reload_environments << "test"
450
-
451
- File.open(path.join("site.rb"), "w") do |f|
452
- f.write <<-EOT
453
- crumb :root do
454
- link "Home (loaded)", root_path
455
- end
456
- crumb :about do
457
- link "About (loaded)", about_path
458
- end
459
- EOT
460
- end
461
-
462
- File.open(path.join("pages.rb"), "w") do |f|
463
- f.write <<-EOT
464
- crumb :contact do
465
- link "Contact (loaded)", "/contact"
466
- parent :about
467
- end
468
- EOT
469
- end
470
-
471
- breadcrumb :contact
472
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <a href="/about">About (loaded)</a> &rsaquo; <span class="current">Contact (loaded)</span></div>}, breadcrumbs.to_s
473
-
474
- File.delete path.join("pages.rb")
475
-
476
- assert_raises ArgumentError do
477
- breadcrumb :contact
478
- breadcrumbs
479
- end
480
-
481
- breadcrumb :about
482
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
483
- end
484
-
485
- test "reloads only in development environment" do
486
- path = setup_loading_from_tmp_folder
487
-
488
- assert_equal ["development"], Gretel.reload_environments
489
-
490
- File.open(path.join("site.rb"), "w") do |f|
491
- f.write <<-EOT
492
- crumb :root do
493
- link "Home (loaded)", root_path
494
- end
495
- crumb :about do
496
- link "About (loaded)", about_path
497
- end
498
- EOT
499
- end
500
-
501
- breadcrumb :about
502
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
503
-
504
- sleep 1
505
-
506
- File.open(path.join("site.rb"), "w") do |f|
507
- f.write <<-EOT
508
- crumb :root do
509
- link "Home (reloaded)", "/test"
510
- end
511
- crumb :about do
512
- link "About (reloaded)", "/reloaded"
513
- end
514
- EOT
515
- end
516
-
517
- breadcrumb :about
518
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
519
- end
520
-
521
- private
522
-
523
- def setup_loading_from_tmp_folder
524
- path = Rails.root.join("tmp", "testcrumbs")
525
- FileUtils.rm_rf path
526
- FileUtils.mkdir_p path
527
-
528
- Gretel.breadcrumb_paths = [path.join("*.rb")]
529
-
530
- path
531
- end
532
- end