tabs_on_rails 1.0.0 → 1.1.0
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/CHANGELOG.rdoc +15 -0
- data/LICENSE.rdoc +1 -1
- data/README.rdoc +12 -16
- data/Rakefile +93 -20
- data/lib/tabs_on_rails/tabs.rb +13 -4
- data/lib/tabs_on_rails/version.rb +5 -6
- data/rails/init.rb +0 -2
- data/tabs_on_rails.gemspec +9 -16
- data/test/controller_mixin_test.rb +184 -2
- data/test/tabs/builder_test.rb +5 -5
- data/test/tabs/tabs_builder_test.rb +5 -5
- data/test/tabs_test.rb +85 -0
- data/test/test_helper.rb +4 -4
- metadata +34 -62
- data/Manifest +0 -24
- data/install.rb +0 -1
- data/tasks/tabs_on_rails_tasks.rake +0 -4
- data/test/controller_mixin_helpers_test.rb +0 -86
- data/test/controller_mixin_with_controller_test.rb +0 -99
- data/uninstall.rb +0 -1
data/CHANGELOG.rdoc
CHANGED
@@ -1,6 +1,21 @@
|
|
1
1
|
= Changelog
|
2
2
|
|
3
3
|
|
4
|
+
== Release 1.1.0
|
5
|
+
|
6
|
+
* FIXED: Incompatibility with release < 1.0.0 caused by open_tabs and close_tabs methods changes compared to 0.8.0.
|
7
|
+
|
8
|
+
* CHANGED: Removed BUILD and STATUS constants. Added Version::ALPHA constant to be used when I need to package prereleases (see RubyGem --prerelease flag).
|
9
|
+
|
10
|
+
* CHANGED: Removed empty install/uninstall hooks and tasks folder.
|
11
|
+
|
12
|
+
* CHANGED: Removed rails/init hook because deprecated in Rails 3.
|
13
|
+
|
14
|
+
* CHANGED: Drop dependency from Echoe. Change Rakefile to use custom tasks.
|
15
|
+
|
16
|
+
* REMOVED: Deleted empty install.rb file.
|
17
|
+
|
18
|
+
|
4
19
|
== Release 1.0.0
|
5
20
|
|
6
21
|
* ADDED: Ability to pass arbitrary options to open_tabs and close_tags method. Thanks to aaronchi (closes #315)
|
data/LICENSE.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -9,7 +9,7 @@ It provides helpers for creating tabs with a flexible interface.
|
|
9
9
|
* Ruby >= 1.8.6
|
10
10
|
* Rails >= 2.2
|
11
11
|
|
12
|
-
Note. TabsOnRails doesn't work with Rails 2.1 or previous versions (see {
|
12
|
+
Note. TabsOnRails doesn't work with Rails 2.1 or previous versions (see {this comment}[http://www.simonecarletti.com/blog/2009/04/tabsonrails/#comment-2901] and {this commit}[http://github.com/weppos/tabs_on_rails/commit/d5ae9f401e3d0acc87251fa8957a8625e90ba4b3]).
|
13
13
|
|
14
14
|
|
15
15
|
== Rails Installation
|
@@ -17,9 +17,9 @@ Note. TabsOnRails doesn't work with Rails 2.1 or previous versions (see {Ticket
|
|
17
17
|
=== As a Gem
|
18
18
|
|
19
19
|
This is the preferred way to install TabsOnRails and the best way if you want install a stable version.
|
20
|
-
The GEM is hosted on {
|
20
|
+
The GEM is hosted on {RubyGems}[http://rubygems.org/gems/tabs_on_rails].
|
21
21
|
|
22
|
-
$ gem install tabs_on_rails
|
22
|
+
$ gem install tabs_on_rails
|
23
23
|
|
24
24
|
With Rails >= 2.2, you can specify the GEM dependency in your environment.rb file so that Rails will automatically check the requirement on startup.
|
25
25
|
|
@@ -28,7 +28,7 @@ With Rails >= 2.2, you can specify the GEM dependency in your environment.rb fil
|
|
28
28
|
# other configurations
|
29
29
|
# ...
|
30
30
|
|
31
|
-
config.gem "tabs_on_rails"
|
31
|
+
config.gem "tabs_on_rails"
|
32
32
|
|
33
33
|
end
|
34
34
|
|
@@ -39,7 +39,7 @@ This is the preferred way if you want to live on the edge and install a developm
|
|
39
39
|
$ script/plugin install git://github.com/weppos/tabs_on_rails.git
|
40
40
|
|
41
41
|
|
42
|
-
==
|
42
|
+
== Usage
|
43
43
|
|
44
44
|
In your template use the <tt>tabs_tag</tt> helper to create your tab.
|
45
45
|
|
@@ -84,7 +84,7 @@ Use the <tt>current_tab</tt> helper method if you need to access the value of cu
|
|
84
84
|
# In your view
|
85
85
|
<p>The name of current tab is <%= current_tab %>.</p>
|
86
86
|
|
87
|
-
The
|
87
|
+
The open_tag can be customized with the `:open_tabs` option.
|
88
88
|
|
89
89
|
<% tabs_tag :open_tabs => { :id => "tabs", :class => "cool" } do |tab| %>
|
90
90
|
<%= tab.home 'Homepage', root_path %>
|
@@ -267,23 +267,19 @@ This is the final result.
|
|
267
267
|
<li class="" style="float: right;"><a href="/account">Account</a></li>
|
268
268
|
</ul>
|
269
269
|
|
270
|
-
== Documentation
|
271
270
|
|
272
|
-
|
273
|
-
For the full documentation, development roadmap and more information please visit the {project page}[http://code.simonecarletti.com/wiki/tabsonrails].
|
271
|
+
== Author
|
274
272
|
|
275
|
-
|
276
|
-
== Credits
|
277
|
-
|
278
|
-
Author:: {Simone Carletti}[http://www.simonecarletti.com/] <weppos@weppos.net>
|
273
|
+
* {Simone Carletti}[http://www.simonecarletti.com] <weppos@weppos.net>
|
279
274
|
|
280
275
|
|
281
276
|
== Resources
|
282
277
|
|
283
|
-
* {Homepage}[http://
|
284
|
-
* {
|
278
|
+
* {Homepage}[http://www.simonecarletti.com/code/tabs_on_rails]
|
279
|
+
* {Source}[http://github.com/weppos/tabs_on_rails]
|
280
|
+
* {Bugs & Features}[http://github.com/weppos/tabs_on_rails/issues]
|
285
281
|
|
286
282
|
|
287
283
|
== License
|
288
284
|
|
289
|
-
Copyright (c) 2009 Simone Carletti, TabsOnRails is released under the MIT license.
|
285
|
+
Copyright (c) 2009-2010 Simone Carletti, TabsOnRails is released under the MIT license.
|
data/Rakefile
CHANGED
@@ -1,42 +1,115 @@
|
|
1
|
-
|
1
|
+
require "rubygems"
|
2
|
+
require "rake/testtask"
|
3
|
+
require "rake/rdoctask"
|
4
|
+
require "rake/gempackagetask"
|
2
5
|
|
3
|
-
|
4
|
-
require
|
5
|
-
require 'echoe'
|
6
|
-
require 'tabs_on_rails'
|
6
|
+
$:.unshift(File.dirname(__FILE__) + "/lib")
|
7
|
+
require "tabs_on_rails"
|
7
8
|
|
8
9
|
|
9
10
|
PKG_NAME = ENV['PKG_NAME'] || TabsOnRails::GEM
|
10
11
|
PKG_VERSION = ENV['PKG_VERSION'] || TabsOnRails::VERSION
|
11
|
-
RUBYFORGE_PROJECT = nil
|
12
12
|
|
13
13
|
if ENV['SNAPSHOT'].to_i == 1
|
14
14
|
PKG_VERSION << "." << Time.now.utc.strftime("%Y%m%d%H%M%S")
|
15
15
|
end
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
16
|
+
|
17
|
+
|
18
|
+
# Run all the tests in the /test folder
|
19
|
+
Rake::TestTask.new do |t|
|
20
|
+
t.libs << "test"
|
21
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
22
|
+
t.verbose = true
|
23
|
+
end
|
24
|
+
|
25
|
+
# Generate documentation
|
26
|
+
Rake::RDocTask.new do |rd|
|
27
|
+
rd.main = "README.rdoc"
|
28
|
+
rd.rdoc_files.include("*.rdoc", "lib/**/*.rb")
|
29
|
+
rd.rdoc_dir = "rdoc"
|
30
|
+
end
|
31
|
+
|
32
|
+
# Run test by default.
|
33
|
+
task :default => ["test"]
|
34
|
+
|
35
|
+
# This builds the actual gem. For details of what all these options
|
36
|
+
# mean, and other ones you can add, check the documentation here:
|
37
|
+
#
|
38
|
+
# http://rubygems.org/read/chapter/20
|
39
|
+
#
|
40
|
+
spec = Gem::Specification.new do |s|
|
41
|
+
|
42
|
+
s.name = PKG_NAME
|
43
|
+
s.version = PKG_VERSION
|
44
|
+
s.summary = "A simple Ruby on Rails plugin for creating and managing Tabs."
|
45
|
+
s.author = "Simone Carletti"
|
46
|
+
s.email = "weppos@weppos.net"
|
47
|
+
s.homepage = "http://www.simonecarletti.com/code/tabs_on_rails"
|
48
|
+
s.description = <<-EOD
|
24
49
|
TabsOnRails is a simple Ruby on Rails plugin for creating and managing Tabs. \
|
25
50
|
It provides helpers for creating tabs with a flexible interface.
|
26
51
|
EOD
|
27
|
-
p.project = RUBYFORGE_PROJECT
|
28
52
|
|
29
|
-
|
53
|
+
s.has_rdoc = true
|
54
|
+
# You should probably have a README of some kind. Change the filename
|
55
|
+
# as appropriate
|
56
|
+
s.extra_rdoc_files = Dir.glob("*.rdoc")
|
57
|
+
s.rdoc_options = %w(--main README.rdoc)
|
30
58
|
|
31
|
-
|
32
|
-
|
59
|
+
# Add any extra files to include in the gem (like your README)
|
60
|
+
s.files = %w(Rakefile init.rb) + Dir.glob("*.{rdoc,gemspec}") + Dir.glob("{test,lib,rails}/**/*")
|
61
|
+
s.require_paths = ["lib"]
|
33
62
|
|
34
|
-
|
63
|
+
# If you want to depend on other gems, add them here, along with any
|
64
|
+
# relevant versions
|
65
|
+
# s.add_dependency("some_other_gem", "~> 0.1.0")
|
66
|
+
|
67
|
+
# If your tests use any gems, include them here
|
68
|
+
# s.add_development_dependency("mocha") # for example
|
35
69
|
end
|
36
70
|
|
71
|
+
# This task actually builds the gem. We also regenerate a static
|
72
|
+
# .gemspec file, which is useful if something (i.e. GitHub) will
|
73
|
+
# be automatically building a gem for this project. If you're not
|
74
|
+
# using GitHub, edit as appropriate.
|
75
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
76
|
+
pkg.gem_spec = spec
|
77
|
+
end
|
78
|
+
|
79
|
+
desc "Build the gemspec file #{spec.name}.gemspec"
|
80
|
+
task :gemspec do
|
81
|
+
file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
|
82
|
+
File.open(file, "w") {|f| f << spec.to_ruby }
|
83
|
+
end
|
84
|
+
|
85
|
+
desc "Remove any temporary products, including gemspec."
|
86
|
+
task :clean => [:clobber] do
|
87
|
+
rm "#{spec.name}.gemspec"
|
88
|
+
end
|
89
|
+
|
90
|
+
desc "Remove any generated file"
|
91
|
+
task :clobber => [:clobber_rdoc, :clobber_rcov, :clobber_package]
|
92
|
+
|
93
|
+
desc "Package the library and generates the gemspec"
|
94
|
+
task :package => [:gemspec]
|
95
|
+
|
96
|
+
begin
|
97
|
+
require "rcov/rcovtask"
|
98
|
+
|
99
|
+
desc "Create a code coverage report."
|
100
|
+
Rcov::RcovTask.new do |t|
|
101
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
102
|
+
t.ruby_opts << "-Itest -x mocha,rcov,Rakefile"
|
103
|
+
t.verbose = true
|
104
|
+
end
|
105
|
+
rescue LoadError
|
106
|
+
task :clobber_rcov
|
107
|
+
puts "RCov is not available"
|
108
|
+
end
|
37
109
|
|
38
110
|
begin
|
39
|
-
require
|
111
|
+
require "code_statistics"
|
112
|
+
|
40
113
|
desc "Show library's code statistics"
|
41
114
|
task :stats do
|
42
115
|
CodeStatistics.new(["TabsOnRails", "lib"],
|
data/lib/tabs_on_rails/tabs.rb
CHANGED
@@ -27,10 +27,19 @@ module TabsOnRails
|
|
27
27
|
@builder = (options.delete(:builder) || TabsBuilder).new(@context, options)
|
28
28
|
end
|
29
29
|
|
30
|
-
%w(open_tabs close_tabs).each do |
|
31
|
-
define_method(
|
32
|
-
@builder.
|
33
|
-
|
30
|
+
%w(open_tabs close_tabs).each do |name|
|
31
|
+
define_method(name) do |*args| # def open_tabs(*args)
|
32
|
+
method = @builder.method(name) # method = @builder.method(:open_tabs)
|
33
|
+
if method.arity.zero? # if method.arity.zero?
|
34
|
+
message = "Incomplete `#{name}' definition. " + # ...
|
35
|
+
"Use #{name}(*args) to ignore arguments " + # ...
|
36
|
+
"or #{name}(options) to collect options" # ...
|
37
|
+
ActiveSupport::Deprecation.warn(message) # ...
|
38
|
+
method.call # method.call
|
39
|
+
else # else
|
40
|
+
method.call(*args) # method.call(*args)
|
41
|
+
end # end
|
42
|
+
end # end
|
34
43
|
end
|
35
44
|
|
36
45
|
def method_missing(*args)
|
@@ -18,14 +18,13 @@ module TabsOnRails
|
|
18
18
|
|
19
19
|
module Version
|
20
20
|
MAJOR = 1
|
21
|
-
MINOR =
|
22
|
-
|
21
|
+
MINOR = 1
|
22
|
+
PATCH = 0
|
23
|
+
BUILD = nil
|
23
24
|
|
24
|
-
STRING = [MAJOR, MINOR,
|
25
|
+
STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join(".")
|
25
26
|
end
|
26
27
|
|
27
|
-
VERSION
|
28
|
-
STATUS = 'stable'
|
29
|
-
BUILD = ''.match(/(\d+)/).to_a.first
|
28
|
+
VERSION = Version::STRING
|
30
29
|
|
31
30
|
end
|
data/rails/init.rb
CHANGED
data/tabs_on_rails.gemspec
CHANGED
@@ -2,36 +2,29 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{tabs_on_rails}
|
5
|
-
s.version = "1.
|
5
|
+
s.version = "1.1.0"
|
6
6
|
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">=
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Simone Carletti"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2010-08-09}
|
10
10
|
s.description = %q{ TabsOnRails is a simple Ruby on Rails plugin for creating and managing Tabs. It provides helpers for creating tabs with a flexible interface.
|
11
11
|
}
|
12
12
|
s.email = %q{weppos@weppos.net}
|
13
|
-
s.extra_rdoc_files = ["CHANGELOG.rdoc", "LICENSE.rdoc", "README.rdoc"
|
14
|
-
s.files = ["
|
15
|
-
s.homepage = %q{http://
|
16
|
-
s.rdoc_options = ["--
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG.rdoc", "LICENSE.rdoc", "README.rdoc"]
|
14
|
+
s.files = ["Rakefile", "init.rb", "CHANGELOG.rdoc", "LICENSE.rdoc", "README.rdoc", "tabs_on_rails.gemspec", "test/controller_mixin_test.rb", "test/fixtures", "test/fixtures/mixin", "test/fixtures/mixin/default.html.erb", "test/fixtures/mixin/with_open_close_tabs.html.erb", "test/tabs", "test/tabs/builder_test.rb", "test/tabs/tabs_builder_test.rb", "test/tabs_test.rb", "test/test_helper.rb", "lib/tabs_on_rails", "lib/tabs_on_rails/controller_mixin.rb", "lib/tabs_on_rails/tabs", "lib/tabs_on_rails/tabs/builder.rb", "lib/tabs_on_rails/tabs/tabs_builder.rb", "lib/tabs_on_rails/tabs.rb", "lib/tabs_on_rails/version.rb", "lib/tabs_on_rails.rb", "rails/init.rb"]
|
15
|
+
s.homepage = %q{http://www.simonecarletti.com/code/tabs_on_rails}
|
16
|
+
s.rdoc_options = ["--main", "README.rdoc"]
|
17
17
|
s.require_paths = ["lib"]
|
18
|
-
s.rubygems_version = %q{1.3.
|
18
|
+
s.rubygems_version = %q{1.3.7}
|
19
19
|
s.summary = %q{A simple Ruby on Rails plugin for creating and managing Tabs.}
|
20
|
-
s.test_files = ["test/controller_mixin_helpers_test.rb", "test/controller_mixin_test.rb", "test/controller_mixin_with_controller_test.rb", "test/tabs/builder_test.rb", "test/tabs/tabs_builder_test.rb", "test/test_helper.rb"]
|
21
20
|
|
22
21
|
if s.respond_to? :specification_version then
|
23
22
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
24
23
|
s.specification_version = 3
|
25
24
|
|
26
|
-
if Gem::Version.new(Gem::
|
27
|
-
s.add_development_dependency(%q<rake>, ["~> 0.8.7"])
|
28
|
-
s.add_development_dependency(%q<echoe>, ["~> 3.2.0"])
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
29
26
|
else
|
30
|
-
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
31
|
-
s.add_dependency(%q<echoe>, ["~> 3.2.0"])
|
32
27
|
end
|
33
28
|
else
|
34
|
-
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
35
|
-
s.add_dependency(%q<echoe>, ["~> 3.2.0"])
|
36
29
|
end
|
37
30
|
end
|
@@ -13,7 +13,7 @@ class ControllerMixinTest < ActionController::TestCase
|
|
13
13
|
@response = ActionController::TestResponse.new
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
|
17
17
|
def test_set_tab
|
18
18
|
controller.set_tab :footab
|
19
19
|
assert_equal(:footab, controller.tab_stack[:default])
|
@@ -87,4 +87,186 @@ class ControllerMixinTest < ActionController::TestCase
|
|
87
87
|
assert(!controller.current_tab?(:firsttab, :custom))
|
88
88
|
end
|
89
89
|
|
90
|
-
end
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
class ControllerMixinHelpersTest < ActionView::TestCase
|
94
|
+
tests TabsOnRails::ControllerMixin::HelperMethods
|
95
|
+
include ActionView::Helpers::TagHelper
|
96
|
+
include ActionView::Helpers::UrlHelper
|
97
|
+
|
98
|
+
MockBuilder = Class.new(TabsOnRails::Tabs::Builder) do
|
99
|
+
def initialize_with_mocha(*args)
|
100
|
+
checkpoint
|
101
|
+
initialize_without_mocha(*args)
|
102
|
+
end
|
103
|
+
alias_method_chain :initialize, :mocha
|
104
|
+
|
105
|
+
def checkpoint
|
106
|
+
end
|
107
|
+
|
108
|
+
def tab_for(tab, name, *args)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
NilBoundariesBuilder = Class.new(TabsOnRails::Tabs::Builder) do
|
113
|
+
def tab_for(tab, name, *args)
|
114
|
+
@context.content_tag(:span, name)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
NilOpenBoundaryBuilder = Class.new(NilBoundariesBuilder) do
|
119
|
+
def close_tabs(options = {})
|
120
|
+
'<br />'
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
NilCloseBoundaryBuilder = Class.new(NilBoundariesBuilder) do
|
125
|
+
def open_tabs(options = {})
|
126
|
+
'<br />'
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
|
131
|
+
def test_tabs_tag_should_raise_local_jump_error_without_block
|
132
|
+
assert_raise(LocalJumpError) { tabs_tag }
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_tabs_tag_with_builder
|
136
|
+
MockBuilder.any_instance.expects(:checkpoint).once
|
137
|
+
tabs_tag(:builder => MockBuilder) {}
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_tabs_tag_with_namespace
|
141
|
+
MockBuilder.any_instance.expects(:checkpoint).once
|
142
|
+
tabs_tag(:builder => MockBuilder, :namespace => :custom) do |tabs|
|
143
|
+
builder = tabs.instance_variable_get(:'@builder')
|
144
|
+
assert_equal(:custom, builder.instance_variable_get(:'@namespace'))
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
|
149
|
+
def test_tabs_tag_should_not_concat_open_close_tabs_when_nil
|
150
|
+
content = tabs_tag(:builder => NilBoundariesBuilder) do |t|
|
151
|
+
concat t.single('Single', '#')
|
152
|
+
end
|
153
|
+
|
154
|
+
assert_dom_equal('<span>Single</span>', content)
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_tabs_tag_should_not_concat_open_tabs_when_nil
|
158
|
+
content = tabs_tag(:builder => NilOpenBoundaryBuilder) do |t|
|
159
|
+
concat t.single('Single', '#')
|
160
|
+
end
|
161
|
+
|
162
|
+
assert_dom_equal('<span>Single</span><br />', content)
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_tabs_tag_should_not_concat_close_tabs_when_nil
|
166
|
+
content = tabs_tag(:builder => NilCloseBoundaryBuilder) do |t|
|
167
|
+
concat t.single('Single', '#')
|
168
|
+
end
|
169
|
+
|
170
|
+
assert_dom_equal('<br /><span>Single</span>', content)
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
174
|
+
|
175
|
+
|
176
|
+
class ControllerMixinWithControllerTest < ActionController::TestCase
|
177
|
+
include ControllerTestHelpers
|
178
|
+
|
179
|
+
class MixinController < ActionController::Base
|
180
|
+
def self.controller_name; "mixin"; end
|
181
|
+
def self.controller_path; "mixin"; end
|
182
|
+
|
183
|
+
layout false
|
184
|
+
|
185
|
+
set_tab :dashboard
|
186
|
+
set_tab :welcome, :only => %w(action_welcome)
|
187
|
+
set_tab :dashboard, :only => %w(action_namespace)
|
188
|
+
set_tab :homepage, :namespace, :only => %w(action_namespace)
|
189
|
+
|
190
|
+
def method_missing(method, *args)
|
191
|
+
if method =~ /^action_(.*)/
|
192
|
+
render :action => (params[:template] || 'default')
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
def rescue_action(e) raise end
|
197
|
+
end
|
198
|
+
|
199
|
+
MixinController.view_paths = [ File.dirname(__FILE__) + "/fixtures/" ]
|
200
|
+
|
201
|
+
def setup
|
202
|
+
@controller = MixinController.new
|
203
|
+
@controller_proxy = ControllerProxy.new(@controller)
|
204
|
+
@request = ActionController::TestRequest.new
|
205
|
+
@response = ActionController::TestResponse.new
|
206
|
+
end
|
207
|
+
|
208
|
+
|
209
|
+
def test_render_default
|
210
|
+
get :action_dashboard
|
211
|
+
assert_equal(%Q{<ul>
|
212
|
+
<li><span>Dashboard</span></li>
|
213
|
+
<li><a href="/w">Welcome</a></li>
|
214
|
+
</ul>}, @response.body)
|
215
|
+
end
|
216
|
+
|
217
|
+
def test_render_with_open_close_tabs
|
218
|
+
get :action_dashboard, :template => "with_open_close_tabs"
|
219
|
+
assert_equal(%Q{<ul id="tabs">
|
220
|
+
<li><span>Dashboard</span></li>
|
221
|
+
<li><a href="/w">Welcome</a></li>
|
222
|
+
</ul>}, @response.body)
|
223
|
+
end
|
224
|
+
|
225
|
+
|
226
|
+
def test_set_tab
|
227
|
+
get :action_dashboard
|
228
|
+
assert_equal(:dashboard, controller.current_tab)
|
229
|
+
assert_equal(:dashboard, controller.current_tab(:default))
|
230
|
+
assert_equal(%Q{<ul>
|
231
|
+
<li><span>Dashboard</span></li>
|
232
|
+
<li><a href="/w">Welcome</a></li>
|
233
|
+
</ul>}, @response.body)
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_set_tab_with_only_option
|
237
|
+
get :action_welcome
|
238
|
+
assert_equal(:welcome, controller.current_tab)
|
239
|
+
assert_equal(:welcome, controller.current_tab(:default))
|
240
|
+
assert_equal(%Q{<ul>
|
241
|
+
<li><a href="/d">Dashboard</a></li>
|
242
|
+
<li><span>Welcome</span></li>
|
243
|
+
</ul>}, @response.body)
|
244
|
+
end
|
245
|
+
|
246
|
+
def test_set_tab_with_namespace
|
247
|
+
get :action_namespace
|
248
|
+
assert_equal(:dashboard, controller.current_tab)
|
249
|
+
assert_equal(:dashboard, controller.current_tab(:default))
|
250
|
+
assert_equal(:homepage, controller.current_tab(:namespace))
|
251
|
+
assert_equal(%Q{<ul>
|
252
|
+
<li><span>Dashboard</span></li>
|
253
|
+
<li><a href="/w">Welcome</a></li>
|
254
|
+
</ul>}, @response.body)
|
255
|
+
end
|
256
|
+
|
257
|
+
|
258
|
+
def test_current_tab
|
259
|
+
get :action_dashboard
|
260
|
+
assert_equal :dashboard, controller.current_tab
|
261
|
+
assert_equal :dashboard, controller.current_tab(:default)
|
262
|
+
end
|
263
|
+
|
264
|
+
def test_current_tab_question
|
265
|
+
get :action_dashboard
|
266
|
+
assert controller.current_tab?(:dashboard)
|
267
|
+
assert controller.current_tab?(:dashboard, :default)
|
268
|
+
assert !controller.current_tab?(:foobar)
|
269
|
+
assert !controller.current_tab?(:foobar, :default)
|
270
|
+
end
|
271
|
+
|
272
|
+
end
|
data/test/tabs/builder_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class BuilderTest < ActiveSupport::TestCase
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
Template = Class.new do
|
6
6
|
include ActionView::Helpers::TagHelper
|
7
7
|
include ActionView::Helpers::UrlHelper
|
8
8
|
|
@@ -17,12 +17,12 @@ class BuilderTest < ActiveSupport::TestCase
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def setup
|
22
|
-
@template =
|
22
|
+
@template = Template.new
|
23
23
|
@builder = TabsOnRails::Tabs::Builder.new(@template)
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
|
27
27
|
def test_initialize_should_require_context
|
28
28
|
assert_raise(ArgumentError) { TabsOnRails::Tabs::Builder.new }
|
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class TabsBuilderTest < ActionView::TestCase
|
4
4
|
|
5
|
-
|
5
|
+
Template = Class.new do
|
6
6
|
include ActionView::Helpers::TagHelper
|
7
7
|
include ActionView::Helpers::UrlHelper
|
8
8
|
|
@@ -19,7 +19,7 @@ class TabsBuilderTest < ActionView::TestCase
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def setup
|
22
|
-
@template =
|
22
|
+
@template = Template.new
|
23
23
|
@builder = TabsOnRails::Tabs::TabsBuilder.new(@template)
|
24
24
|
end
|
25
25
|
|
@@ -44,15 +44,15 @@ class TabsBuilderTest < ActionView::TestCase
|
|
44
44
|
def test_should_implement_builder
|
45
45
|
assert_equal(TabsOnRails::Tabs::Builder, TabsOnRails::Tabs::TabsBuilder.superclass)
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
def test_tab_for_should_return_link_to_unless_current_tab
|
49
49
|
assert_dom_equal('<li><a href="#">Welcome</a></li>', @builder.tab_for(:welcome, 'Welcome', '#'))
|
50
50
|
assert_dom_equal('<li><a href="http://foobar.com/">Foo Bar</a></li>', @builder.tab_for(:welcome, 'Foo Bar', 'http://foobar.com/'))
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def test_tab_for_should_return_span_if_current_tab
|
54
54
|
assert_dom_equal('<li><span>Dashboard</span></li>', @builder.tab_for(:dashboard, 'Dashboard', '#'))
|
55
55
|
assert_dom_equal('<li><span>Foo Bar</span></li>', @builder.tab_for(:dashboard, 'Foo Bar', '#'))
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
end
|
data/test/tabs_test.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TabsTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
Template = Class.new do
|
6
|
+
include ActionView::Helpers::TagHelper
|
7
|
+
include ActionView::Helpers::UrlHelper
|
8
|
+
|
9
|
+
def current_tab(namespace)
|
10
|
+
case namespace
|
11
|
+
when nil, :default
|
12
|
+
:dashboard
|
13
|
+
when :foospace
|
14
|
+
:footab
|
15
|
+
else
|
16
|
+
:elsetab
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
OpenZeroArgsBuilder = Class.new(TabsOnRails::Tabs::Builder) do
|
22
|
+
def open_tabs
|
23
|
+
'<ul>'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
CloseZeroArgsBuilder = Class.new(TabsOnRails::Tabs::Builder) do
|
28
|
+
def close_tabs
|
29
|
+
'</ul>'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
def setup
|
35
|
+
@template = Template.new
|
36
|
+
@klass = TabsOnRails::Tabs
|
37
|
+
@tabs = @klass.new(@template)
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def test_initialize
|
42
|
+
@tabs = @klass.new(@template)
|
43
|
+
assert_equal @template, @tabs.instance_variable_get(:"@context")
|
44
|
+
assert_instance_of TabsOnRails::Tabs::TabsBuilder, @tabs.instance_variable_get(:"@builder")
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_initialize_with_option_builder
|
48
|
+
builder = Class.new(TabsOnRails::Tabs::TabsBuilder)
|
49
|
+
@tabs = @klass.new(@template, :builder => builder)
|
50
|
+
assert_equal @template, @tabs.instance_variable_get(:"@context")
|
51
|
+
assert_instance_of builder, @tabs.instance_variable_get(:"@builder")
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
def test_open_tabs
|
56
|
+
assert_equal '<ul>', @tabs.open_tabs
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_open_tabs_with_options
|
60
|
+
assert_equal '<ul class="foo">', @tabs.open_tabs(:class => "foo")
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_open_tabs_should_ignore_options_if_arity_is_zero
|
64
|
+
@tabs = @klass.new(@template, :builder => OpenZeroArgsBuilder)
|
65
|
+
assert_nothing_raised do
|
66
|
+
assert_equal '<ul>', @tabs.open_tabs(:class => "foo")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_close_tabs
|
71
|
+
assert_equal '</ul>', @tabs.close_tabs
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_close_tabs_with_options
|
75
|
+
assert_equal '</ul>', @tabs.close_tabs(:class => "foo")
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_open_tabs_should_ignore_options_if_arity_is_zero
|
79
|
+
@tabs = @klass.new(@template, :builder => CloseZeroArgsBuilder)
|
80
|
+
assert_nothing_raised do
|
81
|
+
assert_equal '</ul>', @tabs.close_tabs(:class => "foo")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
gem 'rails', '~>2.3.
|
3
|
-
gem 'mocha', '~>0.9.
|
2
|
+
gem 'rails', '~>2.3.5'
|
3
|
+
gem 'mocha', '~>0.9.8'
|
4
4
|
|
5
5
|
# Remember! Due to some Mocha internal changes,
|
6
6
|
# Rails 2.2.x requires Mocha 0.9.5 and
|
@@ -45,5 +45,5 @@ module ControllerTestHelpers
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
49
|
-
end
|
48
|
+
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabs_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 1.1.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Simone Carletti
|
@@ -9,29 +15,10 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2010-08-09 00:00:00 +02:00
|
13
19
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
name: rake
|
17
|
-
type: :development
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.8.7
|
24
|
-
version:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: echoe
|
27
|
-
type: :development
|
28
|
-
version_requirement:
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 3.2.0
|
34
|
-
version:
|
20
|
+
dependencies: []
|
21
|
+
|
35
22
|
description: " TabsOnRails is a simple Ruby on Rails plugin for creating and managing Tabs. It provides helpers for creating tabs with a flexible interface.\n"
|
36
23
|
email: weppos@weppos.net
|
37
24
|
executables: []
|
@@ -42,76 +29,61 @@ extra_rdoc_files:
|
|
42
29
|
- CHANGELOG.rdoc
|
43
30
|
- LICENSE.rdoc
|
44
31
|
- README.rdoc
|
45
|
-
- lib/tabs_on_rails.rb
|
46
|
-
- lib/tabs_on_rails/controller_mixin.rb
|
47
|
-
- lib/tabs_on_rails/tabs.rb
|
48
|
-
- lib/tabs_on_rails/tabs/builder.rb
|
49
|
-
- lib/tabs_on_rails/tabs/tabs_builder.rb
|
50
|
-
- lib/tabs_on_rails/version.rb
|
51
|
-
- tasks/tabs_on_rails_tasks.rake
|
52
32
|
files:
|
33
|
+
- Rakefile
|
34
|
+
- init.rb
|
53
35
|
- CHANGELOG.rdoc
|
54
36
|
- LICENSE.rdoc
|
55
|
-
- Manifest
|
56
37
|
- README.rdoc
|
57
|
-
-
|
58
|
-
- init.rb
|
59
|
-
- install.rb
|
60
|
-
- lib/tabs_on_rails.rb
|
61
|
-
- lib/tabs_on_rails/controller_mixin.rb
|
62
|
-
- lib/tabs_on_rails/tabs.rb
|
63
|
-
- lib/tabs_on_rails/tabs/builder.rb
|
64
|
-
- lib/tabs_on_rails/tabs/tabs_builder.rb
|
65
|
-
- lib/tabs_on_rails/version.rb
|
66
|
-
- rails/init.rb
|
67
|
-
- tasks/tabs_on_rails_tasks.rake
|
68
|
-
- test/controller_mixin_helpers_test.rb
|
38
|
+
- tabs_on_rails.gemspec
|
69
39
|
- test/controller_mixin_test.rb
|
70
|
-
- test/controller_mixin_with_controller_test.rb
|
71
40
|
- test/fixtures/mixin/default.html.erb
|
72
41
|
- test/fixtures/mixin/with_open_close_tabs.html.erb
|
73
42
|
- test/tabs/builder_test.rb
|
74
43
|
- test/tabs/tabs_builder_test.rb
|
44
|
+
- test/tabs_test.rb
|
75
45
|
- test/test_helper.rb
|
76
|
-
-
|
77
|
-
- tabs_on_rails.
|
46
|
+
- lib/tabs_on_rails/controller_mixin.rb
|
47
|
+
- lib/tabs_on_rails/tabs/builder.rb
|
48
|
+
- lib/tabs_on_rails/tabs/tabs_builder.rb
|
49
|
+
- lib/tabs_on_rails/tabs.rb
|
50
|
+
- lib/tabs_on_rails/version.rb
|
51
|
+
- lib/tabs_on_rails.rb
|
52
|
+
- rails/init.rb
|
78
53
|
has_rdoc: true
|
79
|
-
homepage: http://
|
54
|
+
homepage: http://www.simonecarletti.com/code/tabs_on_rails
|
80
55
|
licenses: []
|
81
56
|
|
82
57
|
post_install_message:
|
83
58
|
rdoc_options:
|
84
|
-
- --line-numbers
|
85
|
-
- --inline-source
|
86
|
-
- --title
|
87
|
-
- Tabs_on_rails
|
88
59
|
- --main
|
89
60
|
- README.rdoc
|
90
61
|
require_paths:
|
91
62
|
- lib
|
92
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
93
65
|
requirements:
|
94
66
|
- - ">="
|
95
67
|
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
96
71
|
version: "0"
|
97
|
-
version:
|
98
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
99
74
|
requirements:
|
100
75
|
- - ">="
|
101
76
|
- !ruby/object:Gem::Version
|
102
|
-
|
103
|
-
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
104
81
|
requirements: []
|
105
82
|
|
106
83
|
rubyforge_project:
|
107
|
-
rubygems_version: 1.3.
|
84
|
+
rubygems_version: 1.3.7
|
108
85
|
signing_key:
|
109
86
|
specification_version: 3
|
110
87
|
summary: A simple Ruby on Rails plugin for creating and managing Tabs.
|
111
|
-
test_files:
|
112
|
-
|
113
|
-
- test/controller_mixin_test.rb
|
114
|
-
- test/controller_mixin_with_controller_test.rb
|
115
|
-
- test/tabs/builder_test.rb
|
116
|
-
- test/tabs/tabs_builder_test.rb
|
117
|
-
- test/test_helper.rb
|
88
|
+
test_files: []
|
89
|
+
|
data/Manifest
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
CHANGELOG.rdoc
|
2
|
-
LICENSE.rdoc
|
3
|
-
Manifest
|
4
|
-
README.rdoc
|
5
|
-
Rakefile
|
6
|
-
init.rb
|
7
|
-
install.rb
|
8
|
-
lib/tabs_on_rails.rb
|
9
|
-
lib/tabs_on_rails/controller_mixin.rb
|
10
|
-
lib/tabs_on_rails/tabs.rb
|
11
|
-
lib/tabs_on_rails/tabs/builder.rb
|
12
|
-
lib/tabs_on_rails/tabs/tabs_builder.rb
|
13
|
-
lib/tabs_on_rails/version.rb
|
14
|
-
rails/init.rb
|
15
|
-
tasks/tabs_on_rails_tasks.rake
|
16
|
-
test/controller_mixin_helpers_test.rb
|
17
|
-
test/controller_mixin_test.rb
|
18
|
-
test/controller_mixin_with_controller_test.rb
|
19
|
-
test/fixtures/mixin/default.html.erb
|
20
|
-
test/fixtures/mixin/with_open_close_tabs.html.erb
|
21
|
-
test/tabs/builder_test.rb
|
22
|
-
test/tabs/tabs_builder_test.rb
|
23
|
-
test/test_helper.rb
|
24
|
-
uninstall.rb
|
data/install.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# Install hook code here
|
@@ -1,86 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class MockBuilder < TabsOnRails::Tabs::Builder
|
4
|
-
|
5
|
-
def initialize_with_mocha(*args)
|
6
|
-
checkpoint
|
7
|
-
initialize_without_mocha(*args)
|
8
|
-
end
|
9
|
-
alias_method_chain :initialize, :mocha
|
10
|
-
|
11
|
-
def checkpoint
|
12
|
-
end
|
13
|
-
|
14
|
-
def tab_for(tab, name, *args)
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
class NilBoundariesBuilder < TabsOnRails::Tabs::Builder
|
20
|
-
def tab_for(tab, name, *args)
|
21
|
-
@context.content_tag(:span, name)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
class NilOpenBoundaryBuilder < NilBoundariesBuilder
|
26
|
-
def close_tabs(options = {})
|
27
|
-
'<br />'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
class NilCloseBoundaryBuilder < NilBoundariesBuilder
|
32
|
-
def open_tabs(options = {})
|
33
|
-
'<br />'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
class ControllerMixinHelpersTest < ActionView::TestCase
|
39
|
-
tests TabsOnRails::ControllerMixin::HelperMethods
|
40
|
-
include ActionView::Helpers::TagHelper
|
41
|
-
include ActionView::Helpers::UrlHelper
|
42
|
-
|
43
|
-
|
44
|
-
def test_tabs_tag_should_raise_local_jump_error_without_block
|
45
|
-
assert_raise(LocalJumpError) { tabs_tag }
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_tabs_tag_with_builder
|
49
|
-
MockBuilder.any_instance.expects(:checkpoint).once
|
50
|
-
tabs_tag(:builder => MockBuilder) {}
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_tabs_tag_with_namespace
|
54
|
-
MockBuilder.any_instance.expects(:checkpoint).once
|
55
|
-
tabs_tag(:builder => MockBuilder, :namespace => :custom) do |tabs|
|
56
|
-
builder = tabs.instance_variable_get(:'@builder')
|
57
|
-
assert_equal(:custom, builder.instance_variable_get(:'@namespace'))
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
|
62
|
-
def test_tabs_tag_should_not_concat_open_close_tabs_when_nil
|
63
|
-
content = tabs_tag(:builder => NilBoundariesBuilder) do |t|
|
64
|
-
concat t.single('Single', '#')
|
65
|
-
end
|
66
|
-
|
67
|
-
assert_dom_equal('<span>Single</span>', content)
|
68
|
-
end
|
69
|
-
|
70
|
-
def test_tabs_tag_should_not_concat_open_tabs_when_nil
|
71
|
-
content = tabs_tag(:builder => NilOpenBoundaryBuilder) do |t|
|
72
|
-
concat t.single('Single', '#')
|
73
|
-
end
|
74
|
-
|
75
|
-
assert_dom_equal('<span>Single</span><br />', content)
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_tabs_tag_should_not_concat_close_tabs_when_nil
|
79
|
-
content = tabs_tag(:builder => NilCloseBoundaryBuilder) do |t|
|
80
|
-
concat t.single('Single', '#')
|
81
|
-
end
|
82
|
-
|
83
|
-
assert_dom_equal('<br /><span>Single</span>', content)
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ControllerMixinWithControllerTest < ActionController::TestCase
|
4
|
-
include ControllerTestHelpers
|
5
|
-
|
6
|
-
class MixinController < ActionController::Base
|
7
|
-
def self.controller_name; "mixin"; end
|
8
|
-
def self.controller_path; "mixin"; end
|
9
|
-
|
10
|
-
layout false
|
11
|
-
|
12
|
-
set_tab :dashboard
|
13
|
-
set_tab :welcome, :only => %w(action_welcome)
|
14
|
-
set_tab :dashboard, :only => %w(action_namespace)
|
15
|
-
set_tab :homepage, :namespace, :only => %w(action_namespace)
|
16
|
-
|
17
|
-
def method_missing(method, *args)
|
18
|
-
if method =~ /^action_(.*)/
|
19
|
-
render :action => (params[:template] || 'default')
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def rescue_action(e) raise end
|
24
|
-
end
|
25
|
-
|
26
|
-
MixinController.view_paths = [ File.dirname(__FILE__) + "/fixtures/" ]
|
27
|
-
|
28
|
-
def setup
|
29
|
-
@controller = MixinController.new
|
30
|
-
@controller_proxy = ControllerProxy.new(@controller)
|
31
|
-
@request = ActionController::TestRequest.new
|
32
|
-
@response = ActionController::TestResponse.new
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
def test_render_default
|
37
|
-
get :action_dashboard
|
38
|
-
assert_equal(%Q{<ul>
|
39
|
-
<li><span>Dashboard</span></li>
|
40
|
-
<li><a href="/w">Welcome</a></li>
|
41
|
-
</ul>}, @response.body)
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_render_with_open_close_tabs
|
45
|
-
get :action_dashboard, :template => "with_open_close_tabs"
|
46
|
-
assert_equal(%Q{<ul id="tabs">
|
47
|
-
<li><span>Dashboard</span></li>
|
48
|
-
<li><a href="/w">Welcome</a></li>
|
49
|
-
</ul>}, @response.body)
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
def test_set_tab
|
54
|
-
get :action_dashboard
|
55
|
-
assert_equal(:dashboard, controller.current_tab)
|
56
|
-
assert_equal(:dashboard, controller.current_tab(:default))
|
57
|
-
assert_equal(%Q{<ul>
|
58
|
-
<li><span>Dashboard</span></li>
|
59
|
-
<li><a href="/w">Welcome</a></li>
|
60
|
-
</ul>}, @response.body)
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_set_tab_with_only_option
|
64
|
-
get :action_welcome
|
65
|
-
assert_equal(:welcome, controller.current_tab)
|
66
|
-
assert_equal(:welcome, controller.current_tab(:default))
|
67
|
-
assert_equal(%Q{<ul>
|
68
|
-
<li><a href="/d">Dashboard</a></li>
|
69
|
-
<li><span>Welcome</span></li>
|
70
|
-
</ul>}, @response.body)
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_set_tab_with_namespace
|
74
|
-
get :action_namespace
|
75
|
-
assert_equal(:dashboard, controller.current_tab)
|
76
|
-
assert_equal(:dashboard, controller.current_tab(:default))
|
77
|
-
assert_equal(:homepage, controller.current_tab(:namespace))
|
78
|
-
assert_equal(%Q{<ul>
|
79
|
-
<li><span>Dashboard</span></li>
|
80
|
-
<li><a href="/w">Welcome</a></li>
|
81
|
-
</ul>}, @response.body)
|
82
|
-
end
|
83
|
-
|
84
|
-
|
85
|
-
def test_current_tab
|
86
|
-
get :action_dashboard
|
87
|
-
assert_equal :dashboard, controller.current_tab
|
88
|
-
assert_equal :dashboard, controller.current_tab(:default)
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_current_tab_question
|
92
|
-
get :action_dashboard
|
93
|
-
assert controller.current_tab?(:dashboard)
|
94
|
-
assert controller.current_tab?(:dashboard, :default)
|
95
|
-
assert !controller.current_tab?(:foobar)
|
96
|
-
assert !controller.current_tab?(:foobar, :default)
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
data/uninstall.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# Uninstall hook code here
|