nav_lynx 1.0.0 → 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/MIT-LICENSE +1 -1
- data/README.md +29 -1
- data/Rakefile +1 -0
- data/app/helpers/nav_link_helper.rb +57 -46
- data/lib/nav_lynx/engine.rb +6 -0
- data/lib/nav_lynx/version.rb +1 -1
- data/lib/nav_lynx.rb +3 -2
- data/spec/dummy/config/application.rb +1 -11
- data/spec/dummy/config/boot.rb +3 -7
- data/spec/dummy/config/environments/development.rb +0 -7
- data/spec/dummy/config/environments/test.rb +2 -3
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +139 -0
- data/spec/dummy/log/test.log +1818 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/061366614f53b2e629f4ce5af7376503 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/12e93292435b9fd9a8ead1d08efcc40b +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/16813814f2e3c416d514746de8977f71 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/20bdd97a4de949dfc1ccc5b4881d5de6 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/52ef98542a240e988c164c670087be82 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/8528046f7875341a083dca3a0349725a +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/a45664b91391c11181b20e5903d4aa8f +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/fe314a8ef926518b95394d23d7967ac4 +0 -0
- data/spec/helpers/nav_link_helper_spec.rb +44 -26
- data/spec/spec_helper.rb +1 -0
- metadata +67 -7
@@ -11,14 +11,14 @@ describe NavLinkHelper do
|
|
11
11
|
before { helper.stub(:request => :request) }
|
12
12
|
|
13
13
|
it 'accepts only a title and a path' do
|
14
|
-
NavLinkHelper::LinkGenerator.should_receive(:new).with(:request, "My Title", "/path", {}, {})
|
14
|
+
NavLinkHelper::LinkGenerator.should_receive(:new).with(:request, "My Title", "/path", controller, {}, {})
|
15
15
|
.and_return(link_generator)
|
16
16
|
|
17
17
|
helper.nav_link_to("My Title", "/path")
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'accepts a block that returns the title' do
|
21
|
-
NavLinkHelper::LinkGenerator.should_receive(:new).with(:request, "My Title", "/path", {}, {})
|
21
|
+
NavLinkHelper::LinkGenerator.should_receive(:new).with(:request, "My Title", "/path", controller, {}, {})
|
22
22
|
.and_return(link_generator)
|
23
23
|
|
24
24
|
helper.nav_link_to("/path") do
|
@@ -27,88 +27,97 @@ describe NavLinkHelper do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "accepts options and html_options parameters" do
|
30
|
-
NavLinkHelper::LinkGenerator.should_receive(:new).with(:request, "My Title", "/path", :html_options, :options)
|
30
|
+
NavLinkHelper::LinkGenerator.should_receive(:new).with(:request, "My Title", "/path", controller, :html_options, :options)
|
31
31
|
.and_return(link_generator)
|
32
32
|
|
33
33
|
helper.nav_link_to("My Title", "/path", :html_options, :options)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
require 'spec_helper'
|
38
|
-
|
39
37
|
describe NavLinkHelper::LinkGenerator do
|
40
38
|
describe '#to_html' do
|
41
39
|
subject { described_class::LinkGenerator }
|
42
40
|
let(:request){ helper.request }
|
41
|
+
after { NavLYNX.selected_class = 'selected' }
|
43
42
|
|
44
43
|
it "outputs a simple link when appropriate" do
|
45
|
-
subject.new(request, 'Hi', '/projects').to_html.should == '<a href="/projects">Hi</a>'
|
44
|
+
subject.new(request, 'Hi', '/projects', controller).to_html.should == '<a href="/projects">Hi</a>'
|
45
|
+
end
|
46
|
+
|
47
|
+
it "accepts a hash for the URL parameter" do
|
48
|
+
subject.new(request, 'Hi', {:controller => 'projects', :action => 'index'}, controller).to_html.should == '<a href="/projects">Hi</a>'
|
46
49
|
end
|
47
50
|
|
48
51
|
it "knows when to flag the link as current" do
|
49
52
|
request.stub(:fullpath).and_return('/projects')
|
50
|
-
subject.new(request, 'Hi', '/projects').to_html.should
|
53
|
+
subject.new(request, 'Hi', '/projects', controller).to_html.should have_tag("a.selected[href='/projects']", :text => "Hi")
|
54
|
+
end
|
55
|
+
|
56
|
+
it "knows use a globally defined selected class different from the default" do
|
57
|
+
NavLYNX.selected_class = 'current'
|
58
|
+
request.stub(:fullpath).and_return('/projects')
|
59
|
+
subject.new(request, 'Hi', '/projects', controller).to_html.should have_tag("a.current[href='/projects']", :text => "Hi")
|
51
60
|
end
|
52
61
|
|
53
62
|
it "does not flag the link as current if there are parameters in the path" do
|
54
63
|
request.stub(:fullpath).and_return('/projects?all=true')
|
55
|
-
subject.new(request, 'Hi', '/projects').to_html.should == '<a href="/projects">Hi</a>'
|
64
|
+
subject.new(request, 'Hi', '/projects', controller).to_html.should == '<a href="/projects">Hi</a>'
|
56
65
|
end
|
57
66
|
|
58
67
|
it "flags the link as selected if there are parameters in the path but we are ignoring parameters" do
|
59
68
|
request.stub(:fullpath).and_return('/projects?all=true')
|
60
|
-
subject.new(request, 'Hi', '/projects', {}, :ignore_params => true).to_html
|
61
|
-
.should
|
69
|
+
subject.new(request, 'Hi', '/projects', controller, {}, {:ignore_params => true}).to_html
|
70
|
+
.should have_tag("a.selected[href='/projects']", :text => "Hi")
|
62
71
|
end
|
63
72
|
|
64
73
|
it "allows the specification of an alternate selected class" do
|
65
74
|
request.stub(:fullpath).and_return('/projects')
|
66
|
-
subject.new(request, 'Hi', '/projects', {}, :selected_class => 'current').to_html
|
67
|
-
.should
|
75
|
+
subject.new(request, 'Hi', '/projects', controller, {}, {:selected_class => 'current'}).to_html
|
76
|
+
.should have_tag("a.current[href='/projects']", :text => "Hi")
|
68
77
|
end
|
69
78
|
|
70
79
|
it "generates a wrapper for the link when specified" do
|
71
|
-
subject.new(request, 'Hi', '/projects', {}, :wrapper => 'li').to_html
|
80
|
+
subject.new(request, 'Hi', '/projects', controller, {}, {:wrapper => 'li'}).to_html
|
72
81
|
.should == '<li><a href="/projects">Hi</a></li>'
|
73
82
|
end
|
74
83
|
|
75
84
|
it "provides a class for the wrapper when specified" do
|
76
|
-
subject.new(request, 'Hi', '/projects', {}, :wrapper => 'li', :wrapper_class => 'container').to_html
|
85
|
+
subject.new(request, 'Hi', '/projects', controller, {}, {:wrapper => 'li', :wrapper_class => 'container'}).to_html
|
77
86
|
.should == '<li class="container"><a href="/projects">Hi</a></li>'
|
78
87
|
end
|
79
88
|
|
80
89
|
it "provides a class for the wrapper when specified along with a selected class if neeeded" do
|
81
90
|
request.stub(:fullpath).and_return('/projects')
|
82
|
-
subject.new(request, 'Hi', '/projects', {}, :wrapper => 'li', :wrapper_class => 'container').to_html
|
91
|
+
subject.new(request, 'Hi', '/projects', controller, {}, {:wrapper => 'li', :wrapper_class => 'container'}).to_html
|
83
92
|
.should == '<li class="selected container"><a href="/projects">Hi</a></li>'
|
84
93
|
end
|
85
94
|
|
86
95
|
it "allows specification of the link classes" do
|
87
|
-
subject.new(request, 'Hi', '/projects', :class => 'one two').to_html
|
88
|
-
.should
|
96
|
+
subject.new(request, 'Hi', '/projects', controller, {:class => 'one two'}, {}).to_html
|
97
|
+
.should have_tag("a.one.two[href='/projects']", :text => "Hi")
|
89
98
|
end
|
90
99
|
|
91
100
|
it "combines custom link classes when the link is selected" do
|
92
101
|
request.stub(:fullpath).and_return('/projects')
|
93
|
-
subject.new(request, 'Hi', '/projects', :class => 'one two').to_html
|
94
|
-
.should
|
102
|
+
subject.new(request, 'Hi', '/projects', controller, {:class => 'one two'}, {}).to_html
|
103
|
+
.should have_tag("a.selected.one.two[href='/projects']", :text => "Hi")
|
95
104
|
end
|
96
105
|
|
97
106
|
it "ignores the ID in the path when provided with a segment" do
|
98
107
|
request.stub(:fullpath).and_return('/projects/2')
|
99
|
-
subject.new(request, 'Hi', '/projects', {}, :url_segment => 1).to_html
|
100
|
-
.should
|
108
|
+
subject.new(request, 'Hi', '/projects', controller, {}, {:url_segment => 1}).to_html
|
109
|
+
.should have_tag("a.selected[href='/projects']", :text => "Hi")
|
101
110
|
end
|
102
111
|
|
103
112
|
it "handles deep URL segments" do
|
104
113
|
request.stub(:fullpath).and_return('/projects/2/3')
|
105
|
-
subject.new(request, 'Hi', '/projects/2', {}, :url_segment => 2).to_html
|
106
|
-
.should
|
114
|
+
subject.new(request, 'Hi', '/projects/2', controller, {}, {:url_segment => 2}).to_html
|
115
|
+
.should have_tag("a.selected[href='/projects/2']", :text => "Hi")
|
107
116
|
end
|
108
117
|
|
109
118
|
it "knows to not match on the first segment when requested" do
|
110
119
|
request.stub(:fullpath).and_return('/projects/2/3')
|
111
|
-
subject.new(request, 'Hi', '/projects/1', {}, :url_segment => 2).to_html
|
120
|
+
subject.new(request, 'Hi', '/projects/1', controller, {}, {:url_segment => 2}).to_html
|
112
121
|
.should == '<a href="/projects/1">Hi</a>'
|
113
122
|
end
|
114
123
|
|
@@ -119,8 +128,17 @@ describe NavLinkHelper do
|
|
119
128
|
request.stub(:fullpath).and_return('/members/pages/1')
|
120
129
|
request.stub(:path).and_return('/members/pages/1')
|
121
130
|
|
122
|
-
subject.new(request, 'Hi', '/members/1', {}, :controller_segment => 1).to_html
|
123
|
-
.should
|
131
|
+
subject.new(request, 'Hi', '/members/1', controller, {}, {:controller_segment => 1}).to_html
|
132
|
+
.should have_tag("a.selected[href='/members/1']", :text => "Hi")
|
133
|
+
end
|
134
|
+
|
135
|
+
it "handles the case when the current request path is a POST route & has no GET route" do
|
136
|
+
# scenario where a route exists only for POST, so GET fails
|
137
|
+
Rails.application.routes.stub(:recognize_path).with('/projects/something').and_raise(ActionController::RoutingError.new("No route matches '/projects'"))
|
138
|
+
Rails.application.routes.stub(:recognize_path).with('/projects').and_return(:controller => 'projects', :action => 'index')
|
139
|
+
|
140
|
+
request.stub(:fullpath => '/projects/something', :path => '/projects/something')
|
141
|
+
subject.new(request, 'Hi', '/projects', controller).to_html.should == '<a href="/projects">Hi</a>'
|
124
142
|
end
|
125
143
|
end
|
126
144
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nav_lynx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,14 +11,14 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-11-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
|
-
- -
|
21
|
+
- - ! '>='
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 3.2.13
|
24
24
|
type: :runtime
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
none: false
|
28
28
|
requirements:
|
29
|
-
- -
|
29
|
+
- - ! '>='
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: 3.2.13
|
32
32
|
- !ruby/object:Gem::Dependency
|
@@ -77,6 +77,38 @@ dependencies:
|
|
77
77
|
- - ! '>='
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '0'
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: appraisal
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: rspec-html-matchers
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ! '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
80
112
|
description: Rails helper to generate navigation links with a selected class.
|
81
113
|
email:
|
82
114
|
- dan.tello@viget.com
|
@@ -129,6 +161,20 @@ files:
|
|
129
161
|
- spec/dummy/public/500.html
|
130
162
|
- spec/dummy/public/favicon.ico
|
131
163
|
- spec/dummy/script/rails
|
164
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/061366614f53b2e629f4ce5af7376503
|
165
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/12e93292435b9fd9a8ead1d08efcc40b
|
166
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
|
167
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/16813814f2e3c416d514746de8977f71
|
168
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/20bdd97a4de949dfc1ccc5b4881d5de6
|
169
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
|
170
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
|
171
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/52ef98542a240e988c164c670087be82
|
172
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/8528046f7875341a083dca3a0349725a
|
173
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/a45664b91391c11181b20e5903d4aa8f
|
174
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
175
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
176
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
177
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/fe314a8ef926518b95394d23d7967ac4
|
132
178
|
- spec/features/navigation_spec.rb
|
133
179
|
- spec/helpers/nav_link_helper_spec.rb
|
134
180
|
- spec/spec_helper.rb
|
@@ -146,7 +192,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
146
192
|
version: '0'
|
147
193
|
segments:
|
148
194
|
- 0
|
149
|
-
hash:
|
195
|
+
hash: 3905832851249229231
|
150
196
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
197
|
none: false
|
152
198
|
requirements:
|
@@ -155,10 +201,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
201
|
version: '0'
|
156
202
|
segments:
|
157
203
|
- 0
|
158
|
-
hash:
|
204
|
+
hash: 3905832851249229231
|
159
205
|
requirements: []
|
160
206
|
rubyforge_project:
|
161
|
-
rubygems_version: 1.8.
|
207
|
+
rubygems_version: 1.8.25
|
162
208
|
signing_key:
|
163
209
|
specification_version: 3
|
164
210
|
summary: Rails helper to generate navigation links with a selected class.
|
@@ -199,6 +245,20 @@ test_files:
|
|
199
245
|
- spec/dummy/public/500.html
|
200
246
|
- spec/dummy/public/favicon.ico
|
201
247
|
- spec/dummy/script/rails
|
248
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/061366614f53b2e629f4ce5af7376503
|
249
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/12e93292435b9fd9a8ead1d08efcc40b
|
250
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
|
251
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/16813814f2e3c416d514746de8977f71
|
252
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/20bdd97a4de949dfc1ccc5b4881d5de6
|
253
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
|
254
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
|
255
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/52ef98542a240e988c164c670087be82
|
256
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/8528046f7875341a083dca3a0349725a
|
257
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/a45664b91391c11181b20e5903d4aa8f
|
258
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
259
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
260
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
261
|
+
- spec/dummy/tmp/cache/assets/test/sprockets/fe314a8ef926518b95394d23d7967ac4
|
202
262
|
- spec/features/navigation_spec.rb
|
203
263
|
- spec/helpers/nav_link_helper_spec.rb
|
204
264
|
- spec/spec_helper.rb
|