gretel 4.0.0 → 4.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +52 -0
  3. data/.gitignore +7 -6
  4. data/CHANGELOG.md +20 -0
  5. data/Gemfile +3 -1
  6. data/README.md +46 -44
  7. data/Rakefile +3 -7
  8. data/coverage/coverage.txt +1 -2
  9. data/gretel.gemspec +9 -11
  10. data/lib/gretel.rb +1 -7
  11. data/lib/gretel/crumb.rb +5 -2
  12. data/lib/gretel/crumbs.rb +26 -7
  13. data/lib/gretel/railtie.rb +11 -0
  14. data/lib/gretel/renderer.rb +65 -33
  15. data/lib/gretel/version.rb +1 -1
  16. data/lib/gretel/view_helpers.rb +2 -0
  17. metadata +37 -112
  18. data/.travis.yml +0 -14
  19. data/test/dummy/Rakefile +0 -7
  20. data/test/dummy/app/assets/config/manifest.js +0 -0
  21. data/test/dummy/app/assets/javascripts/application.js +0 -15
  22. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  23. data/test/dummy/app/controllers/application_controller.rb +0 -3
  24. data/test/dummy/app/helpers/application_helper.rb +0 -5
  25. data/test/dummy/app/mailers/.gitkeep +0 -0
  26. data/test/dummy/app/models/.gitkeep +0 -0
  27. data/test/dummy/app/models/issue.rb +0 -3
  28. data/test/dummy/app/models/project.rb +0 -3
  29. data/test/dummy/app/views/breadcrumbs/site.rb +0 -3
  30. data/test/dummy/config.ru +0 -4
  31. data/test/dummy/config/application.rb +0 -14
  32. data/test/dummy/config/boot.rb +0 -10
  33. data/test/dummy/config/breadcrumbs.rb +0 -3
  34. data/test/dummy/config/breadcrumbs/test_crumbs.rb +0 -85
  35. data/test/dummy/config/database.yml +0 -25
  36. data/test/dummy/config/environment.rb +0 -5
  37. data/test/dummy/config/environments/development.rb +0 -2
  38. data/test/dummy/config/environments/production.rb +0 -2
  39. data/test/dummy/config/environments/test.rb +0 -2
  40. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  41. data/test/dummy/config/initializers/inflections.rb +0 -15
  42. data/test/dummy/config/initializers/mime_types.rb +0 -5
  43. data/test/dummy/config/initializers/secret_token.rb +0 -7
  44. data/test/dummy/config/initializers/session_store.rb +0 -8
  45. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  46. data/test/dummy/config/locales/en.yml +0 -5
  47. data/test/dummy/config/routes.rb +0 -11
  48. data/test/dummy/db/migrate/20130122163007_create_projects.rb +0 -9
  49. data/test/dummy/db/migrate/20130122163051_create_issues.rb +0 -10
  50. data/test/dummy/db/schema.rb +0 -28
  51. data/test/dummy/lib/assets/.gitkeep +0 -0
  52. data/test/dummy/log/.gitkeep +0 -0
  53. data/test/dummy/public/404.html +0 -26
  54. data/test/dummy/public/422.html +0 -26
  55. data/test/dummy/public/500.html +0 -25
  56. data/test/dummy/public/favicon.ico +0 -0
  57. data/test/dummy/script/rails +0 -6
  58. data/test/fixtures/issues.yml +0 -4
  59. data/test/fixtures/projects.yml +0 -3
  60. data/test/gretel_test.rb +0 -23
  61. data/test/helper_methods_test.rb +0 -558
  62. data/test/test_helper.rb +0 -23
