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.
@@ -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