breadcrumbs_on_rails_microdata_builder 0.0.1
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/.gitignore +3 -0
- data/.travis.yml +12 -0
- data/Appraisals +11 -0
- data/CHANGELOG.md +51 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +99 -0
- data/LICENSE +22 -0
- data/README.md +99 -0
- data/Rakefile +85 -0
- data/breadcrumbs_on_rails_microdata_builder.gemspec +39 -0
- data/gemfiles/3.0.gemfile +7 -0
- data/gemfiles/3.0.gemfile.lock +100 -0
- data/gemfiles/3.1.gemfile +7 -0
- data/gemfiles/3.1.gemfile.lock +100 -0
- data/gemfiles/3.2.gemfile +7 -0
- data/gemfiles/3.2.gemfile.lock +100 -0
- data/init.rb +1 -0
- data/lib/breadcrumbs_on_rails_microdata_builder.rb +21 -0
- data/lib/breadcrumbs_on_rails_microdata_builder/action_controller.rb +93 -0
- data/lib/breadcrumbs_on_rails_microdata_builder/breadcrumbs.rb +100 -0
- data/lib/breadcrumbs_on_rails_microdata_builder/railtie.rb +20 -0
- data/lib/breadcrumbs_on_rails_microdata_builder/version.rb +22 -0
- data/test/test_helper.rb +20 -0
- data/test/unit/builder_test.rb +105 -0
- data/test/unit/element_test.rb +45 -0
- data/test/unit/simple_builder_test.rb +68 -0
- metadata +139 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
#--
|
2
|
+
# Breadcrumbs On Rails
|
3
|
+
#
|
4
|
+
# A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
|
7
|
+
#++
|
8
|
+
|
9
|
+
module BreadcrumbsOnRailsMicrodataBuilder
|
10
|
+
|
11
|
+
class Railtie < Rails::Railtie
|
12
|
+
initializer "breadcrumbs_on_rails_microdata_builder.initialize" do
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
ActiveSupport.on_load(:action_controller) do
|
19
|
+
include BreadcrumbsOnRails::ActionController
|
20
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#--
|
2
|
+
# Breadcrumbs On Rails
|
3
|
+
#
|
4
|
+
# A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
|
7
|
+
#++
|
8
|
+
|
9
|
+
module BreadcrumbsOnRailsMicrodataBuilder
|
10
|
+
|
11
|
+
module Version
|
12
|
+
MAJOR = 0
|
13
|
+
MINOR = 0
|
14
|
+
PATCH = 1
|
15
|
+
BUILD = nil
|
16
|
+
|
17
|
+
STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
|
18
|
+
end
|
19
|
+
|
20
|
+
VERSION = Version::STRING
|
21
|
+
|
22
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
ENV["RAILS_ENV"] = "test"
|
5
|
+
|
6
|
+
require "active_support"
|
7
|
+
require "action_controller"
|
8
|
+
require "rails/railtie"
|
9
|
+
|
10
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
11
|
+
require 'breadcrumbs_on_rails'
|
12
|
+
|
13
|
+
ActionController::Base.view_paths = File.join(File.dirname(__FILE__), 'views')
|
14
|
+
|
15
|
+
BreadcrumbsOnRails::Routes = ActionDispatch::Routing::RouteSet.new
|
16
|
+
BreadcrumbsOnRails::Routes.draw do
|
17
|
+
match ':controller(/:action(/:id))'
|
18
|
+
end
|
19
|
+
|
20
|
+
ActionController::Base.send :include, BreadcrumbsOnRails::Routes.url_helpers
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class BuilderTest < ActionView::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@template = self
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
def test_initialize_should_require_context_and_elements
|
11
|
+
assert_raise(ArgumentError) { BreadcrumbsOnRails::Breadcrumbs::Builder.new }
|
12
|
+
assert_raise(ArgumentError) { BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template) }
|
13
|
+
assert_nothing_raised { BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, []) }
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_initialize_should_allow_options
|
17
|
+
assert_nothing_raised { BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [], {}) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_initialize_should_set_context
|
21
|
+
builder = BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [])
|
22
|
+
assert_equal(@template, builder.instance_variable_get(:'@context'))
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_initialize_should_set_elements
|
26
|
+
builder= BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [1, 2])
|
27
|
+
assert_equal([1, 2], builder.instance_variable_get(:'@elements'))
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def test_compute_name_with_symbol
|
32
|
+
builder = BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [])
|
33
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(:method_for_name, nil)
|
34
|
+
|
35
|
+
assert_equal("name from symbol", builder.send(:compute_name, element))
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_compute_name_with_proc
|
39
|
+
builder = BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [])
|
40
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(proc { |template| template.send(:proc_for_name) }, nil)
|
41
|
+
|
42
|
+
assert_equal("name from proc", builder.send(:compute_name, element))
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_compute_name_with_string
|
46
|
+
builder = BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [])
|
47
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new("name from string", nil)
|
48
|
+
|
49
|
+
assert_equal("name from string", builder.send(:compute_name, element))
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
def test_compute_path_with_symbol
|
54
|
+
builder = BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [])
|
55
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, :method_for_path)
|
56
|
+
|
57
|
+
assert_equal("http://localhost/#symbol", builder.send(:compute_path, element))
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_compute_path_with_proc
|
61
|
+
builder = BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [])
|
62
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, proc { |template| template.send(:proc_for_path) })
|
63
|
+
|
64
|
+
assert_equal("http://localhost/#proc", builder.send(:compute_path, element))
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_compute_path_with_hash
|
68
|
+
builder = BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [])
|
69
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, { :foo => "bar" })
|
70
|
+
|
71
|
+
assert_equal("http://localhost?foo=bar", builder.send(:compute_path, element))
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_compute_path_with_string
|
75
|
+
builder = BreadcrumbsOnRails::Breadcrumbs::Builder.new(@template, [])
|
76
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, "http://localhost/#string")
|
77
|
+
|
78
|
+
assert_equal("http://localhost/#string", builder.send(:compute_path, element))
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
def url_for(params)
|
84
|
+
"http://localhost?" + params.to_param
|
85
|
+
end
|
86
|
+
|
87
|
+
protected
|
88
|
+
|
89
|
+
def method_for_name
|
90
|
+
"name from symbol"
|
91
|
+
end
|
92
|
+
|
93
|
+
def proc_for_name
|
94
|
+
"name from proc"
|
95
|
+
end
|
96
|
+
|
97
|
+
def method_for_path
|
98
|
+
"http://localhost/#symbol"
|
99
|
+
end
|
100
|
+
|
101
|
+
def proc_for_path
|
102
|
+
"http://localhost/#proc"
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ElementTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
def test_initialize_should_require_name_and_path
|
6
|
+
assert_raise(ArgumentError) { BreadcrumbsOnRails::Breadcrumbs::Element.new }
|
7
|
+
assert_raise(ArgumentError) { BreadcrumbsOnRails::Breadcrumbs::Element.new(nil) }
|
8
|
+
assert_nothing_raised { BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, nil) }
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialize_should_set_name
|
12
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(:homepage, nil)
|
13
|
+
assert_equal :homepage, element.name
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_initialize_should_set_path
|
17
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, "/")
|
18
|
+
assert_equal "/", element.path
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_initialize_should_allow_options
|
22
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(:homepage, "/", :title => "Go to the Homepage")
|
23
|
+
assert_equal({ :title => "Go to the Homepage" }, element.options)
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
def test_name
|
28
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, nil)
|
29
|
+
element.name = :the_name
|
30
|
+
assert_equal :the_name, element.name
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_path
|
34
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, nil)
|
35
|
+
element.path = { :controller => "index", :action => "index" }
|
36
|
+
assert_equal({ :controller => "index", :action => "index" }, element.path)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_options
|
40
|
+
element = BreadcrumbsOnRails::Breadcrumbs::Element.new(nil, nil)
|
41
|
+
element.options = { :title => "Go to the Homepage" }
|
42
|
+
assert_equal({ :title => "Go to the Homepage" }, element.options)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SimpleBuilderTest < ActionView::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@template = self
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
def test_render_should_be_implemented
|
11
|
+
assert_nothing_raised { simplebuilder(@template, []).render }
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
def test_render_with_0_elements
|
16
|
+
assert_equal("", simplebuilder(@template, []).render)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_render_with_0_elements_and_separator
|
20
|
+
assert_equal("", simplebuilder(@template, [], :separator => "-").render)
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def test_render_with_1_element
|
25
|
+
@template.expects(:current_page?).times(1).returns(false)
|
26
|
+
assert_dom_equal("<a href=\"/element/1\">Element 1</a>",
|
27
|
+
simplebuilder(@template, generate_elements(1)).render)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_render_with_1_element_and_separator
|
31
|
+
@template.expects(:current_page?).times(1).returns(false)
|
32
|
+
assert_dom_equal("<a href=\"/element/1\">Element 1</a>",
|
33
|
+
simplebuilder(@template, generate_elements(1), :separator => "-").render)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def test_render
|
38
|
+
@template.expects(:current_page?).times(2).returns(false)
|
39
|
+
assert_dom_equal("<a href=\"/element/1\">Element 1</a> » <a href=\"/element/2\">Element 2</a>",
|
40
|
+
simplebuilder(@template, generate_elements(2)).render)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_render_with_separator
|
44
|
+
@template.expects(:current_page?).times(2).returns(false)
|
45
|
+
assert_dom_equal("<a href=\"/element/1\">Element 1</a> - <a href=\"/element/2\">Element 2</a>",
|
46
|
+
simplebuilder(@template, generate_elements(2), :separator => " - ").render)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_render_with_current_page
|
50
|
+
@template.expects(:current_page?).times(2).returns(false, true)
|
51
|
+
assert_dom_equal("<a href=\"/element/1\">Element 1</a> » Element 2",
|
52
|
+
simplebuilder(@template, generate_elements(2)).render)
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
protected
|
57
|
+
|
58
|
+
def simplebuilder(*args)
|
59
|
+
BreadcrumbsOnRails::Breadcrumbs::SimpleBuilder.new(*args)
|
60
|
+
end
|
61
|
+
|
62
|
+
def generate_elements(number)
|
63
|
+
(1..number).collect do |index|
|
64
|
+
BreadcrumbsOnRails::Breadcrumbs::Element.new("Element #{index}", "/element/#{index}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
metadata
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: breadcrumbs_on_rails_microdata_builder
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Simone Carletti
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-02-03 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: '3.0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: appraisal
|
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: mocha
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.9.10
|
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.9.10
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: yard
|
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
|
+
description: BreadcrumbsOnRails is a simple Ruby on Rails plugin for creating and
|
79
|
+
managing a breadcrumb navigation for a Rails project.
|
80
|
+
email: weppos@weppos.net
|
81
|
+
executables: []
|
82
|
+
extensions: []
|
83
|
+
extra_rdoc_files: []
|
84
|
+
files:
|
85
|
+
- .gitignore
|
86
|
+
- .travis.yml
|
87
|
+
- Appraisals
|
88
|
+
- CHANGELOG.md
|
89
|
+
- Gemfile
|
90
|
+
- Gemfile.lock
|
91
|
+
- LICENSE
|
92
|
+
- README.md
|
93
|
+
- Rakefile
|
94
|
+
- breadcrumbs_on_rails_microdata_builder.gemspec
|
95
|
+
- gemfiles/3.0.gemfile
|
96
|
+
- gemfiles/3.0.gemfile.lock
|
97
|
+
- gemfiles/3.1.gemfile
|
98
|
+
- gemfiles/3.1.gemfile.lock
|
99
|
+
- gemfiles/3.2.gemfile
|
100
|
+
- gemfiles/3.2.gemfile.lock
|
101
|
+
- init.rb
|
102
|
+
- lib/breadcrumbs_on_rails_microdata_builder.rb
|
103
|
+
- lib/breadcrumbs_on_rails_microdata_builder/action_controller.rb
|
104
|
+
- lib/breadcrumbs_on_rails_microdata_builder/breadcrumbs.rb
|
105
|
+
- lib/breadcrumbs_on_rails_microdata_builder/railtie.rb
|
106
|
+
- lib/breadcrumbs_on_rails_microdata_builder/version.rb
|
107
|
+
- test/test_helper.rb
|
108
|
+
- test/unit/builder_test.rb
|
109
|
+
- test/unit/element_test.rb
|
110
|
+
- test/unit/simple_builder_test.rb
|
111
|
+
homepage: http://www.simonecarletti.com/code/breadcrumbs_on_rails
|
112
|
+
licenses: []
|
113
|
+
post_install_message:
|
114
|
+
rdoc_options: []
|
115
|
+
require_paths:
|
116
|
+
- lib
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
requirements: []
|
130
|
+
rubyforge_project:
|
131
|
+
rubygems_version: 1.8.24
|
132
|
+
signing_key:
|
133
|
+
specification_version: 3
|
134
|
+
summary: A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation.
|
135
|
+
test_files:
|
136
|
+
- test/test_helper.rb
|
137
|
+
- test/unit/builder_test.rb
|
138
|
+
- test/unit/element_test.rb
|
139
|
+
- test/unit/simple_builder_test.rb
|