@@ -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
data/test/gretel_test.rb DELETED
@@ -1,23 +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
- end
15
-
16
- test "configuration block" do
17
- Gretel.configure do |config|
18
- config.reload_environments << "staging"
19
- end
20
-
21
- assert_equal ["development", "staging"], Gretel.reload_environments
22
- end
23
- end
@@ -1,558 +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 fragment class" do
133
- breadcrumb :basic
134
- assert_dom_equal %{<div class="breadcrumbs"><a class="custom_fragment_class" href="/">Home</a> &rsaquo; <span class="custom_fragment_class current">About</span></div>},
135
- breadcrumbs(fragment_class: "custom_fragment_class").to_s
136
- end
137
-
138
- test "custom current class" do
139
- breadcrumb :basic
140
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="custom_current_class">About</span></div>},
141
- breadcrumbs(current_class: "custom_current_class").to_s
142
- end
143
-
144
- test "custom pretext class" do
145
- breadcrumb :basic
146
- 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>},
147
- breadcrumbs(pretext: "You are here:", pretext_class: "custom_pretext_class").to_s
148
- end
149
-
150
- test "custom posttext class" do
151
- breadcrumb :basic
152
- 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>},
153
- breadcrumbs(posttext: "after breadcrumbs", posttext_class: "custom_posttext_class").to_s
154
- end
155
-
156
- test "unsafe html" do
157
- breadcrumb :with_unsafe_html
158
- 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>},
159
- breadcrumbs.to_s
160
- end
161
-
162
- test "safe html" do
163
- breadcrumb :with_safe_html
164
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">Test <strong>bold text</strong></span></div>},
165
- breadcrumbs.to_s
166
- end
167
-
168
- test "parent breadcrumb" do
169
- breadcrumb :multiple_links_with_parent
170
-
171
- parent = parent_breadcrumb
172
- assert_equal [:multiple_links_with_parent, "Contact", "/about/contact"],
173
- [parent.key, parent.text, parent.url]
174
- end
175
-
176
- test "yields parent breadcrumb" do
177
- breadcrumb :multiple_links_with_parent
178
-
179
- out = parent_breadcrumb do |parent|
180
- [parent.key, parent.text, parent.url]
181
- end
182
- assert_equal [:multiple_links_with_parent, "Contact", "/about/contact"],
183
- out
184
- end
185
-
186
- test "parent breadcrumb returns nil if not present" do
187
- breadcrumb :basic
188
-
189
- assert_nil parent_breadcrumb(autoroot: false)
190
- end
191
-
192
- test "parent breadcrumb yields only if present" do
193
- breadcrumb :basic
194
-
195
- out = parent_breadcrumb(autoroot: false) do
196
- "yielded"
197
- end
198
-
199
- assert_nil out
200
- end
201
-
202
- test "link keys" do
203
- breadcrumb :basic
204
- assert_equal [:root, :basic], breadcrumbs.keys
205
- end
206
-
207
- test "using breadcrumbs as array" do
208
- breadcrumb :basic
209
-
210
- breadcrumbs.tap do |links|
211
- assert_kind_of Array, links
212
- assert_equal 2, links.count
213
- end
214
- end
215
-
216
- test "sets current on last link in array" do
217
- breadcrumb :multiple_links_with_parent
218
- assert_equal [false, false, false, true], breadcrumbs.map(&:current?)
219
- end
220
-
221
- test "passing options to links" do
222
- breadcrumb :with_link_options
223
-
224
- breadcrumbs(autoroot: false).tap do |links|
225
- links[0].tap do |link|
226
- assert link.title?
227
- assert_equal "My Title", link.title
228
-
229
- assert link.other?
230
- assert_equal "Other Option", link.other
231
-
232
- assert !link.nonexistent?
233
- assert_nil link.nonexistent
234
- end
235
-
236
- links[1].tap do |link|
237
- assert link.some_option?
238
- assert_equal "Test", link.some_option
239
- end
240
- end
241
-
242
- assert_dom_equal %{<div class="breadcrumbs"><a href="/about">Test</a> &rsaquo; <span class="current">Other Link</span></div>},
243
- breadcrumbs(autoroot: false).to_s
244
- end
245
-
246
- test "without link" do
247
- breadcrumb :without_link
248
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; Also without link &rsaquo; <span class="current">Without link</span></div>},
249
- breadcrumbs.to_s
250
- end
251
-
252
- test "view context" do
253
- breadcrumb :using_view_helper
254
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">TestTest</span></div>},
255
- breadcrumbs.to_s
256
- end
257
-
258
- test "multiple arguments" do
259
- breadcrumb :with_multiple_arguments, "One", "Two", "Three"
260
- 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>},
261
- breadcrumbs.to_s
262
- end
263
-
264
- test "from views folder" do
265
- breadcrumb :from_views
266
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">Breadcrumb From View</span></div>},
267
- breadcrumbs.to_s
268
- end
269
-
270
- test "with_breadcrumb" do
271
- breadcrumb :basic
272
-
273
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
274
- breadcrumbs.to_s
275
-
276
- with_breadcrumb(:with_parent_object, issues(:one)) do
277
- 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>},
278
- breadcrumbs.to_s
279
- end
280
-
281
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
282
- breadcrumbs.to_s
283
- end
284
-
285
- test "calling breadcrumbs helper twice" do
286
- breadcrumb :with_parent
287
- 2.times do
288
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/about">About</a> &rsaquo; <span class="current">Contact</span></div>},
289
- breadcrumbs.to_s
290
- end
291
- end
292
-
293
- test "breadcrumb not found" do
294
- assert_raises ArgumentError do
295
- breadcrumb :nonexistent
296
- breadcrumbs
297
- end
298
- end
299
-
300
- test "current link url is set to fullpath" do
301
- self.request = OpenStruct.new(fullpath: "/testpath?a=1&b=2")
302
-
303
- breadcrumb :basic
304
- assert_equal "/testpath?a=1&b=2", breadcrumbs.last.url
305
- end
306
-
307
- test "current link url is not set to fullpath using link_current_to_request_path=false" do
308
- self.request = OpenStruct.new(fullpath: "/testpath?a=1&b=2")
309
-
310
- breadcrumb :basic
311
- assert_equal "/about", breadcrumbs(:link_current_to_request_path => false).last.url
312
- end
313
-
314
- test "calling the breadcrumb method with wrong arguments" do
315
- assert_nothing_raised do
316
- breadcrumb :basic, test: 1
317
- end
318
-
319
- assert_raises ArgumentError do
320
- breadcrumb
321
- end
322
-
323
- assert_raises ArgumentError do
324
- breadcrumb(pretext: "bla")
325
- end
326
- end
327
-
328
- test "inferred breadcrumb" do
329
- breadcrumb Project.first
330
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">Test Project</span></div>},
331
- breadcrumbs.to_s
332
- end
333
-
334
- test "inferred parent" do
335
- breadcrumb :with_inferred_parent
336
-
337
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <a href="/projects/1">Test Project</a> &rsaquo; <span class="current">Test</span></div>},
338
- breadcrumbs.to_s
339
- end
340
-
341
- # Styles
342
-
343
- test "default style" do
344
- breadcrumb :basic
345
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home</a> &rsaquo; <span class="current">About</span></div>},
346
- breadcrumbs.to_s
347
- end
348
-
349
- test "ordered list style" do
350
- breadcrumb :basic
351
- assert_dom_equal %{<ol class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ol>},
352
- breadcrumbs(style: :ol).to_s
353
- end
354
-
355
- test "unordered list style" do
356
- breadcrumb :basic
357
- assert_dom_equal %{<ul class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ul>},
358
- breadcrumbs(style: :ul).to_s
359
- end
360
-
361
- test "bootstrap style" do
362
- breadcrumb :basic
363
- assert_dom_equal %{<ol class="breadcrumb"><li><a href="/">Home</a></li><li class="active">About</li></ol>},
364
- breadcrumbs(style: :bootstrap).to_s
365
- end
366
-
367
- test "bootstrap4 style" do
368
- breadcrumb :basic
369
- assert_dom_equal %{<ol class="breadcrumb"><li class="breadcrumb-item"><a href="/">Home</a></li><li class="breadcrumb-item active">About</li></ol>},
370
- breadcrumbs(style: :bootstrap4).to_s
371
- end
372
-
373
- test "foundation5 style" do
374
- breadcrumb :basic
375
- assert_dom_equal %{<ul class="breadcrumbs"><li><a href="/">Home</a></li><li class="current">About</li></ul>},
376
- breadcrumbs(style: :foundation5).to_s
377
- end
378
-
379
- test "custom container and fragment tags" do
380
- breadcrumb :basic
381
- assert_dom_equal %{<c class="breadcrumbs"><f><a href="/">Home</a></f> &rsaquo; <f class="current">About</f></c>},
382
- breadcrumbs(container_tag: :c, fragment_tag: :f).to_s
383
- end
384
-
385
- test "custom semantic container and fragment tags" do
386
- breadcrumb :basic
387
- assert_dom_equal %Q{<c class="breadcrumbs"><f itemscope="#{itemscope_value}" itemtype="http://data-vocabulary.org/Breadcrumb"><a itemprop="url" href="/"><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><meta itemprop="url" content="http://test.host/about" /></f></c>},
388
- breadcrumbs(container_tag: :c, fragment_tag: :f, semantic: true).to_s
389
- end
390
-
391
- test "unknown style" do
392
- breadcrumb :basic
393
- assert_raises ArgumentError do
394
- breadcrumbs(style: :nonexistent)
395
- end
396
- end
397
-
398
- test "register style" do
399
- Gretel.register_style :test_style, { container_tag: :one, fragment_tag: :two }
400
-
401
- breadcrumb :basic
402
-
403
- assert_dom_equal %{<one class="breadcrumbs"><two><a href="/">Home</a></two><two class="current">About</two></one>},
404
- breadcrumbs(style: :test_style).to_s
405
- end
406
-
407
- # Configuration reload
408
-
409
- test "reload configuration when file is changed" do
410
- path = setup_loading_from_tmp_folder
411
- Gretel.reload_environments << "test"
412
-
413
- File.open(path.join("site.rb"), "w") do |f|
414
- f.write <<-EOT
415
- crumb :root do
416
- link "Home (loaded)", root_path
417
- end
418
- crumb :about do
419
- link "About (loaded)", about_path
420
- end
421
- EOT
422
- end
423
-
424
- breadcrumb :about
425
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
426
-
427
- sleep 1 # File change interval is 1 second
428
-
429
- File.open(path.join("site.rb"), "w") do |f|
430
- f.write <<-EOT
431
- crumb :root do
432
- link "Home (reloaded)", "/test"
433
- end
434
- crumb :about do
435
- link "About (reloaded)", "/reloaded"
436
- end
437
- EOT
438
- end
439
-
440
- breadcrumb :about
441
- assert_dom_equal %{<div class="breadcrumbs"><a href="/test">Home (reloaded)</a> &rsaquo; <span class="current">About (reloaded)</span></div>}, breadcrumbs.to_s
442
- end
443
-
444
- test "reload configuration when file is added" do
445
- path = setup_loading_from_tmp_folder
446
- Gretel.reload_environments << "test"
447
-
448
- File.open(path.join("site.rb"), "w") do |f|
449
- f.write <<-EOT
450
- crumb :root do
451
- link "Home (loaded)", root_path
452
- end
453
- EOT
454
- end
455
-
456
- assert_raises ArgumentError do
457
- breadcrumb :about
458
- breadcrumbs
459
- end
460
-
461
- File.open(path.join("pages.rb"), "w") do |f|
462
- f.write <<-EOT
463
- crumb :about do
464
- link "About (loaded)", about_path
465
- end
466
- EOT
467
- end
468
-
469
- breadcrumb :about
470
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
471
- end
472
-
473
- test "reload configuration when file is deleted" do
474
- path = setup_loading_from_tmp_folder
475
- Gretel.reload_environments << "test"
476
-
477
- File.open(path.join("site.rb"), "w") do |f|
478
- f.write <<-EOT
479
- crumb :root do
480
- link "Home (loaded)", root_path
481
- end
482
- crumb :about do
483
- link "About (loaded)", about_path
484
- end
485
- EOT
486
- end
487
-
488
- File.open(path.join("pages.rb"), "w") do |f|
489
- f.write <<-EOT
490
- crumb :contact do
491
- link "Contact (loaded)", "/contact"
492
- parent :about
493
- end
494
- EOT
495
- end
496
-
497
- breadcrumb :contact
498
- 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
499
-
500
- File.delete path.join("pages.rb")
501
-
502
- assert_raises ArgumentError do
503
- breadcrumb :contact
504
- breadcrumbs
505
- end
506
-
507
- breadcrumb :about
508
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
509
- end
510
-
511
- test "reloads only in development environment" do
512
- path = setup_loading_from_tmp_folder
513
-
514
- assert_equal ["development"], Gretel.reload_environments
515
-
516
- File.open(path.join("site.rb"), "w") do |f|
517
- f.write <<-EOT
518
- crumb :root do
519
- link "Home (loaded)", root_path
520
- end
521
- crumb :about do
522
- link "About (loaded)", about_path
523
- end
524
- EOT
525
- end
526
-
527
- breadcrumb :about
528
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
529
-
530
- sleep 1
531
-
532
- File.open(path.join("site.rb"), "w") do |f|
533
- f.write <<-EOT
534
- crumb :root do
535
- link "Home (reloaded)", "/test"
536
- end
537
- crumb :about do
538
- link "About (reloaded)", "/reloaded"
539
- end
540
- EOT
541
- end
542
-
543
- breadcrumb :about
544
- assert_dom_equal %{<div class="breadcrumbs"><a href="/">Home (loaded)</a> &rsaquo; <span class="current">About (loaded)</span></div>}, breadcrumbs.to_s
545
- end
546
-
547
- private
548
-
549
- def setup_loading_from_tmp_folder
550
- path = Rails.root.join("tmp", "testcrumbs")
551
- FileUtils.rm_rf path
552
- FileUtils.mkdir_p path
553
-
554
- Gretel.breadcrumb_paths = [path.join("*.rb")]
555
-
556
- path
557
- end
558
- end