strikeroff-simple-navigation 2.0.2

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.
@@ -0,0 +1,60 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe SimpleNavigation::Renderer::Base do
4
+ before(:each) do
5
+ @controller = stub(:controller)
6
+ SimpleNavigation.stub!(:controller).and_return(@controller)
7
+ @base_renderer = SimpleNavigation::Renderer::Base.new
8
+ end
9
+ it "should inclue ActionView::Helpers::UrlHelper" do
10
+ @base_renderer.should respond_to(:link_to)
11
+ end
12
+ it "should include ActionView::Helpers::TagHelper" do
13
+ @base_renderer.should respond_to(:content_tag)
14
+ end
15
+
16
+ describe 'delegated methods' do
17
+ it {@base_renderer.should respond_to(:form_authenticity_token)}
18
+ it {@base_renderer.should respond_to(:protect_against_forgery?)}
19
+ it {@base_renderer.should respond_to(:request_forgery_protection_token)}
20
+ end
21
+
22
+ describe 'initialize' do
23
+ it {@base_renderer.controller.should == @controller}
24
+ end
25
+
26
+ describe 'controller_method' do
27
+ context 'delegate a single method' do
28
+ before(:each) do
29
+ @base_renderer.class_eval do
30
+ controller_method :my_method
31
+ end
32
+ end
33
+ it 'should delegate a controller_method to the controller' do
34
+ @controller.should_receive(:my_method)
35
+ @base_renderer.my_method
36
+ end
37
+ end
38
+
39
+ context 'delegate multiple methods' do
40
+ before(:each) do
41
+ @base_renderer.class_eval do
42
+ controller_method :test1, :test2
43
+ end
44
+ end
45
+ it 'should delegate all controller_methods to the controller' do
46
+ @controller.should_receive(:test1)
47
+ @base_renderer.test1
48
+ @controller.should_receive(:test2)
49
+ @base_renderer.test2
50
+ end
51
+ end
52
+ end
53
+
54
+ describe 'render' do
55
+ it "be subclass responsability" do
56
+ lambda {@base_renderer.render(:container)}.should raise_error('subclass responsibility')
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,134 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ require 'html/document' unless defined? HTML::Document
3
+
4
+ describe SimpleNavigation::Renderer::List do
5
+
6
+ describe 'render' do
7
+
8
+ def sub_items
9
+ [
10
+ [:subnav1, 'subnav1', 'subnav1_url', {}, nil],
11
+ [:subnav2, 'subnav2', 'subnav2_url', {}, nil]
12
+ ]
13
+ end
14
+
15
+ def primary_items
16
+ [
17
+ [:users, 'users', 'first_url', {:id => 'my_id'}, nil],
18
+ [:invoices, 'invoices', 'second_url', {}, nil],
19
+ [:accounts, 'accounts', 'third_url', {:style => 'float:right'}, nil]
20
+ ]
21
+ end
22
+
23
+ def primary_container
24
+ container = SimpleNavigation::ItemContainer.new(0)
25
+ container.dom_id = 'nav_dom_id'
26
+ container.dom_class = 'nav_dom_class'
27
+ @items = primary_items.map {|params| SimpleNavigation::Item.new(container, *params)}
28
+ @items.each {|i| i.stub!(:selected? => false)}
29
+ container.instance_variable_set(:@items, @items)
30
+ primary_item(:invoices) {|item| item.instance_variable_set(:@sub_navigation, subnav_container)}
31
+ container
32
+ end
33
+
34
+ def primary_item(key)
35
+ yield @items.find {|i| i.key == key}
36
+ end
37
+
38
+ def select_item(key)
39
+ primary_item(key) {|item| item.stub!(:selected? => true)}
40
+ end
41
+
42
+ def subnav_container
43
+ container = SimpleNavigation::ItemContainer.new(1)
44
+ items = sub_items.map {|params| SimpleNavigation::Item.new(container, *params)}
45
+ items.each {|i| i.stub!(:selected? => false)}
46
+ container.instance_variable_set(:@items, items)
47
+ container
48
+ end
49
+
50
+ def render(current_nav=nil, include_subnav=false)
51
+ primary_navigation = primary_container
52
+ select_item(current_nav) if current_nav
53
+ @renderer = SimpleNavigation::Renderer::List.new
54
+ HTML::Document.new(@renderer.render(primary_navigation, include_subnav)).root
55
+ end
56
+
57
+ it "should render a ul-tag around the items" do
58
+ HTML::Selector.new('ul').select(render).should have(1).entries
59
+ end
60
+ it "the rendered ul-tag should have the specified dom_id" do
61
+ HTML::Selector.new('ul#nav_dom_id').select(render).should have(1).entries
62
+ end
63
+ it "the rendered ul-tag should have the specified class" do
64
+ HTML::Selector.new('ul.nav_dom_class').select(render).should have(1).entries
65
+ end
66
+ it "should render a li tag for each item" do
67
+ HTML::Selector.new('li').select(render).should have(3).entries
68
+ end
69
+ it "should render an a-tag inside each li-tag" do
70
+ HTML::Selector.new('li a').select(render).should have(3).entries
71
+ end
72
+ it "should pass the specified html_options to the li element" do
73
+ HTML::Selector.new('li[style=float:right]').select(render).should have(1).entries
74
+ end
75
+ it "should give the li the id specified in the html_options" do
76
+ HTML::Selector.new('li#my_id').select(render).should have(1).entries
77
+ end
78
+ it "should give the li the default id (stringified key) if no id is specified in the html_options" do
79
+ HTML::Selector.new('ul li#invoices').select(render).should have(1).entries
80
+ end
81
+ it "should not apply the the default id where there is an id specified in the html_options" do
82
+ HTML::Selector.new('ul li#users').select(render).should be_empty
83
+ end
84
+
85
+ context 'with current_navigation set' do
86
+ it "should mark the matching li-item as selected (with the css_class specified in configuration)" do
87
+ HTML::Selector.new('li.selected').select(render(:invoices)).should have(1).entries
88
+ end
89
+ it "should also mark the links inside the selected li's as selected" do
90
+ HTML::Selector.new('li.selected a.selected').select(render(:invoices)).should have(1).entries
91
+ end
92
+
93
+ end
94
+
95
+ context 'without current_navigation set' do
96
+ it "should not mark any of the items as selected" do
97
+ HTML::Selector.new('li.selected').select(render).should be_empty
98
+ end
99
+ it "should not mark any links as selected" do
100
+ HTML::Selector.new('a.selected').select(render).should be_empty
101
+ end
102
+ end
103
+
104
+ context 'nested sub_navigation' do
105
+ it "should nest the current_primary's subnavigation inside the selected li-element" do
106
+ HTML::Selector.new('li.selected ul li').select(render(:invoices, true)).should have(2).entries
107
+ end
108
+ it "should be possible to identify sub items using an html selector (using ids)" do
109
+ HTML::Selector.new('#invoices #subnav1').select(render(:invoices, true)).should have(1).entries
110
+ end
111
+ context 'render_all_levels = false' do
112
+ before(:each) do
113
+ SimpleNavigation.config.render_all_levels = false
114
+ end
115
+ it "should not render the invoices submenu if the user-primary is active" do
116
+ HTML::Selector.new('#invoices #subnav1').select(render(:users, true)).should be_empty
117
+ HTML::Selector.new('#invoices #subnav2').select(render(:users, true)).should be_empty
118
+ end
119
+ end
120
+
121
+ context 'render_all_levels = true' do
122
+ before(:each) do
123
+ SimpleNavigation.config.render_all_levels = true
124
+ end
125
+ it "should render the invoices submenu even if the user-primary is active" do
126
+ HTML::Selector.new('#invoices #subnav1').select(render(:users, true)).should have(1).entry
127
+ HTML::Selector.new('#invoices #subnav2').select(render(:users, true)).should have(1).entry
128
+ end
129
+ end
130
+
131
+ end
132
+
133
+ end
134
+ end
@@ -0,0 +1,235 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe SimpleNavigation do
4
+
5
+ describe 'config_files' do
6
+ before(:each) do
7
+ SimpleNavigation.config_files = {}
8
+ end
9
+ it "should be an empty hash after loading the module" do
10
+ SimpleNavigation.config_files.should == {}
11
+ end
12
+ end
13
+
14
+ describe 'config_file_name' do
15
+ before(:each) do
16
+ SimpleNavigation.config_file_path = 'path_to_config'
17
+ end
18
+ context 'for :default navigation_context' do
19
+ it "should return the path to default config file" do
20
+ SimpleNavigation.config_file_name.should == 'path_to_config/navigation.rb'
21
+ end
22
+ end
23
+
24
+ context 'for other navigation_context' do
25
+ it "should return the path to the config file matching the specified context" do
26
+ SimpleNavigation.config_file_name(:my_other_context).should == 'path_to_config/my_other_context_navigation.rb'
27
+ end
28
+ it "should convert camelcase-contexts to underscore" do
29
+ SimpleNavigation.config_file_name(:WhyWouldYouDoThis).should == 'path_to_config/why_would_you_do_this_navigation.rb'
30
+ end
31
+ end
32
+ end
33
+
34
+ describe 'load_config' do
35
+ context 'config_file_path is set' do
36
+ before(:each) do
37
+ SimpleNavigation.config_file_path = 'path_to_config'
38
+ #SimpleNavigation.stub!(:config_file_name => 'path_to_config/navigation.rb')
39
+ end
40
+
41
+ context 'config_file does exist' do
42
+ before(:each) do
43
+ File.stub!(:exists?).and_return(true)
44
+ IO.stub!(:read).and_return('file_content')
45
+ end
46
+ it "should not raise an error" do
47
+ lambda{SimpleNavigation.load_config}.should_not raise_error
48
+ end
49
+ it "should read the specified config file from disc" do
50
+ IO.should_receive(:read).with('path_to_config/navigation.rb')
51
+ SimpleNavigation.load_config
52
+ end
53
+ it "should store the read content in the module (default context)" do
54
+ SimpleNavigation.should_receive(:config_file_name).with(:default).twice
55
+ SimpleNavigation.load_config
56
+ SimpleNavigation.config_files[:default].should == 'file_content'
57
+ end
58
+ it "should store the content in the module (non default context)" do
59
+ SimpleNavigation.should_receive(:config_file_name).with(:my_context).twice
60
+ SimpleNavigation.load_config(:my_context)
61
+ SimpleNavigation.config_files[:my_context].should == 'file_content'
62
+ end
63
+ end
64
+
65
+ context 'config_file does not exist' do
66
+ before(:each) do
67
+ File.stub!(:exists?).and_return(false)
68
+ end
69
+ it {lambda{SimpleNavigation.load_config}.should raise_error}
70
+ end
71
+ end
72
+
73
+ context 'config_file_path is not set' do
74
+ before(:each) do
75
+ SimpleNavigation.config_file_path = nil
76
+ end
77
+ it {lambda{SimpleNavigation.load_config}.should raise_error}
78
+ end
79
+
80
+ describe 'regarding caching of the config-files' do
81
+ before(:each) do
82
+ IO.stub!(:read).and_return('file_content')
83
+ SimpleNavigation.config_file_path = 'path_to_config'
84
+ File.stub!(:exists? => true)
85
+ end
86
+ context "RAILS_ENV undefined" do
87
+ before(:each) do
88
+ ::RAILS_ENV = nil
89
+ end
90
+ it "should load the config file twice" do
91
+ IO.should_receive(:read).twice
92
+ SimpleNavigation.load_config
93
+ SimpleNavigation.load_config
94
+ end
95
+ end
96
+ context "RAILS_ENV defined" do
97
+ before(:each) do
98
+ ::RAILS_ENV = 'production'
99
+ end
100
+ context "RAILS_ENV=production" do
101
+ it "should load the config file only once" do
102
+ IO.should_receive(:read).once
103
+ SimpleNavigation.load_config
104
+ SimpleNavigation.load_config
105
+ end
106
+ end
107
+
108
+ context "RAILS_ENV=development" do
109
+ before(:each) do
110
+ ::RAILS_ENV = 'development'
111
+ end
112
+ it "should load the config file twice" do
113
+ IO.should_receive(:read).twice
114
+ SimpleNavigation.load_config
115
+ SimpleNavigation.load_config
116
+ end
117
+ end
118
+
119
+ context "RAILS_ENV=test" do
120
+ before(:each) do
121
+ ::RAILS_ENV = 'test'
122
+ end
123
+ it "should load the config file twice" do
124
+ IO.should_receive(:read).twice
125
+ SimpleNavigation.load_config
126
+ SimpleNavigation.load_config
127
+ end
128
+ end
129
+ end
130
+ after(:each) do
131
+ SimpleNavigation.config_files = {}
132
+ end
133
+ end
134
+ end
135
+
136
+ describe 'config' do
137
+ it {SimpleNavigation.config.should == SimpleNavigation::Configuration.instance}
138
+ end
139
+
140
+ describe 'current_navigation_for' do
141
+ before(:each) do
142
+ @controller = stub(:controller)
143
+ SimpleNavigation.stub!(:controller => @controller)
144
+ end
145
+ it "should access the correct instance_var in the controller" do
146
+ @controller.should_receive(:instance_variable_get).with(:@sn_current_navigation_1)
147
+ SimpleNavigation.current_navigation_for(1)
148
+ end
149
+ end
150
+
151
+ describe 'active_item_container_for' do
152
+ before(:each) do
153
+ @primary = stub(:primary)
154
+ SimpleNavigation.config.stub!(:primary_navigation => @primary)
155
+ end
156
+ it "should call active_item_container_for on the primary_navigation with the specified level" do
157
+ @primary.should_receive(:active_item_container_for).with(1)
158
+ SimpleNavigation.active_item_container_for 1
159
+ end
160
+ end
161
+
162
+ describe 'handle_explicit_navigation' do
163
+ def args(*args)
164
+ SimpleNavigation.stub!(:explicit_navigation_args => args.compact.empty? ? nil : args)
165
+ end
166
+
167
+ before(:each) do
168
+ @controller = stub(:controller)
169
+ SimpleNavigation.stub!(:controller => @controller)
170
+ end
171
+
172
+ context 'with explicit navigation set' do
173
+ context 'list of navigations' do
174
+ before(:each) do
175
+ args :first, :second, :third
176
+ end
177
+ it "should set the correct instance var in the controller" do
178
+ @controller.should_receive(:instance_variable_set).with(:@sn_current_navigation_3, :third)
179
+ SimpleNavigation.handle_explicit_navigation
180
+ end
181
+ end
182
+ context 'single navigation' do
183
+ context 'specified key is a valid navigation item' do
184
+ before(:each) do
185
+ @primary = stub(:primary, :level_for_item => 2)
186
+ SimpleNavigation.stub!(:primary_navigation => @primary)
187
+ args :key
188
+ end
189
+ it "should set the correct instance var in the controller" do
190
+ @controller.should_receive(:instance_variable_set).with(:@sn_current_navigation_2, :key)
191
+ SimpleNavigation.handle_explicit_navigation
192
+ end
193
+ end
194
+ context 'specified key is an invalid navigation item' do
195
+ before(:each) do
196
+ @primary = stub(:primary, :level_for_item => nil)
197
+ SimpleNavigation.stub!(:primary_navigation => @primary)
198
+ args :key
199
+ end
200
+ it "should not raise an ArgumentError" do
201
+ lambda {SimpleNavigation.handle_explicit_navigation}.should_not raise_error(ArgumentError)
202
+ end
203
+ end
204
+ end
205
+ context 'hash with level' do
206
+ before(:each) do
207
+ args :level_2 => :key
208
+ end
209
+ it "should set the correct instance var in the controller" do
210
+ @controller.should_receive(:instance_variable_set).with(:@sn_current_navigation_2, :key)
211
+ SimpleNavigation.handle_explicit_navigation
212
+ end
213
+ end
214
+ context 'hash with multiple_levels' do
215
+ before(:each) do
216
+ args :level_2 => :key, :level_1 => :bla
217
+ end
218
+ it "should set the correct instance var in the controller" do
219
+ @controller.should_receive(:instance_variable_set).with(:@sn_current_navigation_2, :key)
220
+ SimpleNavigation.handle_explicit_navigation
221
+ end
222
+ end
223
+ end
224
+ context 'without explicit navigation set' do
225
+ before(:each) do
226
+ args nil
227
+ end
228
+ it "should not set the current_navigation instance var in the controller" do
229
+ @controller.should_not_receive(:instance_variable_set)
230
+ SimpleNavigation.handle_explicit_navigation
231
+ end
232
+ end
233
+ end
234
+
235
+ end
@@ -0,0 +1,17 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ RAILS_ENV = "test" unless defined? RAILS_ENV
3
+ require 'rubygems'
4
+ require 'spec'
5
+ require 'active_support'
6
+ require 'action_controller'
7
+
8
+ RAILS_ROOT = './' unless defined? RAILS_ROOT
9
+
10
+ $:.unshift File.dirname(__FILE__)
11
+ $:.unshift File.join(File.dirname(__FILE__), '../lib')
12
+
13
+ require 'simple_navigation'
14
+
15
+ # Spec::Runner.configure do |config|
16
+ # no special config
17
+ # endx
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{strikeroff-simple-navigation}
5
+ s.version = "2.0.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Vesov Ilya"]
9
+ s.date = %q{2009-11-01}
10
+ s.description = %q{strikeroff-simple-navigation}
11
+ s.email = %q{strikeroff@gmail.com}
12
+ s.extra_rdoc_files = ["CHANGELOG", "lib/simple_navigation/configuration.rb", "lib/simple_navigation/controller_methods.rb", "lib/simple_navigation/helpers.rb", "lib/simple_navigation/item.rb", "lib/simple_navigation/item_container.rb", "lib/simple_navigation/renderer/base.rb", "lib/simple_navigation/renderer/list.rb", "lib/simple_navigation.rb", "README"]
13
+ s.files = ["CHANGELOG", "generators/navigation_config/navigation_config_generator.rb", "generators/navigation_config/templates/config/navigation.rb", "generators/navigation_config/USAGE", "init.rb", "install.rb", "lib/simple_navigation/configuration.rb", "lib/simple_navigation/controller_methods.rb", "lib/simple_navigation/helpers.rb", "lib/simple_navigation/item.rb", "lib/simple_navigation/item_container.rb", "lib/simple_navigation/renderer/base.rb", "lib/simple_navigation/renderer/list.rb", "lib/simple_navigation.rb", "Manifest", "rails/init.rb", "Rakefile", "README", "spec/lib/simple_navigation/configuration_spec.rb", "spec/lib/simple_navigation/controller_methods_spec.rb", "spec/lib/simple_navigation/helpers_spec.rb", "spec/lib/simple_navigation/item_container_spec.rb", "spec/lib/simple_navigation/item_spec.rb", "spec/lib/simple_navigation/renderer/base_spec.rb", "spec/lib/simple_navigation/renderer/list_spec.rb", "spec/lib/simple_navigation_spec.rb", "spec/spec_helper.rb", "strikeroff-simple-navigation.gemspec", "uninstall.rb"]
14
+ s.homepage = %q{http://github.com/strikeroff}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Strikeroff-simple-navigation", "--main", "README", "-c utf-8"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{strikeroff-simple-navigation}
18
+ s.rubygems_version = %q{1.3.5}
19
+ s.summary = %q{strikeroff-simple-navigation}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
+ s.add_development_dependency(%q<echoe>, [">= 0"])
27
+ else
28
+ s.add_dependency(%q<echoe>, [">= 0"])
29
+ end
30
+ else
31
+ s.add_dependency(%q<echoe>, [">= 0"])
32
+ end
33
+ end
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: strikeroff-simple-navigation
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Vesov Ilya
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-01 00:00:00 +04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: echoe
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description: strikeroff-simple-navigation
26
+ email: strikeroff@gmail.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - CHANGELOG
33
+ - lib/simple_navigation/configuration.rb
34
+ - lib/simple_navigation/controller_methods.rb
35
+ - lib/simple_navigation/helpers.rb
36
+ - lib/simple_navigation/item.rb
37
+ - lib/simple_navigation/item_container.rb
38
+ - lib/simple_navigation/renderer/base.rb
39
+ - lib/simple_navigation/renderer/list.rb
40
+ - lib/simple_navigation.rb
41
+ - README
42
+ files:
43
+ - CHANGELOG
44
+ - generators/navigation_config/navigation_config_generator.rb
45
+ - generators/navigation_config/templates/config/navigation.rb
46
+ - generators/navigation_config/USAGE
47
+ - init.rb
48
+ - install.rb
49
+ - lib/simple_navigation/configuration.rb
50
+ - lib/simple_navigation/controller_methods.rb
51
+ - lib/simple_navigation/helpers.rb
52
+ - lib/simple_navigation/item.rb
53
+ - lib/simple_navigation/item_container.rb
54
+ - lib/simple_navigation/renderer/base.rb
55
+ - lib/simple_navigation/renderer/list.rb
56
+ - lib/simple_navigation.rb
57
+ - Manifest
58
+ - rails/init.rb
59
+ - Rakefile
60
+ - README
61
+ - spec/lib/simple_navigation/configuration_spec.rb
62
+ - spec/lib/simple_navigation/controller_methods_spec.rb
63
+ - spec/lib/simple_navigation/helpers_spec.rb
64
+ - spec/lib/simple_navigation/item_container_spec.rb
65
+ - spec/lib/simple_navigation/item_spec.rb
66
+ - spec/lib/simple_navigation/renderer/base_spec.rb
67
+ - spec/lib/simple_navigation/renderer/list_spec.rb
68
+ - spec/lib/simple_navigation_spec.rb
69
+ - spec/spec_helper.rb
70
+ - strikeroff-simple-navigation.gemspec
71
+ - uninstall.rb
72
+ has_rdoc: true
73
+ homepage: http://github.com/strikeroff
74
+ licenses: []
75
+
76
+ post_install_message:
77
+ rdoc_options:
78
+ - --line-numbers
79
+ - --inline-source
80
+ - --title
81
+ - Strikeroff-simple-navigation
82
+ - --main
83
+ - README
84
+ - -c utf-8
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: "0"
92
+ version:
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: "1.2"
98
+ version:
99
+ requirements: []
100
+
101
+ rubyforge_project: strikeroff-simple-navigation
102
+ rubygems_version: 1.3.5
103
+ signing_key:
104
+ specification_version: 3
105
+ summary: strikeroff-simple-navigation
106
+ test_files: []
107
+