breadcrumbs_on_rails_microdata_builder 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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> &raquo; <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> &raquo; 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