bootstrap-navbar 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cfcaa232c9de0ba3888c8f87b6dc1c15b14edbb7
4
- data.tar.gz: 7c4a7698d6211e01f89e42f93a144c19dd3532a0
3
+ metadata.gz: 781cad4ac31fafee2286b64f3724c8b5cd4a3ed2
4
+ data.tar.gz: b0d3f73b9c98ed24f2f65216d3ff313249964e56
5
5
  SHA512:
6
- metadata.gz: 43ab97ee7b8af682f3f754c99f06beb5e8da86a17188d07939a1e63a5c582541c8bc32ee67c79004d4a54781e1edc6d4ae1532cc8e60e3a02dded4e0939d8e0c
7
- data.tar.gz: 963c39652f38113cae133e98f66f14e7756c003eb97c59bfe1d568a16b07f22f1fc94cd083713c09e8a413cff1c292f3817077ad8d3e3a75202e01723ea5a687
6
+ metadata.gz: 88d37fed5dd7c408fb4e69cae5ee66c476dca8b96967afce12ed6d21b3a4770ac2457c6677700ba2ef5c2ea8ee670a96b8454635976d79355d9d732383be5ba8
7
+ data.tar.gz: a33caba3b1d44fedba100e33ccb2c7e167b88dbc87ddbd6a4ddae14a3be19fd5d9ed2d2dde8772550321f4deaec4a1d99a036370f42c3686a1aa22626abd7207
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## 2.0.0
2
+
3
+ * Refactor: Add navbar_header and navbar_collapse to make it possible to insert content outside of header and collapse sections.
4
+ * Refactor: remove internal list of Bootstrap versions which had to be updated every time a new Bootstrap version was released.
5
+ * Fix: make sure options that are passed into methods are not altered
data/README.md CHANGED
@@ -73,6 +73,10 @@ Since the navbar format changed quite a bit between Bootstrap 2.x and 3.x, gener
73
73
 
