gretel 4.0.0 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.
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