crumby 1.1.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/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +115 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +87 -0
- data/Rakefile +39 -0
- data/VERSION +1 -0
- data/crumby.gemspec +77 -0
- data/lib/crumby.rb +41 -0
- data/lib/crumby/entry.rb +26 -0
- data/lib/crumby/helper.rb +6 -0
- data/lib/crumby/helper/controller.rb +53 -0
- data/lib/crumby/helper/view.rb +20 -0
- data/lib/crumby/renderer.rb +11 -0
- data/lib/crumby/renderer/base.rb +41 -0
- data/lib/crumby/renderer/haml.rb +39 -0
- data/lib/crumby/trail.rb +121 -0
- data/spec/crumby/entry_spec.rb +43 -0
- data/spec/crumby/helper_spec.rb +168 -0
- data/spec/crumby/renderer/base_spec.rb +36 -0
- data/spec/crumby/trail_spec.rb +207 -0
- data/spec/spec_helper.rb +26 -0
- metadata +169 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
3
|
+
|
4
|
+
describe Crumby::Renderer::Base do
|
5
|
+
let(:trail) { stub :trail }
|
6
|
+
let(:view) { stub :view }
|
7
|
+
let(:options) { { test: true } }
|
8
|
+
subject { Crumby::Renderer::Base.new(trail, view, options) }
|
9
|
+
|
10
|
+
describe "#new" do
|
11
|
+
its(:trail) { should equal trail }
|
12
|
+
its(:view) { should equal view }
|
13
|
+
its(:options) { should include options }
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#render" do
|
17
|
+
pending "todo"
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#default_options" do
|
21
|
+
it { subject.default_options.should be_empty }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#render_list" do
|
25
|
+
it "should raise a NotImplementedError error" do
|
26
|
+
expect { subject.render_list }.to raise_error NotImplementedError
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#render_entry" do
|
31
|
+
it "should raise a NotImplementedError error" do
|
32
|
+
expect { subject.render_entry(stub) }.to raise_error NotImplementedError
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,207 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
3
|
+
|
4
|
+
class DummyRenderer < Crumby::Renderer::Haml
|
5
|
+
end
|
6
|
+
|
7
|
+
class DummyModelName
|
8
|
+
def human
|
9
|
+
"dummy human name"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class DummyModel
|
14
|
+
def model_name
|
15
|
+
DummyModelName.new
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def DummyRenderer
|
20
|
+
end
|
21
|
+
|
22
|
+
describe Crumby::Trail do
|
23
|
+
let(:trail) { Crumby::Trail.new } # use subject
|
24
|
+
let(:rendered) { stub :rendered }
|
25
|
+
let(:renderer) { stub :renderer, render: rendered }
|
26
|
+
let(:default_renderer) { Renderer.default_renderer.stub renderer: renderer }
|
27
|
+
let(:custom_renderer) { DummyRenderer.stub :renderer, renderer: renderer }
|
28
|
+
|
29
|
+
context "have 10 entries" do
|
30
|
+
before { 10.times { subject.add :entry } }
|
31
|
+
|
32
|
+
its(:count) {should eq 10}
|
33
|
+
|
34
|
+
it "each breadcrumb should have the correct position" do
|
35
|
+
10.times do |position|
|
36
|
+
subject.entries[position].position.should eq position
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
describe "#add" do
|
44
|
+
|
45
|
+
context "without an argument" do
|
46
|
+
it "should get an ArgumentError" do
|
47
|
+
expect { subject.add }.to raise_error(ArgumentError)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "with one argument" do
|
52
|
+
subject { trail.add first_argument }
|
53
|
+
|
54
|
+
context "that is a string" do
|
55
|
+
let(:first_argument) { "example string" }
|
56
|
+
its(:label) { should equal first_argument }
|
57
|
+
its(:route) { should be_nil }
|
58
|
+
end
|
59
|
+
|
60
|
+
context "that is a symbol" do
|
61
|
+
let(:first_argument) { :example_symbol }
|
62
|
+
its(:label) { should eq first_argument.to_s.humanize }
|
63
|
+
its(:route) { should equal first_argument }
|
64
|
+
end
|
65
|
+
|
66
|
+
context "that is an object with model_name method" do
|
67
|
+
let(:first_argument) { DummyModel.new }
|
68
|
+
its(:label) { should eq first_argument.model_name.human }
|
69
|
+
its(:route) { should equal first_argument }
|
70
|
+
end
|
71
|
+
|
72
|
+
context "that is an array of objects" do
|
73
|
+
context "last is an object with model_name method" do
|
74
|
+
let(:first_argument) { [:admin, DummyModel.new] }
|
75
|
+
its(:label) { should eq first_argument.last.model_name.human }
|
76
|
+
its(:route) { should equal first_argument }
|
77
|
+
end
|
78
|
+
|
79
|
+
context "last is a string" do
|
80
|
+
let(:first_argument) { [:admin, "other string"] }
|
81
|
+
its(:label) { should eq first_argument.last.to_s.humanize }
|
82
|
+
its(:route) { should equal first_argument }
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
context "that any other type" do
|
88
|
+
let(:first_argument) { 5.5 }
|
89
|
+
its(:label) { should eq first_argument.to_s.humanize }
|
90
|
+
its(:route) { should be_nil }
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context "with label and route argument" do
|
95
|
+
let(:label) { "Name" }
|
96
|
+
let(:route) { :route }
|
97
|
+
|
98
|
+
subject { trail.add(label, route) }
|
99
|
+
|
100
|
+
its(:label) { should equal label }
|
101
|
+
its(:route) { should equal route }
|
102
|
+
end
|
103
|
+
|
104
|
+
context "with options" do
|
105
|
+
let(:options) { { option1: true, option2: false, string: "Text" } }
|
106
|
+
subject { trail.add(:test, options) }
|
107
|
+
its(:options) { should equal options }
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#entries" do
|
112
|
+
subject { trail.entries }
|
113
|
+
|
114
|
+
it { should be_an Array }
|
115
|
+
|
116
|
+
context "have no entry" do
|
117
|
+
its(:count) { should be_zero }
|
118
|
+
end
|
119
|
+
|
120
|
+
context "have on entry" do
|
121
|
+
subject { trail.add :test }
|
122
|
+
its(:count) { should_not be_zero }
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
# describe '#renderer' do
|
127
|
+
|
128
|
+
# subject { trail }
|
129
|
+
|
130
|
+
# context "without an arguments" do
|
131
|
+
# it "should return default renderer" do
|
132
|
+
# Crumby::Renderer.default_renderer.should_receive(:new).with(subject)
|
133
|
+
# subject.send(:renderer)
|
134
|
+
# end
|
135
|
+
# end
|
136
|
+
|
137
|
+
# context "with a DummyRenderer renderer" do
|
138
|
+
# let(:renderer) { DummyRenderer }
|
139
|
+
# it "should return the DummyRenderer renderer" do
|
140
|
+
# renderer.should_receive(:new).with(subject)
|
141
|
+
# subject.send(:renderer, renderer)
|
142
|
+
# end
|
143
|
+
# end
|
144
|
+
|
145
|
+
# context "with a String" do
|
146
|
+
# let(:renderer) { "String" }
|
147
|
+
# it "raise an ArgumentError" do
|
148
|
+
# expect { subject.send(:renderer, renderer) }.to raise_error(ArgumentError)
|
149
|
+
# end
|
150
|
+
# end
|
151
|
+
|
152
|
+
# context "with an renderer class" do
|
153
|
+
# end
|
154
|
+
# end
|
155
|
+
|
156
|
+
# describe "#render" do
|
157
|
+
|
158
|
+
|
159
|
+
# context "with default renderer" do
|
160
|
+
# after { trail.render }
|
161
|
+
|
162
|
+
# it "should load default renderer" do
|
163
|
+
# trail.should_receive(:renderer).with(nil).and_return(renderer)
|
164
|
+
# end
|
165
|
+
# end
|
166
|
+
|
167
|
+
# context "with custom renderer" do
|
168
|
+
# after { trail.render renderer: DummyRenderer }
|
169
|
+
|
170
|
+
# it "should load custom renderer" do
|
171
|
+
# trail.should_receive(:renderer).with(DummyRenderer).and_return(renderer)
|
172
|
+
# end
|
173
|
+
# end
|
174
|
+
# end
|
175
|
+
|
176
|
+
# describe "#renderer" do
|
177
|
+
# it "should raise ArgumentError with String class" do
|
178
|
+
# expect {
|
179
|
+
# trail.renderer String
|
180
|
+
# }.to raise_error ArgumentError
|
181
|
+
# end
|
182
|
+
|
183
|
+
# it "should raise ArgumentError with instance of String" do
|
184
|
+
# expect {
|
185
|
+
# trail.renderer "String"
|
186
|
+
# }.to raise_error ArgumentError
|
187
|
+
# end
|
188
|
+
|
189
|
+
# context "without renderer" do
|
190
|
+
# after { trail.renderer }
|
191
|
+
|
192
|
+
# it "should return instance of default renderer with trail" do
|
193
|
+
# Crumby::Renderer.default_renderer.should_receive(:new).with(trail)
|
194
|
+
# end
|
195
|
+
# end
|
196
|
+
|
197
|
+
# context "with custom renderer" do
|
198
|
+
# after { trail.renderer DummyRenderer }
|
199
|
+
|
200
|
+
# it "should return instance of DummyRenderer with trail" do
|
201
|
+
# DummyRenderer.should_receive(:new).with(trail)
|
202
|
+
# end
|
203
|
+
# end
|
204
|
+
# end
|
205
|
+
|
206
|
+
|
207
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
Bundler.require
|
6
|
+
|
7
|
+
require 'rails'
|
8
|
+
require 'rspec'
|
9
|
+
|
10
|
+
if ENV['COVERAGE']
|
11
|
+
require 'simplecov'
|
12
|
+
SimpleCov.start do
|
13
|
+
add_filter "/spec/"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
require "active_support/all"
|
18
|
+
require 'crumby'
|
19
|
+
|
20
|
+
# Requires supporting files with custom matchers and macros, etc,
|
21
|
+
# in ./support/ and its subdirectories.
|
22
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
23
|
+
|
24
|
+
RSpec.configure do |config|
|
25
|
+
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: crumby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Marco Scholl
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-07-31 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec-rails
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: yard
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: jeweler
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: simplecov
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description: A simple breadcrumb plugin for rails
|
111
|
+
email: develop@marco-scholl.de
|
112
|
+
executables: []
|
113
|
+
extensions: []
|
114
|
+
extra_rdoc_files:
|
115
|
+
- LICENSE.txt
|
116
|
+
- README.rdoc
|
117
|
+
files:
|
118
|
+
- .document
|
119
|
+
- .rspec
|
120
|
+
- Gemfile
|
121
|
+
- Gemfile.lock
|
122
|
+
- LICENSE.txt
|
123
|
+
- README.rdoc
|
124
|
+
- Rakefile
|
125
|
+
- VERSION
|
126
|
+
- crumby.gemspec
|
127
|
+
- lib/crumby.rb
|
128
|
+
- lib/crumby/entry.rb
|
129
|
+
- lib/crumby/helper.rb
|
130
|
+
- lib/crumby/helper/controller.rb
|
131
|
+
- lib/crumby/helper/view.rb
|
132
|
+
- lib/crumby/renderer.rb
|
133
|
+
- lib/crumby/renderer/base.rb
|
134
|
+
- lib/crumby/renderer/haml.rb
|
135
|
+
- lib/crumby/trail.rb
|
136
|
+
- spec/crumby/entry_spec.rb
|
137
|
+
- spec/crumby/helper_spec.rb
|
138
|
+
- spec/crumby/renderer/base_spec.rb
|
139
|
+
- spec/crumby/trail_spec.rb
|
140
|
+
- spec/spec_helper.rb
|
141
|
+
homepage: http://github.com/phatworx/crumby
|
142
|
+
licenses:
|
143
|
+
- MIT
|
144
|
+
post_install_message:
|
145
|
+
rdoc_options: []
|
146
|
+
require_paths:
|
147
|
+
- lib
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
segments:
|
155
|
+
- 0
|
156
|
+
hash: 870723315963817778
|
157
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
none: false
|
159
|
+
requirements:
|
160
|
+
- - ! '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
requirements: []
|
164
|
+
rubyforge_project:
|
165
|
+
rubygems_version: 1.8.24
|
166
|
+
signing_key:
|
167
|
+
specification_version: 3
|
168
|
+
summary: A simple breadcrumb plugin for rails
|
169
|
+
test_files: []
|