74
74
  [Usage with Bootstrap 3.x](https://github.com/bootstrap-ruby/bootstrap-navbar/wiki/Usage-with-Bootstrap-3.x)
75
75
 
76
+ ## Changes
77
+
78
+ See [CHANGELOG](CHANGELOG.md)
79
+
76
80
  ## Contributing
77
81
 
78
82
  1. Fork it
@@ -3,10 +3,8 @@ require 'gem_config'
3
3
  module BootstrapNavbar
4
4
  include GemConfig::Base
5
5
 
6
- BOOTSTRAP_VERSIONS = %w(3.1.0 3.0.3 3.0.2 3.0.1 3.0.0 2.3.2 2.3.1 2.3.0 2.2.2 2.2.1 2.2.0 2.1.1 2.1.0 2.0.4 2.0.3 2.0.2 2.0.1 2.0.0)
7
-
8
6
  with_configuration do
9
- has :bootstrap_version, classes: [String, NilClass], values: BOOTSTRAP_VERSIONS.unshift(nil)
7
+ has :bootstrap_version, classes: [String, NilClass]
10
8
  has :current_url_method, classes: String
11
9
  end
12
10
  end
@@ -8,6 +8,7 @@ module BootstrapNavbar::Helpers::Bootstrap2
8
8
  end
9
9
 
10
10
  def navbar_group(options = {}, &block)
11
+ options = options.dup
11
12
  css_classes = %w(nav).tap do |css_classes|
12
13
  css_classes << "pull-#{options.delete(:pull)}" if options.has_key?(:pull)
13
14
  css_classes << options.delete(:class) if options.has_key?(:class)
@@ -23,9 +24,8 @@ HTML
23
24
  def navbar_item(name = nil, path = nil, list_item_options = nil, link_options = nil, &block)
24
25
  name, path, list_item_options, link_options = capture(&block), name, path, list_item_options if block_given?
25
26
  path ||= '#'
26
- list_item_options ||= {}
27
- link_options ||= {}
28
-
27
+ list_item_options = list_item_options.nil? ? {} : list_item_options.dup
28
+ link_options = link_options.nil? ? {} : link_options.dup
29
29
  list_item_css_classes = [].tap do |css_classes|
30
30
  css_classes << 'active' if current_url?(path)
31
31
  css_classes << list_item_options.delete(:class) if list_item_options.has_key?(:class)
@@ -57,6 +57,7 @@ HTML
57
57
  end
58
58
 
59
59
  def navbar_sub_dropdown(name, list_item_options = {}, link_options = {}, &block)
60
+ list_item_options, link_options = list_item_options.dup, link_options.dup
60
61
  list_item_css_classes = %w(dropdown-submenu).tap do |css_classes|
61
62
  css_classes << list_item_options.delete(:class) if list_item_options.has_key?(:class)
62
63
  end
@@ -102,13 +103,13 @@ HTML
102
103
  private
103
104
 
104
105
  def wrapper(options, html_options, &block)
106
+ options, html_options = options.dup, html_options.dup
105
107
  position = case
106
108
  when options.has_key?(:static)
107
109
  "static-#{options[:static]}"
108
110
  when options.has_key?(:fixed)
109
111
  "fixed-#{options[:fixed]}"
110
112
  end
111
-
112
113
  css_classes = %w(navbar).tap do |css_classes|
113
114
  css_classes << "navbar-#{position}" if position
114
115
  css_classes << 'navbar-inverse' if options[:inverse]
@@ -116,7 +117,6 @@ HTML
116
117
  end
117
118
  attribute_hash = { class: css_classes.join(' ') }.merge(html_options)
118
119
  attributes = attributes_for_tag(attribute_hash)
119
-
120
120
  prepare_html <<-HTML.chomp!
121
121
  <div#{attributes}>
122
122
  #{capture(&block) if block_given?}
@@ -1,23 +1,57 @@
1
1
  module BootstrapNavbar::Helpers::Bootstrap3
2
2
  def navbar(options = {}, &block)
3
- navbar_content =
4
- header(options.delete(:brand), options.delete(:brand_link)) <<
5
- collapsable(&block)
3
+ options = options.dup
4
+ container = options.has_key?(:container) ? options.delete(:container) : true
6
5
  wrapper options do
7
- unless options[:container] == false
8
- container(options[:container], navbar_content)
6
+ if container
7
+ container(container, &block)
9
8
  else
10
- navbar_content
9
+ capture(&block)
11
10
  end
12
11
  end
13
12
  end
14
13
 
14
+ def navbar_header(options = {}, &block)
15
+ options = options.dup
16
+ brand, brand_link = options.delete(:brand), options.delete(:brand_link)
17
+ css_classes = %w(navbar-header).tap do |css_classes|
18
+ css_classes << options.delete(:class) if options.has_key?(:class)
19
+ end
20
+ attributes = attributes_for_tag(options.reverse_merge(class: css_classes.join(' ')))
21
+ prepare_html <<-HTML.chomp!
22
+ <div#{attributes}>
23
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapsable">
24
+ <span class="sr-only">Toggle navigation</span>
25
+ <span class="icon-bar"></span>
26
+ <span class="icon-bar"></span>
27
+ <span class="icon-bar"></span>
28
+ </button>
29
+ #{brand_link brand, brand_link unless brand.nil?}
30
+ #{capture(&block) if block_given?}
31
+ </div>
32
+ HTML
33
+ end
34
+
35
+ def navbar_collapse(options = {}, &block)
36
+ options = options.dup
37
+ css_classes = %w(collapse navbar-collapse).tap do |css_classes|
38
+ css_classes << options.delete(:class) if options.has_key?(:class)
39
+ end
40
+ attributes = attributes_for_tag(options.reverse_merge(class: css_classes.join(' '), id: 'navbar-collapsable'))
41
+ prepare_html <<-HTML.chomp!
42
+ <div#{attributes}>
43
+ #{capture(&block) if block_given?}
44
+ </div>
45
+ HTML
46
+ end
47
+
15
48
  def navbar_group(options = {}, &block)
49
+ options = options.dup
16
50
  css_classes = %w(nav navbar-nav).tap do |css_classes|
17
51
  css_classes << "navbar-#{options.delete(:align)}" if options.has_key?(:align)
18
52
  css_classes << options.delete(:class) if options.has_key?(:class)
19
53
  end
20
- attributes = attributes_for_tag({ class: css_classes.join(' ') }.merge(options))
54
+ attributes = attributes_for_tag(options.reverse_merge(class: css_classes.join(' ')))
21
55
  prepare_html <<-HTML.chomp!
22
56
  <ul#{attributes}>
23
57
  #{capture(&block) if block_given?}
@@ -28,9 +62,8 @@ HTML
28
62
  def navbar_item(text, url = nil, list_item_options = nil, link_options = nil, &block)
29
63
  text, url, list_item_options, link_options = capture(&block), text, list_item_options if block_given?
30
64
  url ||= '#'
31
- list_item_options ||= {}
32
- link_options ||= {}
33
-
65
+ list_item_options = list_item_options.nil? ? {} : list_item_options.dup
66
+ link_options = link_options.nil? ? {} : link_options.dup
34
67
  list_item_css_classes = [].tap do |css_classes|
35
68
  css_classes << 'active' if current_url?(url)
36
69
  css_classes << list_item_options.delete(:class) if list_item_options.has_key?(:class)
@@ -51,12 +84,13 @@ HTML
51
84
  end
52
85
 
53
86
  def navbar_form(options = {}, &block)
87
+ options = options.dup
54
88
  css_classes = %w(navbar-form).tap do |css_classes|
55
89
  css_classes << "navbar-#{options.delete(:align)}" if options.has_key?(:align)
56
90
  css_classes << options.delete(:class) if options.has_key?(:class)
57
91
  end
58
92
  role = options.delete(:role) || 'form'
59
- attributes = attributes_for_tag({ class: css_classes.join(' '), role: role }.merge(options))
93
+ attributes = attributes_for_tag(options.reverse_merge(class: css_classes.join(' '), role: role))
60
94
  prepare_html <<-HTML.chomp!
61
95
  <form#{attributes}>
62
96
  #{capture(&block) if block_given?}
@@ -66,22 +100,24 @@ HTML
66
100
 
67
101
  def navbar_text(text = nil, options = {}, &block)
68
102
  raise StandardError, 'Please provide either the "text" parameter or a block.' if (text.nil? && !block_given?) || (!text.nil? && block_given?)
103
+ options = options.dup
69
104
  text ||= capture(&block)
70
105
  css_classes = %w(navbar-text).tap do |css_classes|
71
106
  css_classes << options.delete(:class) if options.has_key?(:class)
72
107
  end
73
- attributes = attributes_for_tag({ class: css_classes.join(' ') }.merge(options))
108
+ attributes = attributes_for_tag(options.reverse_merge(class: css_classes.join(' ')))
74
109
  prepare_html <<-HTML.chomp!
75
110
  <p#{attributes}>#{text}</p>
76
111
  HTML
77
112
  end
78
113
 
79
114
  def navbar_button(text, options = {})
115
+ options = options.dup
80
116
  css_classes = %w(btn navbar-btn).tap do |css_classes|
81
117
  css_classes << options.delete(:class) if options.has_key?(:class)
82
118
  end
83
119
  type = options.delete(:type) || 'button'
84
- attributes = attributes_for_tag({ class: css_classes.join(' '), type: type }.merge(options))
120
+ attributes = attributes_for_tag(options.reverse_merge(class: css_classes.join(' '), type: type))
85
121
  prepare_html <<-HTML.chomp!
86
122
  <button#{attributes}>#{text}</button>
87
123
  HTML
@@ -114,34 +150,12 @@ HTML
114
150
 
115
151
  private
116
152
 
117
- def container(type, content)
153
+ def container(type, &block)
118
154
  css_class = 'container'
119
155
  css_class << "-#{type}" if type.is_a?(String)
120
156
  attributes = attributes_for_tag(class: css_class)
121
157
  prepare_html <<-HTML.chomp!
122
158
  <div#{attributes}>
123
- #{content}
124
- </div>
125
- HTML
126
- end
127
-
128
- def header(brand, brand_link)
129
- prepare_html <<-HTML.chomp!
130
- <div class="navbar-header">
131
- <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapsable">
132
- <span class="sr-only">Toggle navigation</span>
133
- <span class="icon-bar"></span>
134
- <span class="icon-bar"></span>
135
- <span class="icon-bar"></span>
136
- </button>
137
- #{brand_link brand, brand_link unless brand.nil?}
138
- </div>
139
- HTML
140
- end
141
-
142
- def collapsable(&block)
143
- prepare_html <<-HTML.chomp!
144
- <div class="collapse navbar-collapse" id="navbar-collapsable">
145
159
  #{capture(&block) if block_given?}
146
160
  </div>
147
161
  HTML
@@ -157,15 +171,16 @@ HTML
157
171
  end
158
172
 
159
173
  def wrapper(options, &block)
160
- style = options.delete(:inverse) ? 'inverse' : 'default'
174
+ options = options.dup
161
175
  css_classes = %w(navbar).tap do |css_classes|
176
+ css_classes << "navbar-#{options.delete(:inverse) ? 'inverse' : 'default'}"
162
177
  css_classes << "navbar-fixed-#{options.delete(:fixed)}" if options.has_key?(:fixed)
163
178
  css_classes << 'navbar-static-top' if options.delete(:static)
164
179
  css_classes << 'navbar-inverse' if options.delete(:inverse)
165
- css_classes << "navbar-#{style}"
180
+ css_classes << options.delete(:class) if options.has_key?(:class)
166
181
  end
167
182
  role = options.delete(:role) || 'navigation'
168
- attributes = attributes_for_tag({ class: css_classes.join(' '), role: role }.merge(options))
183
+ attributes = attributes_for_tag(options.reverse_merge(class: css_classes.join(' '), role: role))
169
184
  prepare_html <<-HTML.chomp!
170
185
  <nav#{attributes}>
171
186
  #{capture(&block) if block_given?}
@@ -1,3 +1,3 @@
1
1
  module BootstrapNavbar
2
- VERSION = '1.1.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -2,12 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  shared_examples 'active menu item' do
4
4
  it 'generates the correct HTML' do
5
- with_all_2_dot_x_versions do
6
- paths_and_urls.each do |current_path_or_url|
7
- paths_and_urls.each do |menu_path_or_url|
8
- BootstrapNavbar.configuration.current_url_method = "'#{current_path_or_url}'"
9
- expect(renderer.navbar_item('foo', menu_path_or_url)).to have_tag(:li, with: { class: 'active' })
10
- end
5
+ paths_and_urls.each do |current_path_or_url|
6
+ paths_and_urls.each do |menu_path_or_url|
7
+ BootstrapNavbar.configuration.current_url_method = "'#{current_path_or_url}'"
8
+ expect(renderer.navbar_item('foo', menu_path_or_url)).to have_tag(:li, with: { class: 'active' })
11
9
  end
12
10
  end
13
11
  end
@@ -15,24 +13,23 @@ end
15
13
 
16
14
  describe BootstrapNavbar::Helpers::Bootstrap2 do
17
15
  before do
18
- BootstrapNavbar.configuration.current_url_method = '"/"'
16
+ BootstrapNavbar.configure do |config|
17
+ config.current_url_method = '"/"'
18
+ config.bootstrap_version = '2.0.0'
19
+ end
19
20
  end
20
21
 
21
22
  it 'includes the correct module' do
22
- with_all_2_dot_x_versions do
23
- expect(renderer.class.ancestors).to include(BootstrapNavbar::Helpers::Bootstrap2)
24
- expect(renderer.class.ancestors).to_not include(BootstrapNavbar::Helpers::Bootstrap3)
25
- end
23
+ expect(renderer.class.ancestors).to include(BootstrapNavbar::Helpers::Bootstrap2)
24
+ expect(renderer.class.ancestors).to_not include(BootstrapNavbar::Helpers::Bootstrap3)
26
25
  end
27
26
 
28
27
  describe '#navbar' do
29
28
  context 'without parameters' do
30
29
  it 'generates the correct HTML' do
31
- with_all_2_dot_x_versions do
32
- expect(renderer.navbar).to have_tag(:div, with: { class: 'navbar' }) do
33
- with_tag :div, with: { class: 'navbar-inner' } do
34
- with_tag :div, with: { class: 'container' }
35
- end
30
+ expect(renderer.navbar).to have_tag(:div, with: { class: 'navbar' }) do
31
+ with_tag :div, with: { class: 'navbar-inner' } do
32
+ with_tag :div, with: { class: 'container' }
36
33
  end
37
34
  end
38
35
  end
@@ -40,61 +37,49 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
40
37
 
41
38
  context 'with a block' do
42
39
  it 'generates the correct HTML' do
43
- with_all_2_dot_x_versions do
44
- expect(renderer.navbar { 'foo' }).to have_tag(:div, with: { class: 'navbar' }, text: /foo/)
45
- end
40
+ expect(renderer.navbar { 'foo' }).to have_tag(:div, with: { class: 'navbar' }, text: /foo/)
46
41
  end
47
42
  end
48
43
 
49
44
  context 'with "static" parameter' do
50
45
  it 'generates the correct HTML' do
51
- with_all_2_dot_x_versions do
52
- expect(renderer.navbar(static: 'top')).to have_tag(:div, with: { class: 'navbar navbar-static-top' })
53
- expect(renderer.navbar(static: 'bottom')).to have_tag(:div, with: { class: 'navbar navbar-static-bottom' })
54
- end
46
+ expect(renderer.navbar(static: 'top')).to have_tag(:div, with: { class: 'navbar navbar-static-top' })
47
+ expect(renderer.navbar(static: 'bottom')).to have_tag(:div, with: { class: 'navbar navbar-static-bottom' })
55
48
  end
56
49
  end
57
50
 
58
51
  context 'with "fixed" parameter' do
59
52
  it 'generates the correct HTML' do
60
- with_all_2_dot_x_versions do
61
- expect(renderer.navbar(fixed: 'top')).to have_tag(:div, with: { class: 'navbar navbar-fixed-top' })
62
- expect(renderer.navbar(fixed: 'bottom')).to have_tag(:div, with: { class: 'navbar navbar-fixed-bottom' })
63
- end
53
+ expect(renderer.navbar(fixed: 'top')).to have_tag(:div, with: { class: 'navbar navbar-fixed-top' })
54
+ expect(renderer.navbar(fixed: 'bottom')).to have_tag(:div, with: { class: 'navbar navbar-fixed-bottom' })
64
55
  end
65
56
  end
66
57
 
67
58
  context 'with "inverse" parameter' do
68
59
  it 'generates the correct HTML' do
69
- with_all_2_dot_x_versions do
70
- expect(renderer.navbar(inverse: true)).to have_tag(:div, with: { class: 'navbar navbar-inverse' })
71
- end
60
+ expect(renderer.navbar(inverse: true)).to have_tag(:div, with: { class: 'navbar navbar-inverse' })
72
61
  end
73
62
  end
74
63
 
75
64
  context 'with "brand" and "brank_link" parameters' do
76
65
  it 'generates the correct HTML' do
77
- with_all_2_dot_x_versions do
78
- expect(renderer.navbar(brand: 'foo')).to have_tag(:a, with: { href: '/', class: 'brand' }, text: /foo/)
79
- expect(renderer.navbar(brand: 'foo', brand_link: 'http://google.com')).to have_tag(:a, with: { href: 'http://google.com', class: 'brand' }, text: /foo/)
80
- expect(renderer.navbar(brand_link: 'http://google.com')).to have_tag(:a, with: { href: 'http://google.com', class: 'brand' })
81
- end
66
+ expect(renderer.navbar(brand: 'foo')).to have_tag(:a, with: { href: '/', class: 'brand' }, text: /foo/)
67
+ expect(renderer.navbar(brand: 'foo', brand_link: 'http://google.com')).to have_tag(:a, with: { href: 'http://google.com', class: 'brand' }, text: /foo/)
68
+ expect(renderer.navbar(brand_link: 'http://google.com')).to have_tag(:a, with: { href: 'http://google.com', class: 'brand' })
82
69
  end
83
70
  end
84
71
 
85
72
  context 'with "responsive" parameter' do
86
73
  it 'generates the correct HTML' do
87
- with_all_2_dot_x_versions do
88
- expect(renderer.navbar(responsive: true)).to have_tag(:a, with: { class: 'btn btn-navbar', :'data-toggle' => 'collapse', :'data-target' => '.nav-collapse' }) do
89
- 3.times do
90
- with_tag :span, with: { class: 'icon-bar' }
91
- end
74
+ expect(renderer.navbar(responsive: true)).to have_tag(:a, with: { class: 'btn btn-navbar', :'data-toggle' => 'collapse', :'data-target' => '.nav-collapse' }) do
75
+ 3.times do
76
+ with_tag :span, with: { class: 'icon-bar' }
92
77
  end
93
78
  end
94
- with_versions '2.2.0'...'3' do
79
+ with_bootstrap_versions %w(2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2) do
95
80
  expect(renderer.navbar(responsive: true)).to have_tag(:div, with: { class: 'nav-collapse collapse' })
96
81
  end
97
- with_versions '0'...'2.2.0' do
82
+ with_bootstrap_versions %w(2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.1.0 2.1.1) do
98
83
  expect(renderer.navbar(responsive: true)).to have_tag(:div, with: { class: 'nav-collapse' })
99
84
  end
100
85
  end
@@ -102,17 +87,13 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
102
87
 
103
88
  context 'with "fluid" parameter' do
104
89
  it 'generates the correct HTML' do
105
- with_all_2_dot_x_versions do
106
- expect(renderer.navbar(fluid: true)).to have_tag(:div, with: { class: 'container-fluid' })
107
- end
90
+ expect(renderer.navbar(fluid: true)).to have_tag(:div, with: { class: 'container-fluid' })
108
91
  end
109
92
  end
110
93
 
111
94
  context 'with wrapper parameters' do
112
95
  it 'generates the correct HTML' do
113
- with_all_2_dot_x_versions do
114
- expect(renderer.navbar({}, class: 'my-wrapper-class', id: 'my-wrapper-id')).to have_tag(:div, with: { class: 'navbar my-wrapper-class', id: 'my-wrapper-id' })
115
- end
96
+ expect(renderer.navbar({}, class: 'my-wrapper-class', id: 'my-wrapper-id')).to have_tag(:div, with: { class: 'navbar my-wrapper-class', id: 'my-wrapper-id' })
116
97
  end
117
98
  end
118
99
  end
@@ -120,42 +101,32 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
120
101
  describe '#navbar_group' do
121
102
  context 'without parameters' do
122
103
  it 'generates the correct HTML' do
123
- with_all_2_dot_x_versions do
124
- expect(renderer.navbar_group).to have_tag(:ul, with: { class: 'nav' })
125
- expect(renderer.navbar_group { 'foo' }).to have_tag(:ul, with: { class: 'nav' }, text: /foo/)
126
- end
104
+ expect(renderer.navbar_group).to have_tag(:ul, with: { class: 'nav' })
105
+ expect(renderer.navbar_group { 'foo' }).to have_tag(:ul, with: { class: 'nav' }, text: /foo/)
127
106
  end
128
107
  end
129
108
 
130
109
  context 'with "pull" parameter' do
131
110
  it 'generates the correct HTML' do
132
- with_all_2_dot_x_versions do
133
- expect(renderer.navbar_group(pull: 'right')).to have_tag(:ul, with: { class: 'nav pull-right' })
134
- end
111
+ expect(renderer.navbar_group(pull: 'right')).to have_tag(:ul, with: { class: 'nav pull-right' })
135
112
  end
136
113
  end
137
114
 
138
115
  context 'with "class" parameter' do
139
116
  it 'generates the correct HTML' do
140
- with_all_2_dot_x_versions do
141
- expect(renderer.navbar_group(class: 'foo')).to have_tag(:ul, with: { class: 'nav foo' })
142
- end
117
+ expect(renderer.navbar_group(class: 'foo')).to have_tag(:ul, with: { class: 'nav foo' })
143
118
  end
144
119
  end
145
120
 
146
121
  context 'with random parameters' do
147
122
  it 'generates the correct HTML' do
148
- with_all_2_dot_x_versions do
149
- expect(renderer.navbar_group(:'data-foo' => 'bar')).to have_tag(:ul, with: { class: 'nav', :'data-foo' => 'bar' })
150
- end
123
+ expect(renderer.navbar_group(:'data-foo' => 'bar')).to have_tag(:ul, with: { class: 'nav', :'data-foo' => 'bar' })
151
124
  end
152
125
  end
153
126
 
154
127
  context 'with many parameters' do
155
128
  it 'generates the correct HTML' do
156
- with_all_2_dot_x_versions do
157
- expect(renderer.navbar_group(pull: 'right', class: 'foo', :'data-foo' => 'bar')).to have_tag(:ul, with: { class: 'nav foo pull-right', :'data-foo' => 'bar' })
158
- end
129
+ expect(renderer.navbar_group(pull: 'right', class: 'foo', :'data-foo' => 'bar')).to have_tag(:ul, with: { class: 'nav foo pull-right', :'data-foo' => 'bar' })
159
130
  end
160
131
  end
161
132
  end
@@ -208,31 +179,25 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
208
179
 
209
180
  context 'with list item options' do
210
181
  it 'generates the correct HTML' do
211
- with_all_2_dot_x_versions do
212
- BootstrapNavbar.configuration.current_url_method = '"/"'
213
- expect(renderer.navbar_item('foo', '/', class: 'bar', id: 'baz')).to have_tag(:li, with: { class: 'active bar', id: 'baz' })
214
- end
182
+ BootstrapNavbar.configuration.current_url_method = '"/"'
183
+ expect(renderer.navbar_item('foo', '/', class: 'bar', id: 'baz')).to have_tag(:li, with: { class: 'active bar', id: 'baz' })
215
184
  end
216
185
  end
217
186
 
218
187
  context 'with link options' do
219
188
  it 'generates the correct HTML' do
220
- with_all_2_dot_x_versions do
221
- BootstrapNavbar.configuration.current_url_method = '"/"'
222
- expect(renderer.navbar_item('foo', '/', {}, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'active' }) do
223
- with_tag :a, with: { href: '/', class: 'pelle', id: 'fant' }, text: /foo/
224
- end
189
+ BootstrapNavbar.configuration.current_url_method = '"/"'
190
+ expect(renderer.navbar_item('foo', '/', {}, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'active' }) do
191
+ with_tag :a, with: { href: '/', class: 'pelle', id: 'fant' }, text: /foo/
225
192
  end
226
193
  end
227
194
  end
228
195
 
229
196
  context 'with list item options and link options' do
230
197
  it 'generates the correct HTML' do
231
- with_all_2_dot_x_versions do
232
- BootstrapNavbar.configuration.current_url_method = '"/"'
233
- expect(renderer.navbar_item('foo', '/', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'active bar', id: 'baz' }) do
234
- with_tag :a, with: { href: '/', class: 'pelle', id: 'fant' }, text: /foo/
235
- end
198
+ BootstrapNavbar.configuration.current_url_method = '"/"'
199
+ expect(renderer.navbar_item('foo', '/', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'active bar', id: 'baz' }) do
200
+ with_tag :a, with: { href: '/', class: 'pelle', id: 'fant' }, text: /foo/
236
201
  end
237
202
  end
238
203
  end
@@ -240,69 +205,57 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
240
205
 
241
206
  context 'without current URL' do
242
207
  it 'generates the correct HTML' do
243
- with_all_2_dot_x_versions do
244
- BootstrapNavbar.configuration.current_url_method = '"/foo"'
245
- expect(renderer.navbar_item('foo')).to have_tag(:li, without: { class: 'active' }) do
246
- with_tag :a, with: { href: '#' }, text: /foo/
247
- end
248
- expect(renderer.navbar_item('foo', '/')).to have_tag(:li, without: { class: 'active' }) do
249
- with_tag :a, with: { href: '/' }, text: /foo/
250
- end
251
- expect(renderer.navbar_item('foo', '/bar')).to have_tag(:li, without: { class: 'active' }) do
252
- with_tag :a, with: { href: '/bar' }, text: /foo/
253
- end
254
- BootstrapNavbar.configuration.current_url_method = '"/"'
255
- expect(renderer.navbar_item('foo', '/foo')).to have_tag(:li, without: { class: 'active' }) do
256
- with_tag :a, with: { href: '/foo' }, text: /foo/
257
- end
208
+ BootstrapNavbar.configuration.current_url_method = '"/foo"'
209
+ expect(renderer.navbar_item('foo')).to have_tag(:li, without: { class: 'active' }) do
210
+ with_tag :a, with: { href: '#' }, text: /foo/
211
+ end
212
+ expect(renderer.navbar_item('foo', '/')).to have_tag(:li, without: { class: 'active' }) do
213
+ with_tag :a, with: { href: '/' }, text: /foo/
214
+ end
215
+ expect(renderer.navbar_item('foo', '/bar')).to have_tag(:li, without: { class: 'active' }) do
216
+ with_tag :a, with: { href: '/bar' }, text: /foo/
217
+ end
218
+ BootstrapNavbar.configuration.current_url_method = '"/"'
219
+ expect(renderer.navbar_item('foo', '/foo')).to have_tag(:li, without: { class: 'active' }) do
220
+ with_tag :a, with: { href: '/foo' }, text: /foo/
258
221
  end
259
222
  end
260
223
 
261
224
  context 'with list item options' do
262
225
  it 'generates the correct HTML' do
263
- with_all_2_dot_x_versions do
264
- BootstrapNavbar.configuration.current_url_method = '"/foo"'
265
- expect(renderer.navbar_item('foo', '/', class: 'bar', id: 'baz')).to have_tag(:li, without: { class: 'active' }, with: { class: 'bar', id: 'baz' })
266
- end
226
+ BootstrapNavbar.configuration.current_url_method = '"/foo"'
227
+ expect(renderer.navbar_item('foo', '/', class: 'bar', id: 'baz')).to have_tag(:li, without: { class: 'active' }, with: { class: 'bar', id: 'baz' })
267
228
  end
268
229
  end
269
230
  end
270
231
 
271
232
  context 'with a block' do
272
233
  it 'generates the correct HTML' do
273
- with_all_2_dot_x_versions do
274
- expect(renderer.navbar_item { 'bar' }).to have_tag(:li) do
275
- with_tag :a, with: { href: '#' }, text: /bar/
276
- end
234
+ expect(renderer.navbar_item { 'bar' }).to have_tag(:li) do
235
+ with_tag :a, with: { href: '#' }, text: /bar/
277
236
  end
278
237
  end
279
238
 
280
239
  context 'with list item options' do
281
240
  it 'generates the correct HTML' do
282
- with_all_2_dot_x_versions do
283
- expect(renderer.navbar_item('/foo', class: 'pelle', id: 'fant') { 'bar' }).to have_tag(:li, with: { class: 'pelle', id: 'fant' }) do
284
- with_tag :a, with: { href: '/foo' }, text: /bar/
285
- end
241
+ expect(renderer.navbar_item('/foo', class: 'pelle', id: 'fant') { 'bar' }).to have_tag(:li, with: { class: 'pelle', id: 'fant' }) do
242
+ with_tag :a, with: { href: '/foo' }, text: /bar/
286
243
  end
287
244
  end
288
245
  end
289
246
 
290
247
  context 'with link options' do
291
248
  it 'generates the correct HTML' do
292
- with_all_2_dot_x_versions do
293
- expect(renderer.navbar_item('/foo', {}, class: 'pelle', id: 'fant') { 'bar' }).to have_tag(:li) do
294
- with_tag :a, with: { href: '/foo', class: 'pelle', id: 'fant' }, text: /bar/
295
- end
249
+ expect(renderer.navbar_item('/foo', {}, class: 'pelle', id: 'fant') { 'bar' }).to have_tag(:li) do
250
+ with_tag :a, with: { href: '/foo', class: 'pelle', id: 'fant' }, text: /bar/
296
251
  end
297
252
  end
298
253
  end
299
254
 
300
255
  context 'with list item options and link options' do
301
256
  it 'generates the correct HTML' do
302
- with_all_2_dot_x_versions do
303
- expect(renderer.navbar_item('/foo', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant') { 'shnoo' }).to have_tag(:li, with: { class: 'bar', id: 'baz' }) do
304
- with_tag :a, with: { href: '/foo', class: 'pelle', id: 'fant' }, text: /shnoo/
305
- end
257
+ expect(renderer.navbar_item('/foo', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant') { 'shnoo' }).to have_tag(:li, with: { class: 'bar', id: 'baz' }) do
258
+ with_tag :a, with: { href: '/foo', class: 'pelle', id: 'fant' }, text: /shnoo/
306
259
  end
307
260
  end
308
261
  end
@@ -318,67 +271,57 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
318
271
 
319
272
  describe '#navbar_dropdown' do
320
273
  it 'generates the correct HTML' do
321
- with_all_2_dot_x_versions do
322
- expect(renderer.navbar_dropdown('foo')).to have_tag(:li, with: { class: 'dropdown' }) do
323
- with_tag :a, with: { href: '#', class: 'dropdown-toggle', :'data-toggle' => 'dropdown' } do
324
- with_text /foo/
325
- with_tag :b, with: { class: 'caret' }
326
- end
327
- with_dropdown_menu
274
+ expect(renderer.navbar_dropdown('foo')).to have_tag(:li, with: { class: 'dropdown' }) do
275
+ with_tag :a, with: { href: '#', class: 'dropdown-toggle', :'data-toggle' => 'dropdown' } do
276
+ with_text /foo/
277
+ with_tag :b, with: { class: 'caret' }
328
278
  end
279
+ with_dropdown_menu
280
+ end
329
281
 
330
- expect(renderer.navbar_dropdown('foo') { 'bar' }).to have_tag(:li, with: { class: 'dropdown' }) do
331
- with_tag :a, with: { href: '#', class: 'dropdown-toggle', :'data-toggle' => 'dropdown' } do
332
- with_text /foo/
333
- with_tag :b, with: { class: 'caret' }
334
- end
335
- with_dropdown_menu('bar')
282
+ expect(renderer.navbar_dropdown('foo') { 'bar' }).to have_tag(:li, with: { class: 'dropdown' }) do
283
+ with_tag :a, with: { href: '#', class: 'dropdown-toggle', :'data-toggle' => 'dropdown' } do
284
+ with_text /foo/
285
+ with_tag :b, with: { class: 'caret' }
336
286
  end
287
+ with_dropdown_menu('bar')
337
288
  end
338
289
  end
339
290
  end
340
291
 
341
292
  describe '#navbar_sub_dropdown' do
342
293
  it 'generates the correct HTML' do
343
- with_all_2_dot_x_versions do
344
- expect(renderer.navbar_sub_dropdown('foo')).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
345
- with_tag :a, with: { href: '#' }, text: /foo/
346
- with_dropdown_menu
347
- end
294
+ expect(renderer.navbar_sub_dropdown('foo')).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
295
+ with_tag :a, with: { href: '#' }, text: /foo/
296
+ with_dropdown_menu
297
+ end
348
298
 
349
- expect(renderer.navbar_sub_dropdown('foo') { 'bar' }).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
350
- with_tag :a, with: { href: '#' }, text: /foo/
351
- with_dropdown_menu('bar')
352
- end
299
+ expect(renderer.navbar_sub_dropdown('foo') { 'bar' }).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
300
+ with_tag :a, with: { href: '#' }, text: /foo/
301
+ with_dropdown_menu('bar')
353
302
  end
354
303
  end
355
304
 
356
305
  context 'with list item options' do
357
306
  it 'generates the correct HTML' do
358
- with_all_2_dot_x_versions do
359
- expect(renderer.navbar_sub_dropdown('foo', class: 'bar', id: 'baz')).to have_tag(:li, with: { class: 'dropdown-submenu bar', id: 'baz' }) do
360
- with_tag :a, with: { href: '#' }, text: /foo/
361
- end
307
+ expect(renderer.navbar_sub_dropdown('foo', class: 'bar', id: 'baz')).to have_tag(:li, with: { class: 'dropdown-submenu bar', id: 'baz' }) do
308
+ with_tag :a, with: { href: '#' }, text: /foo/
362
309
  end
363
310
  end
364
311
  end
365
312
 
366
313
  context 'with link options' do
367
314
  it 'generates the correct HTML' do
368
- with_all_2_dot_x_versions do
369
- expect(renderer.navbar_sub_dropdown('foo', {}, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
370
- with_tag :a, with: { href: '#', class: 'pelle', id: 'fant' }, text: /foo/
371
- end
315
+ expect(renderer.navbar_sub_dropdown('foo', {}, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
316
+ with_tag :a, with: { href: '#', class: 'pelle', id: 'fant' }, text: /foo/
372
317
  end
373
318
  end
374
319
  end
375
320
 
376
321
  context 'with list item options and link options' do
377
322
  it 'generates the correct HTML' do
378
- with_all_2_dot_x_versions do
379
- expect(renderer.navbar_sub_dropdown('foo', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'dropdown-submenu bar', id: 'baz' }) do
380
- with_tag :a, with: { href: '#', class: 'pelle', id: 'fant' }, text: /foo/
381
- end
323
+ expect(renderer.navbar_sub_dropdown('foo', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'dropdown-submenu bar', id: 'baz' }) do
324
+ with_tag :a, with: { href: '#', class: 'pelle', id: 'fant' }, text: /foo/
382
325
  end
383
326
  end
384
327
  end
@@ -387,45 +330,35 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
387
330
 
388
331
  describe '#navbar_dropdown_divider' do
389
332
  it 'generates the correct HTML' do
390
- with_all_2_dot_x_versions do
391
- expect(renderer.navbar_dropdown_divider).to have_tag(:li, with: { class: 'divider' }, text: '')
392
- end
333
+ expect(renderer.navbar_dropdown_divider).to have_tag(:li, with: { class: 'divider' }, text: '')
393
334
  end
394
335
  end
395
336
 
396
337
  describe '#navbar_dropdown_header' do
397
338
  it 'generates the correct HTML' do
398
- with_all_2_dot_x_versions do
399
- expect(renderer.navbar_dropdown_header('foo')).to have_tag(:li, with: { class: 'nav-header' }, text: /foo/)
400
- end
339
+ expect(renderer.navbar_dropdown_header('foo')).to have_tag(:li, with: { class: 'nav-header' }, text: /foo/)
401
340
  end
402
341
  end
403
342
 
404
343
  describe '#navbar_divider' do
405
344
  it 'generates the correct HTML' do
406
- with_all_2_dot_x_versions do
407
- expect(renderer.navbar_divider).to have_tag(:li, with: { class: 'divider-vertical' }, text: '')
408
- end
345
+ expect(renderer.navbar_divider).to have_tag(:li, with: { class: 'divider-vertical' }, text: '')
409
346
  end
410
347
  end
411
348
 
412
349
  describe '#navbar_text' do
413
350
  it 'generates the correct HTML' do
414
- with_all_2_dot_x_versions do
415
- expect(renderer.navbar_text('foo')).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
416
- expect(renderer.navbar_text { 'foo' }).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
417
- expect(renderer.navbar_text('foo', 'right')).to have_tag(:p, with: { class: 'navbar-text pull-right' }, text: /foo/)
418
- expect(renderer.navbar_text(nil, 'left') { 'foo' }).to have_tag(:p, with: { class: 'navbar-text pull-left' }, text: /foo/)
419
- end
351
+ expect(renderer.navbar_text('foo')).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
352
+ expect(renderer.navbar_text { 'foo' }).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
353
+ expect(renderer.navbar_text('foo', 'right')).to have_tag(:p, with: { class: 'navbar-text pull-right' }, text: /foo/)
354
+ expect(renderer.navbar_text(nil, 'left') { 'foo' }).to have_tag(:p, with: { class: 'navbar-text pull-left' }, text: /foo/)
420
355
  end
421
356
  end
422
357
 
423
358
  describe '#navbar_brand_link' do
424
359
  it 'generates the correct HTML' do
425
- with_all_2_dot_x_versions do
426
- expect(renderer.navbar_brand_link('foo')).to have_tag(:a, with: { class: 'brand', href: '/' }, text: /foo/)
427
- expect(renderer.navbar_brand_link('foo', '/foo')).to have_tag(:a, with: { class: 'brand', href: '/foo' }, text: /foo/)
428
- end
360
+ expect(renderer.navbar_brand_link('foo')).to have_tag(:a, with: { class: 'brand', href: '/' }, text: /foo/)
361
+ expect(renderer.navbar_brand_link('foo', '/foo')).to have_tag(:a, with: { class: 'brand', href: '/foo' }, text: /foo/)
429
362
  end
430
363
  end
431
364
  end
@@ -2,13 +2,11 @@ require 'spec_helper'
2
2
 
3
3
  shared_examples 'active navbar link' do
4
4
  it 'generates the correct HTML' do
5
- with_all_3_dot_x_versions do
6
- paths_and_urls.each do |current_path_or_url|
7
- paths_and_urls.each do |menu_path_or_url|
8
- BootstrapNavbar.configuration.current_url_method = "'#{current_path_or_url}'"
9
- expect(renderer.navbar_item('foo', menu_path_or_url)).to have_tag(:li, with: { class: 'active' }) do
10
- with_tag :a, with: { href: menu_path_or_url }, text: /foo/
11
- end
5
+ paths_and_urls.each do |current_path_or_url|
6
+ paths_and_urls.each do |menu_path_or_url|
7
+ BootstrapNavbar.configuration.current_url_method = "'#{current_path_or_url}'"
8
+ expect(renderer.navbar_item('foo', menu_path_or_url)).to have_tag(:li, with: { class: 'active' }) do
9
+ with_tag :a, with: { href: menu_path_or_url }, text: /foo/
12
10
  end
13
11
  end
14
12
  end
@@ -17,56 +15,52 @@ end
17
15
 
18
16
  describe BootstrapNavbar::Helpers::Bootstrap3 do
19
17
  before do
20
- BootstrapNavbar.configuration.current_url_method = '"/"'
18
+ BootstrapNavbar.configure do |config|
19
+ config.current_url_method = '"/"'
20
+ config.bootstrap_version = '3.0.0'
21
+ end
21
22
  end
22
23
 
23
24
  it 'includes the correct module' do
24
- with_all_3_dot_x_versions do
25
- expect(renderer.class.ancestors).to include(BootstrapNavbar::Helpers::Bootstrap3)
26
- expect(renderer.class.ancestors).to_not include(BootstrapNavbar::Helpers::Bootstrap2)
27
- end
25
+ expect(renderer.class.ancestors).to include(BootstrapNavbar::Helpers::Bootstrap3)
26
+ expect(renderer.class.ancestors).to_not include(BootstrapNavbar::Helpers::Bootstrap2)
28
27
  end
29
28
 
30
29
  describe '#navbar' do
31
30
  context 'without parameters' do
32
31
  it 'generates the correct HTML' do
33
- with_all_3_dot_x_versions do
34
- expect(renderer.navbar { 'foo' }).to have_tag(:nav, with: { class: 'navbar navbar-default', role: 'navigation' }) do
35
- with_tag :div, with: { class: 'container' } do
36
- with_tag :div, with: { class: 'navbar-header' } do
37
- with_tag :button, with: { type: 'button', class: 'navbar-toggle', :'data-toggle' => 'collapse', :'data-target' => '#navbar-collapsable' } do
38
- with_tag :span, with: { class: 'sr-only' }, text: /Toggle navigation/
39
- 3.times do
40
- with_tag :span, with: { class: 'icon-bar' }
41
- end
42
- end
43
- end
44
- with_tag :div, with: { class: 'collapse navbar-collapse', id: 'navbar-collapsable' }, text: /foo/
45
- end
46
- end
47
- end
32
+ expect(renderer.navbar { 'foo' }).to have_tag(:nav, with: { class: 'navbar navbar-default', role: 'navigation' }, text: /foo/)
33
+ end
34
+ end
35
+
36
+ context 'with "inverse" parameter' do
37
+ it 'generates the correct HTML' do
38
+ expect(renderer.navbar(inverse: true)).to have_tag(:nav, with: { class: 'navbar navbar-inverse' })
39
+ end
40
+ end
41
+
42
+ context 'with "fixed" parameter' do
43
+ it 'generates the correct HTML' do
44
+ expect(renderer.navbar(fixed: 'top')).to have_tag(:nav, with: { class: 'navbar navbar-default navbar-fixed-top' })
45
+ expect(renderer.navbar(fixed: 'bottom')).to have_tag(:nav, with: { class: 'navbar navbar-default navbar-fixed-bottom' })
48
46
  end
49
47
  end
50
48
 
51
49
  context 'with "static" parameter' do
52
50
  it 'generates the correct HTML' do
53
- with_all_3_dot_x_versions do
54
- expect(renderer.navbar(static: true)).to have_tag(:nav, with: { class: 'navbar navbar-default navbar-static-top' })
55
- end
51
+ expect(renderer.navbar(static: true)).to have_tag(:nav, with: { class: 'navbar navbar-default navbar-static-top' })
56
52
  end
57
53
  end
58
54
 
59
55
  context 'with "container" parameter' do
60
56
  it 'generates the correct HTML' do
61
- with_all_3_dot_x_versions do
62
- expect(renderer.navbar(container: true)).to have_tag(:nav, with: { class: 'navbar navbar-default' }) do
63
- with_tag :div, with: { class: 'container' }
64
- end
65
- expect(renderer.navbar(container: false)).to have_tag(:nav, with: { class: 'navbar navbar-default' }) do
66
- without_tag :div, with: { class: 'container' }
67
- end
57
+ expect(renderer.navbar(container: true)).to have_tag(:nav, with: { class: 'navbar navbar-default' }) do
58
+ with_tag :div, with: { class: 'container' }
68
59
  end
69
- with_version '3.1.0' do
60
+ expect(renderer.navbar(container: false)).to have_tag(:nav, with: { class: 'navbar navbar-default' }) do
61
+ without_tag :div, with: { class: 'container' }
62
+ end
63
+ with_bootstrap_versions %w(3.1.0) do
70
64
  expect(renderer.navbar(container: 'fluid')).to have_tag(:nav, with: { class: 'navbar navbar-default' }) do
71
65
  with_tag :div, with: { class: 'container-fluid' }
72
66
  end
@@ -74,29 +68,46 @@ describe BootstrapNavbar::Helpers::Bootstrap3 do
74
68
  end
75
69
  end
76
70
 
77
- context 'with "fixed" parameter' do
71
+ end
72
+
73
+ describe '#navbar_header',:focus do
74
+ context 'without parameters' do
78
75
  it 'generates the correct HTML' do
79
- with_all_3_dot_x_versions do
80
- expect(renderer.navbar(fixed: 'top')).to have_tag(:nav, with: { class: 'navbar navbar-default navbar-fixed-top' })
81
- expect(renderer.navbar(fixed: 'bottom')).to have_tag(:nav, with: { class: 'navbar navbar-default navbar-fixed-bottom' })
76
+ expect(renderer.navbar_header { 'foo' }).to have_tag :div, with: { class: 'navbar-header' } do
77
+ with_tag :button, with: { type: 'button', class: 'navbar-toggle', :'data-toggle' => 'collapse', :'data-target' => '#navbar-collapsable' } do
78
+ with_tag :span, with: { class: 'sr-only' }, text: /Toggle navigation/
79
+ 3.times do
80
+ with_tag :span, with: { class: 'icon-bar' }
81
+ end
82
+ end
82
83
  end
83
84
  end
84
85
  end
85
86
 
86
- context 'with "inverse" parameter' do
87
+ context 'with "brand" and "brank_link" parameters' do
87
88
  it 'generates the correct HTML' do
88
- with_all_3_dot_x_versions do
89
- expect(renderer.navbar(inverse: true)).to have_tag(:nav, with: { class: 'navbar navbar-inverse' })
90
- end
89
+ expect(renderer.navbar_header(brand: 'foo')).to have_tag(:a, with: { href: '/', class: 'navbar-brand' }, text: /foo/)
90
+ expect(renderer.navbar_header(brand: 'foo', brand_link: 'http://google.com')).to have_tag(:a, with: { href: 'http://google.com', class: 'navbar-brand' }, text: /foo/)
91
91
  end
92
92
  end
93
93
 
94
- context 'with "brand" and "brank_link" parameters' do
94
+ context 'with "class" parameter' do
95
95
  it 'generates the correct HTML' do
96
- with_all_3_dot_x_versions do
97
- expect(renderer.navbar(brand: 'foo')).to have_tag(:a, with: { href: '/', class: 'navbar-brand' }, text: /foo/)
98
- expect(renderer.navbar(brand: 'foo', brand_link: 'http://google.com')).to have_tag(:a, with: { href: 'http://google.com', class: 'navbar-brand' }, text: /foo/)
99
- end
96
+ expect(renderer.navbar_header(class: 'bar')).to have_tag :div, with: { class: 'navbar-header bar' }
97
+ end
98
+ end
99
+ end
100
+
101
+ describe '#navbar_collapse',:focus do
102
+ context 'without parameters' do
103
+ it 'generates the correct HTML' do
104
+ expect(renderer.navbar_collapse { 'foo' }).to have_tag :div, with: { class: 'collapse navbar-collapse', id: 'navbar-collapsable' }, text: /foo/
105
+ end
106
+ end
107
+
108
+ context 'with "class" parameter' do
109
+ it 'generates the correct HTML' do
110
+ expect(renderer.navbar_collapse(class: 'bar')).to have_tag :div, with: { class: 'collapse navbar-collapse bar', id: 'navbar-collapsable' }
100
111
  end
101
112
  end
102
113
  end
@@ -104,32 +115,26 @@ describe BootstrapNavbar::Helpers::Bootstrap3 do
104
115
  describe '#navbar_group' do
105
116
  context 'without parameters' do
106
117
  it 'generates the correct HTML' do
107
- with_all_3_dot_x_versions do
108
- expect(renderer.navbar_group).to have_tag(:ul, with: { class: 'nav navbar-nav' })
109
- end
118
+ expect(renderer.navbar_group).to have_tag(:ul, with: { class: 'nav navbar-nav' })
110
119
  end
111
120
  end
112
121
 
113
122
  context 'with "align" parameter' do
114
123
  it 'generates the correct HTML' do
115
- with_all_3_dot_x_versions do
116
- expect(renderer.navbar_group(align: 'right')).to have_tag(:ul, with: { class: 'nav navbar-nav navbar-right' })
117
- expect(renderer.navbar_group(align: 'left')).to have_tag(:ul, with: { class: 'nav navbar-nav navbar-left' })
118
- end
124
+ expect(renderer.navbar_group(align: 'right')).to have_tag(:ul, with: { class: 'nav navbar-nav navbar-right' })
125
+ expect(renderer.navbar_group(align: 'left')).to have_tag(:ul, with: { class: 'nav navbar-nav navbar-left' })
119
126
  end
120
127
  end
121
128
  end
122
129
 
123
130
  describe '#navbar_dropdown' do
124
131
  it 'generates the correct HTML' do
125
- with_all_3_dot_x_versions do
126
- expect(renderer.navbar_dropdown('foo') { 'bar' }).to have_tag(:li, with: { class: 'dropdown' }) do
127
- with_tag :a, with: { href: '#', class: 'dropdown-toggle', :'data-toggle' => 'dropdown' } do
128
- with_text 'foo '
129
- with_tag :b, with: { class: 'caret' }
130
- end
131
- with_tag :ul, with: { class: 'dropdown-menu' }, text: /bar/
132
+ expect(renderer.navbar_dropdown('foo') { 'bar' }).to have_tag(:li, with: { class: 'dropdown' }) do
133
+ with_tag :a, with: { href: '#', class: 'dropdown-toggle', :'data-toggle' => 'dropdown' } do
134
+ with_text 'foo '
135
+ with_tag :b, with: { class: 'caret' }
132
136
  end
137
+ with_tag :ul, with: { class: 'dropdown-menu' }, text: /bar/
133
138
  end
134
139
  end
135
140
  end
@@ -183,18 +188,16 @@ describe BootstrapNavbar::Helpers::Bootstrap3 do
183
188
 
184
189
  context 'without current URL' do
185
190
  it 'generates the correct HTML' do
186
- with_all_3_dot_x_versions do
187
- BootstrapNavbar.configuration.current_url_method = '"/foo"'
188
- expect(renderer.navbar_item('foo', '/')).to have_tag(:li, without: { class: 'active' }) do
189
- with_tag :a, with: { href: '/' }, text: /foo/
190
- end
191
- expect(renderer.navbar_item('foo', '/bar')).to have_tag(:li, without: { class: 'active' }) do
192
- with_tag :a, with: { href: '/bar' }, text: /foo/
193
- end
194
- BootstrapNavbar.configuration.current_url_method = '"/"'
195
- expect(renderer.navbar_item('foo', '/foo')).to have_tag(:li, without: { class: 'active' }) do
196
- with_tag :a, with: { href: '/foo' }, text: /foo/
197
- end
191
+ BootstrapNavbar.configuration.current_url_method = '"/foo"'
192
+ expect(renderer.navbar_item('foo', '/')).to have_tag(:li, without: { class: 'active' }) do
193
+ with_tag :a, with: { href: '/' }, text: /foo/
194
+ end
195
+ expect(renderer.navbar_item('foo', '/bar')).to have_tag(:li, without: { class: 'active' }) do
196
+ with_tag :a, with: { href: '/bar' }, text: /foo/
197
+ end
198
+ BootstrapNavbar.configuration.current_url_method = '"/"'
199
+ expect(renderer.navbar_item('foo', '/foo')).to have_tag(:li, without: { class: 'active' }) do
200
+ with_tag :a, with: { href: '/foo' }, text: /foo/
198
201
  end
199
202
  end
200
203
  end
@@ -203,17 +206,13 @@ describe BootstrapNavbar::Helpers::Bootstrap3 do
203
206
  describe '#navbar_form' do
204
207
  context 'without parameters' do
205
208
  it 'generates the correct HTML' do
206
- with_all_3_dot_x_versions do
207
- expect(renderer.navbar_form { 'foo' }).to have_tag(:form, with: { class: 'navbar-form', role: 'form' }, text: /foo/)
208
- end
209
+ expect(renderer.navbar_form { 'foo' }).to have_tag(:form, with: { class: 'navbar-form', role: 'form' }, text: /foo/)
209
210
  end
210
211
  end
211
212
 
212
213
  context 'with "align" parameter' do
213
214
  it 'generates the correct HTML' do
214
- with_all_3_dot_x_versions do
215
- expect(renderer.navbar_form(align: 'left') { 'foo' }).to have_tag(:form, with: { class: 'navbar-form navbar-left', role: 'form' }, text: /foo/)
216
- end
215
+ expect(renderer.navbar_form(align: 'left') { 'foo' }).to have_tag(:form, with: { class: 'navbar-form navbar-left', role: 'form' }, text: /foo/)
217
216
  end
218
217
  end
219
218
  end
@@ -221,33 +220,25 @@ describe BootstrapNavbar::Helpers::Bootstrap3 do
221
220
  describe '#navbar_text' do
222
221
  context 'without parameters' do
223
222
  it 'raises an error' do
224
- with_all_3_dot_x_versions do
225
- expect { renderer.navbar_text }.to raise_error(StandardError, 'Please provide either the "text" parameter or a block.')
226
- end
223
+ expect { renderer.navbar_text }.to raise_error(StandardError, 'Please provide either the "text" parameter or a block.')
227
224
  end
228
225
  end
229
226
 
230
227
  context 'with "text" parameter and a block' do
231
228
  it 'raises an error' do
232
- with_all_3_dot_x_versions do
233
- expect { renderer.navbar_text }.to raise_error(StandardError, 'Please provide either the "text" parameter or a block.')
234
- end
229
+ expect { renderer.navbar_text }.to raise_error(StandardError, 'Please provide either the "text" parameter or a block.')
235
230
  end
236
231
  end
237
232
 
238
233
  context 'with "text" parameter' do
239
234
  it 'generates the correct HTML' do
240
- with_all_3_dot_x_versions do
241
- expect(renderer.navbar_text('foo')).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
242
- end
235
+ expect(renderer.navbar_text('foo')).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
243
236
  end
244
237
  end
245
238
 
246
239
  context 'with block' do
247
240
  it 'generates the correct HTML' do
248
- with_all_3_dot_x_versions do
249
- expect(renderer.navbar_text { 'foo' }).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
250
- end
241
+ expect(renderer.navbar_text { 'foo' }).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
251
242
  end
252
243
  end
253
244
  end
@@ -255,17 +246,13 @@ describe BootstrapNavbar::Helpers::Bootstrap3 do
255
246
  describe '#navbar_button' do
256
247
  context 'without parameters' do
257
248
  it 'generates the correct HTML' do
258
- with_all_3_dot_x_versions do
259
- expect(renderer.navbar_button('foo')).to have_tag(:button, with: { class: 'btn navbar-btn', type: 'button' }, text: /foo/)
260
- end
249
+ expect(renderer.navbar_button('foo')).to have_tag(:button, with: { class: 'btn navbar-btn', type: 'button' }, text: /foo/)
261
250
  end
262
251
  end
263
252
 
264
253
  context 'with "class" parameter' do
265
254
  it 'generates the correct HTML' do
266
- with_all_3_dot_x_versions do
267
- expect(renderer.navbar_button('foo', class: 'bar')).to have_tag(:button, with: { class: 'btn navbar-btn bar', type: 'button' }, text: /foo/)
268
- end
255
+ expect(renderer.navbar_button('foo', class: 'bar')).to have_tag(:button, with: { class: 'btn navbar-btn bar', type: 'button' }, text: /foo/)
269
256
  end
270
257
  end
271
258
  end
@@ -8,22 +8,9 @@ module Helpers
8
8
  end.new
9
9
  end
10
10
 
11
- def with_all_2_dot_x_versions(&block)
12
- with_versions '2'...'3', &block
13
- end
14
-
15
- def with_all_3_dot_x_versions(&block)
16
- with_versions '3'...'4', &block
17
- end
18
-
19
- def with_version(version, &block)
20
- with_versions version..version, &block
21
- end
22
-
23
- def with_versions(versions, &block)
24
- BootstrapNavbar::BOOTSTRAP_VERSIONS.each do |version|
25
- next unless versions.cover?(version)
26
- puts "Testing version #{version}..."
11
+ def with_bootstrap_versions(versions, &block)
12
+ versions.each do |version|
13
+ puts "Testing Bootstrap version #{version}..."
27
14
  BootstrapNavbar.configuration.bootstrap_version = version
28
15
  block.call
29
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-navbar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel Meurer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-04 00:00:00.000000000 Z
11
+ date: 2014-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -115,6 +115,7 @@ extensions: []
115
115
  extra_rdoc_files: []
116
116
  files:
117
117
  - .travis.yml
118
+ - CHANGELOG.md
118
119
  - Gemfile
119
120
  - Guardfile
120
121
  - LICENSE.txt