merb 0.4.2 → 0.5.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/README +21 -14
- data/Rakefile +157 -108
- data/SVN_REVISION +1 -0
- data/app_generators/merb/templates/Rakefile +20 -4
- data/app_generators/merb/templates/app/views/exceptions/internal_server_error.html.erb +1 -1
- data/app_generators/merb/templates/config/boot.rb +1 -1
- data/app_generators/merb/templates/config/dependencies.rb +3 -3
- data/app_generators/merb/templates/config/merb.yml +5 -0
- data/app_generators/merb/templates/config/merb_init.rb +3 -3
- data/app_generators/merb/templates/script/destroy +3 -0
- data/app_generators/merb/templates/script/generate +1 -1
- data/app_generators/merb/templates/spec/spec_helper.rb +2 -2
- data/app_generators/merb/templates/test/test_helper.rb +1 -1
- data/app_generators/merb_plugin/merb_plugin_generator.rb +4 -0
- data/bin/merb +1 -3
- data/lib/merb.rb +144 -76
- data/lib/merb/abstract_controller.rb +6 -5
- data/lib/merb/assets.rb +119 -0
- data/lib/merb/boot_loader.rb +217 -0
- data/lib/merb/caching.rb +1 -1
- data/lib/merb/caching/action_cache.rb +1 -1
- data/lib/merb/caching/fragment_cache.rb +1 -1
- data/lib/merb/caching/store/file_cache.rb +1 -1
- data/lib/merb/config.rb +290 -0
- data/lib/merb/controller.rb +5 -5
- data/lib/merb/core_ext/get_args.rb +1 -0
- data/lib/merb/core_ext/hash.rb +182 -169
- data/lib/merb/core_ext/kernel.rb +57 -26
- data/lib/merb/dispatcher.rb +6 -6
- data/lib/merb/drb_server.rb +1 -1
- data/lib/merb/generators/merb_generator_helpers.rb +7 -6
- data/lib/merb/logger.rb +1 -1
- data/lib/merb/mail_controller.rb +3 -4
- data/lib/merb/mailer.rb +2 -2
- data/lib/merb/mixins/basic_authentication.rb +2 -2
- data/lib/merb/mixins/controller.rb +1 -1
- data/lib/merb/mixins/general_controller.rb +13 -20
- data/lib/merb/mixins/inline_partial.rb +32 -0
- data/lib/merb/mixins/render.rb +3 -3
- data/lib/merb/mixins/responder.rb +1 -1
- data/lib/merb/mixins/view_context.rb +159 -33
- data/lib/merb/mongrel_handler.rb +9 -9
- data/lib/merb/plugins.rb +1 -1
- data/lib/merb/request.rb +25 -1
- data/lib/merb/router.rb +264 -226
- data/lib/merb/server.rb +66 -560
- data/lib/merb/session/cookie_store.rb +14 -13
- data/lib/merb/session/mem_cache_session.rb +20 -10
- data/lib/merb/session/memory_session.rb +21 -11
- data/lib/merb/template.rb +2 -2
- data/lib/merb/template/erubis.rb +3 -33
- data/lib/merb/template/haml.rb +8 -3
- data/lib/merb/test/fake_request.rb +8 -3
- data/lib/merb/test/helper.rb +66 -22
- data/lib/merb/test/rspec.rb +9 -155
- data/lib/merb/test/rspec_matchers/controller_matchers.rb +117 -0
- data/lib/merb/test/rspec_matchers/markup_matchers.rb +98 -0
- data/lib/merb/upload_handler.rb +2 -1
- data/lib/merb/version.rb +38 -3
- data/lib/merb/view_context.rb +1 -2
- data/lib/tasks/merb.rake +11 -11
- data/merb_generators/part_controller/USAGE +5 -0
- data/merb_generators/part_controller/part_controller_generator.rb +27 -0
- data/merb_generators/part_controller/templates/controller.rb +8 -0
- data/merb_generators/part_controller/templates/helper.rb +5 -0
- data/merb_generators/part_controller/templates/index.html.erb +3 -0
- data/rspec_generators/merb_controller_test/merb_controller_test_generator.rb +1 -1
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/spec/fixtures/controllers/dispatch_spec_controllers.rb +9 -1
- data/spec/fixtures/controllers/render_spec_controllers.rb +5 -5
- data/spec/fixtures/models/router_spec_models.rb +10 -0
- data/spec/merb/abstract_controller_spec.rb +2 -2
- data/spec/merb/assets_spec.rb +207 -0
- data/spec/merb/caching_spec.rb +2 -2
- data/spec/merb/controller_spec.rb +7 -2
- data/spec/merb/cookie_store_spec.rb +1 -1
- data/spec/merb/core_ext/class_spec.rb +97 -0
- data/spec/merb/core_ext/enumerable_spec.rb +27 -0
- data/spec/merb/core_ext/hash_spec.rb +251 -0
- data/spec/merb/core_ext/inflector_spec.rb +34 -0
- data/spec/merb/core_ext/kernel_spec.rb +25 -0
- data/spec/merb/core_ext/numeric_spec.rb +26 -0
- data/spec/merb/core_ext/object_spec.rb +47 -0
- data/spec/merb/core_ext/string_spec.rb +22 -0
- data/spec/merb/core_ext/symbol_spec.rb +7 -0
- data/spec/merb/dependency_spec.rb +22 -0
- data/spec/merb/dispatch_spec.rb +23 -12
- data/spec/merb/fake_request_spec.rb +8 -0
- data/spec/merb/generator_spec.rb +140 -21
- data/spec/merb/handler_spec.rb +5 -5
- data/spec/merb/mail_controller_spec.rb +3 -3
- data/spec/merb/render_spec.rb +1 -1
- data/spec/merb/responder_spec.rb +3 -3
- data/spec/merb/router_spec.rb +260 -191
- data/spec/merb/server_spec.rb +5 -5
- data/spec/merb/upload_handler_spec.rb +7 -0
- data/spec/merb/version_spec.rb +33 -0
- data/spec/merb/view_context_spec.rb +217 -59
- data/spec/spec_generator_helper.rb +15 -0
- data/spec/spec_helper.rb +5 -3
- data/spec/spec_helpers/url_shared_behaviour.rb +5 -7
- metadata +32 -7
- data/lib/merb/caching/store/memcache.rb +0 -20
- data/lib/merb/mixins/form_control.rb +0 -332
- data/lib/patch +0 -69
- data/spec/merb/core_ext_spec.rb +0 -464
- data/spec/merb/form_control_mixin_spec.rb +0 -431
data/spec/merb/server_spec.rb
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
2
|
|
|
3
|
-
describe Merb::
|
|
3
|
+
describe Merb::Config do
|
|
4
4
|
it "should apply environment from the command line option --environment" do
|
|
5
|
-
options = Merb::
|
|
5
|
+
options = Merb::Config.parse_args(["--environment", "performance_testing"])
|
|
6
6
|
options[:environment].should == "performance_testing"
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
it "should apply environment from the command line option -e" do
|
|
10
|
-
options = Merb::
|
|
10
|
+
options = Merb::Config.parse_args(["-e", "selenium"])
|
|
11
11
|
options[:environment].should == "selenium"
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
it "should load the yaml file for the environment if it exists" do
|
|
15
|
-
options = Merb::
|
|
15
|
+
options = Merb::Config.parse_args(["-e", "environment_config_test"])
|
|
16
16
|
options[:loaded_config_for_environment_config_test].should == true
|
|
17
17
|
end
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
end
|
|
@@ -64,6 +64,13 @@ describe MerbUploadHandler do
|
|
|
64
64
|
@handler.request_aborted(@params)
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
+
it 'should log info about aborted requests' do
|
|
68
|
+
@handler.stub!(:valid_upload?).and_return(@upload_id)
|
|
69
|
+
Mongrel::Uploads.should_receive(:finish).with(@upload_id)
|
|
70
|
+
Merb.logger.should_receive :info
|
|
71
|
+
@handler.request_aborted(@params)
|
|
72
|
+
end
|
|
73
|
+
|
|
67
74
|
it "should not send Mongrel::Uploads :finish unless the request is a valid upload" do
|
|
68
75
|
Mongrel::Uploads.should_not_receive(:finish)
|
|
69
76
|
@handler.stub!(:valid_upload?).and_return(false)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'Merb version.rb svn revision methods' do
|
|
4
|
+
it 'should give a path to a file containing the svn revision' do
|
|
5
|
+
Merb.svn_revision_file_path.should ==
|
|
6
|
+
File.expand_path(File.join(Dir.pwd, Merb.svn_revision_filename))
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should create the #{Merb.svn_revision_filename} file if it does not exist" do
|
|
10
|
+
File.delete Merb.svn_revision_file_path
|
|
11
|
+
Merb.svn_revision_from_file
|
|
12
|
+
File.file?(Merb.svn_revision_file_path).should == true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'should not raise permissions error' do
|
|
16
|
+
File.should_receive(:open).and_raise(Errno::EACCES)
|
|
17
|
+
Merb.svn_revision_from_file.should_not raise_error(Errno::EACCES)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'should get the svn revision' do
|
|
21
|
+
Merb.svn_revision.should > 0
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should get the svn revision from the #{Merb.svn_revision_filename} file" do
|
|
25
|
+
Merb.svn_revision_from_file.should > 0
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'should get the same number from the helper and the file' do
|
|
29
|
+
Merb.svn_revision.should == Merb.svn_revision_from_file
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'should get the svn revision via git'
|
|
33
|
+
end
|
|
@@ -1,103 +1,201 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
2
|
|
|
3
3
|
describe "View Context", "image tag" do
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
include Merb::ViewContextMixin
|
|
6
|
-
it "should render
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
it "should render a link" do
|
|
7
|
+
tag = link_to("NAME", "http://example.com", :title => "TITLE", :target => "TARGET")
|
|
8
|
+
tag.should match_tag(:a, :href => "http://example.com",
|
|
9
|
+
:title => "TITLE",
|
|
10
|
+
:target => "TARGET",
|
|
11
|
+
:content => "NAME")
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
it "should render local image" do
|
|
15
|
-
image_tag('foo.gif')
|
|
15
|
+
tag = image_tag('foo.gif')
|
|
16
|
+
tag.should match_tag(:img, :src => "/images/foo.gif")
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
it "should render a local image with a path_prefix" do
|
|
19
|
-
Merb::
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
Merb::Config[:path_prefix] = '/inky'
|
|
21
|
+
|
|
22
|
+
tag = image_tag('foo.gif')
|
|
23
|
+
tag.should match_tag(:img, :src => "/inky/images/foo.gif")
|
|
24
|
+
|
|
25
|
+
Merb::Config.delete(:path_prefix)
|
|
22
26
|
end
|
|
23
|
-
|
|
27
|
+
|
|
24
28
|
it "should render local image with class" do
|
|
25
|
-
image_tag('foo.gif', :class => 'bar')
|
|
29
|
+
tag = image_tag('foo.gif', :class => 'bar')
|
|
30
|
+
tag.should match_tag(:img, :src => "/images/foo.gif", :class => "bar")
|
|
26
31
|
end
|
|
27
32
|
|
|
28
33
|
it "should render local image with class and explicit path" do
|
|
29
|
-
image_tag('foo.gif', :class => 'bar', :path => '/files/')
|
|
34
|
+
tag = image_tag('foo.gif', :class => 'bar', :path => '/files/')
|
|
35
|
+
tag.should match_tag(:img, :src => "/files/foo.gif", :class => "bar")
|
|
30
36
|
end
|
|
31
37
|
|
|
32
38
|
it "should render remote image" do
|
|
33
|
-
image_tag('http://test.com/foo.gif')
|
|
39
|
+
tag = image_tag('http://test.com/foo.gif')
|
|
40
|
+
tag.should match_tag(:img, :src => "http://test.com/foo.gif")
|
|
34
41
|
end
|
|
35
42
|
|
|
36
43
|
it "should render remote SSL image" do
|
|
37
|
-
image_tag('https://test.com/foo.gif')
|
|
44
|
+
tag = image_tag('https://test.com/foo.gif')
|
|
45
|
+
tag.should match_tag(:img, :src => "https://test.com/foo.gif")
|
|
38
46
|
end
|
|
39
47
|
|
|
40
48
|
end
|
|
41
49
|
|
|
42
50
|
describe "View Context", "css tag" do
|
|
43
|
-
|
|
51
|
+
|
|
44
52
|
include Merb::ViewContextMixin
|
|
45
|
-
|
|
53
|
+
|
|
46
54
|
it "should render a link tag with the css_include_tag method" do
|
|
47
|
-
css_include_tag('foo.css')
|
|
48
|
-
|
|
55
|
+
tag = css_include_tag('foo.css')
|
|
56
|
+
tag.should match_tag(:link, :href => "/stylesheets/foo.css",
|
|
57
|
+
:media => "all",
|
|
58
|
+
:rel => "Stylesheet",
|
|
59
|
+
:type => "text/css",
|
|
60
|
+
:content => nil)
|
|
49
61
|
|
|
50
62
|
css_include_tag('foo').should == css_include_tag('foo.css')
|
|
51
|
-
|
|
52
63
|
css_include_tag('foo', 'bar').should ==
|
|
53
|
-
|
|
54
|
-
css_include_tag('bar')
|
|
64
|
+
css_include_tag('foo') + css_include_tag('bar')
|
|
55
65
|
end
|
|
56
66
|
|
|
67
|
+
it "should alter the 'media' attribute based on the provided options" do
|
|
68
|
+
tag = css_include_tag('foo.css', :media => :screen)
|
|
69
|
+
tag.should match_tag(:link, :href => "/stylesheets/foo.css",
|
|
70
|
+
:media => "screen",
|
|
71
|
+
:rel => "Stylesheet",
|
|
72
|
+
:type => "text/css",
|
|
73
|
+
:content => nil)
|
|
74
|
+
end
|
|
75
|
+
|
|
57
76
|
it "should render a link tag with a path_prefix" do
|
|
58
|
-
Merb::
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
77
|
+
Merb::Config[:path_prefix] = '/inky'
|
|
78
|
+
|
|
79
|
+
tag = css_include_tag('foo.css')
|
|
80
|
+
tag.should match_tag(:link, :href => "/inky/stylesheets/foo.css",
|
|
81
|
+
:media => "all",
|
|
82
|
+
:rel => "Stylesheet",
|
|
83
|
+
:type => "text/css",
|
|
84
|
+
:content => nil)
|
|
85
|
+
|
|
86
|
+
Merb::Config.delete(:path_prefix)
|
|
62
87
|
end
|
|
63
|
-
|
|
88
|
+
|
|
64
89
|
it "should not generate a script tag with the include_required_css" do
|
|
65
90
|
include_required_css.clean.should == ''
|
|
66
91
|
end
|
|
67
|
-
|
|
92
|
+
|
|
68
93
|
it "should generate script tags with the include_required_css" do
|
|
69
94
|
require_css('foo')
|
|
70
95
|
require_css('bar')
|
|
71
|
-
include_required_css.should ==
|
|
72
|
-
css_include_tag('foo') + css_include_tag('bar')
|
|
96
|
+
include_required_css.should == css_include_tag('foo') + css_include_tag('bar')
|
|
73
97
|
end
|
|
74
98
|
end
|
|
75
99
|
|
|
76
|
-
describe "View Context", "
|
|
77
|
-
|
|
100
|
+
describe "View Context", "css tag with bundles" do
|
|
101
|
+
|
|
78
102
|
include Merb::ViewContextMixin
|
|
79
103
|
|
|
104
|
+
before(:each) do
|
|
105
|
+
@bundler = mock(:bundler)
|
|
106
|
+
Merb::Assets.stub!(:bundle?).and_return(true)
|
|
107
|
+
Merb::Assets::StylesheetAssetBundler.stub!(:new).and_return(@bundler)
|
|
108
|
+
@bundler.stub!(:bundle!).and_return(:all)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "should not bundle stylesheets if asset bundling is disabled" do
|
|
112
|
+
Merb::Assets.should_receive(:bundle?).and_return(false)
|
|
113
|
+
|
|
114
|
+
tag = css_include_tag(:fonts, :colors, :bundle => true)
|
|
115
|
+
tag.should == css_include_tag(:fonts) + css_include_tag(:colors)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it "should not bundle stylesheets if only a single stylesheet was provided" do
|
|
119
|
+
css_include_tag(:fonts, :bundle => true).should == css_include_tag(:fonts)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "should bundle all stylesheets as 'all.css' if no bundle name is provided" do
|
|
123
|
+
Merb::Assets.should_receive(:bundle?).and_return(true)
|
|
124
|
+
Merb::Assets::StylesheetAssetBundler.should_receive(:new).with(true, :fonts, :colors).and_return(@bundler)
|
|
125
|
+
@bundler.should_receive(:bundle!).and_return(:all)
|
|
126
|
+
|
|
127
|
+
tag = css_include_tag(:fonts, :colors, :bundle => true)
|
|
128
|
+
tag.should match_tag(:link, :href => "/stylesheets/all.css",
|
|
129
|
+
:media => "all",
|
|
130
|
+
:rel => "Stylesheet",
|
|
131
|
+
:type => "text/css",
|
|
132
|
+
:content => nil)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "should bundle all stylesheets whatever bundle name is provided" do
|
|
136
|
+
Merb::Assets.should_receive(:bundle?).and_return(true)
|
|
137
|
+
Merb::Assets::StylesheetAssetBundler.should_receive(:new).with(:base, :fonts, :colors).and_return(@bundler)
|
|
138
|
+
@bundler.should_receive(:bundle!).and_return(:base)
|
|
139
|
+
|
|
140
|
+
tag = css_include_tag(:fonts, :colors, :bundle => :base)
|
|
141
|
+
tag.should match_tag(:link, :href => "/stylesheets/base.css",
|
|
142
|
+
:media => "all",
|
|
143
|
+
:rel => "Stylesheet",
|
|
144
|
+
:type => "text/css",
|
|
145
|
+
:content => nil)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it "should not generate a stylesheet tag with the include_required_css" do
|
|
149
|
+
include_required_css(:bundle => true).clean.should == ''
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "should generate stylesheet tags with the include_required_css" do
|
|
153
|
+
Merb::Assets.should_receive(:bundle?).and_return(true)
|
|
154
|
+
Merb::Assets::StylesheetAssetBundler.should_receive(:new).with(true, :fonts, :colors).and_return(@bundler)
|
|
155
|
+
@bundler.should_receive(:bundle!).and_return(:all)
|
|
156
|
+
|
|
157
|
+
require_css(:fonts)
|
|
158
|
+
require_css(:colors)
|
|
159
|
+
tag = include_required_css(:bundle => true)
|
|
160
|
+
|
|
161
|
+
tag.should match_tag(:link, :href => "/stylesheets/all.css",
|
|
162
|
+
:media => "all",
|
|
163
|
+
:rel => "Stylesheet",
|
|
164
|
+
:type => "text/css",
|
|
165
|
+
:content => nil)
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
describe "View Context", "script tag" do
|
|
170
|
+
|
|
171
|
+
include Merb::ViewContextMixin
|
|
172
|
+
|
|
80
173
|
it "should render a script tag with the js_include_tag method" do
|
|
81
|
-
js_include_tag('foo.js')
|
|
174
|
+
tag = js_include_tag('foo.js')
|
|
175
|
+
tag.should match_tag(:script, :src => "/javascripts/foo.js",
|
|
176
|
+
:type => "text/javascript",
|
|
177
|
+
:content => "//")
|
|
82
178
|
|
|
83
179
|
js_include_tag('foo').should == js_include_tag('foo.js')
|
|
84
|
-
|
|
85
180
|
js_include_tag('foo', 'bar').should ==
|
|
86
|
-
|
|
87
|
-
js_include_tag('bar')
|
|
181
|
+
js_include_tag('foo') + js_include_tag('bar')
|
|
88
182
|
end
|
|
89
|
-
|
|
183
|
+
|
|
90
184
|
it "should render a script tag with a path_prefix" do
|
|
91
|
-
Merb::
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
185
|
+
Merb::Config[:path_prefix] = '/inky'
|
|
186
|
+
|
|
187
|
+
tag = js_include_tag('foo.js')
|
|
188
|
+
tag.should match_tag(:script, :src => "/inky/javascripts/foo.js",
|
|
189
|
+
:type => "text/javascript",
|
|
190
|
+
:content => "//")
|
|
191
|
+
|
|
192
|
+
Merb::Config.delete(:path_prefix)
|
|
95
193
|
end
|
|
96
|
-
|
|
194
|
+
|
|
97
195
|
it "should not generate a script tag with the include_required_js" do
|
|
98
196
|
include_required_js.clean.should == ''
|
|
99
197
|
end
|
|
100
|
-
|
|
198
|
+
|
|
101
199
|
it "should generate script tags with the include_required_js" do
|
|
102
200
|
require_js('foo')
|
|
103
201
|
require_js('bar')
|
|
@@ -105,10 +203,73 @@ describe "View Context", "script tag" do
|
|
|
105
203
|
end
|
|
106
204
|
end
|
|
107
205
|
|
|
108
|
-
describe "View Context", "
|
|
109
|
-
|
|
206
|
+
describe "View Context", "script tag with bundles" do
|
|
207
|
+
|
|
110
208
|
include Merb::ViewContextMixin
|
|
111
209
|
|
|
210
|
+
before(:each) do
|
|
211
|
+
@bundler = mock(:bundler)
|
|
212
|
+
Merb::Assets.stub!(:bundle?).and_return(true)
|
|
213
|
+
Merb::Assets::JavascriptAssetBundler.stub!(:new).and_return(@bundler)
|
|
214
|
+
@bundler.stub!(:bundle!).and_return(:all)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
it "should not bundle scripts if asset bundling is disabled" do
|
|
218
|
+
Merb::Assets.should_receive(:bundle?).and_return(false)
|
|
219
|
+
|
|
220
|
+
tag = js_include_tag(:prototype, :lowpro, :bundle => true)
|
|
221
|
+
tag.should == js_include_tag(:prototype) + js_include_tag(:lowpro)
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
it "should not bundle scripts if only a single script was provided" do
|
|
225
|
+
css_include_tag(:prototype, :bundle => true).should == css_include_tag(:prototype)
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
it "should bundle all scripts as 'all.js' if no bundle name is provided" do
|
|
229
|
+
Merb::Assets.should_receive(:bundle?).and_return(true)
|
|
230
|
+
Merb::Assets::JavascriptAssetBundler.should_receive(:new).with(true, :prototype, :lowpro).and_return(@bundler)
|
|
231
|
+
@bundler.should_receive(:bundle!).and_return(:all)
|
|
232
|
+
|
|
233
|
+
tag = js_include_tag(:prototype, :lowpro, :bundle => true)
|
|
234
|
+
tag.should match_tag(:script, :src => "/javascripts/all.js",
|
|
235
|
+
:type => "text/javascript",
|
|
236
|
+
:content => "//")
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
it "should bundle all stylesheets whatever bundle name is provided" do
|
|
240
|
+
Merb::Assets.should_receive(:bundle?).and_return(true)
|
|
241
|
+
Merb::Assets::JavascriptAssetBundler.should_receive(:new).with(:base, :prototype, :lowpro).and_return(@bundler)
|
|
242
|
+
@bundler.should_receive(:bundle!).and_return(:base)
|
|
243
|
+
|
|
244
|
+
tag = js_include_tag(:prototype, :lowpro, :bundle => :base)
|
|
245
|
+
tag.should match_tag(:script, :src => "/javascripts/base.js",
|
|
246
|
+
:type => "text/javascript",
|
|
247
|
+
:content => "//")
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
it "should not generate a script tag with the include_required_js" do
|
|
251
|
+
include_required_js(:bundle => true).clean.should == ''
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
it "should generate script tags with the include_required_js" do
|
|
255
|
+
Merb::Assets.should_receive(:bundle?).and_return(true)
|
|
256
|
+
Merb::Assets::JavascriptAssetBundler.should_receive(:new).with(true, :prototype, :lowpro).and_return(@bundler)
|
|
257
|
+
@bundler.should_receive(:bundle!).and_return(:all)
|
|
258
|
+
|
|
259
|
+
require_js(:prototype)
|
|
260
|
+
require_js(:lowpro)
|
|
261
|
+
|
|
262
|
+
tag = include_required_js(:bundle => true)
|
|
263
|
+
tag.should match_tag(:script, :src => "/javascripts/all.js",
|
|
264
|
+
:type => "text/javascript",
|
|
265
|
+
:content => "//")
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
describe "View Context", "throw_content, catch_content" do
|
|
270
|
+
|
|
271
|
+
include Merb::ViewContextMixin
|
|
272
|
+
|
|
112
273
|
it "should throw content" do
|
|
113
274
|
c = new_controller
|
|
114
275
|
content = c.render :template => "examples/template_throw_content", :layout => :none
|
|
@@ -126,14 +287,14 @@ describe "View Context", "throw_content, catch_content" do
|
|
|
126
287
|
content = c.render :template => "examples/template_catch_content", :layout => :none
|
|
127
288
|
content.should match( /CAUGHT CONTENT/m)
|
|
128
289
|
end
|
|
129
|
-
|
|
290
|
+
|
|
130
291
|
it "should catch content with multiple throws" do
|
|
131
292
|
c = new_controller
|
|
132
293
|
content = c.render :template => "examples/template_catch_content", :layout => :none
|
|
133
294
|
content.should match( /CAUGHT FOOTER/m )
|
|
134
295
|
content.should match( /START FOOTER\s+CAUGHT FOOTER\s+END FOOTER/m )
|
|
135
296
|
end
|
|
136
|
-
|
|
297
|
+
|
|
137
298
|
it "should not render the block inline" do
|
|
138
299
|
c = new_controller
|
|
139
300
|
content = c.render :template => "examples/template_catch_content", :layout => :none
|
|
@@ -152,25 +313,22 @@ describe Merb::ViewContextMixin do
|
|
|
152
313
|
it "should render the start of a tag" do
|
|
153
314
|
open_tag(:div).should == "<div>"
|
|
154
315
|
end
|
|
155
|
-
|
|
316
|
+
|
|
156
317
|
it "should render the start of a tag with attributes" do
|
|
157
318
|
tag = open_tag(:div, :id => 1, :class => "CLASS")
|
|
158
|
-
tag.should
|
|
159
|
-
tag.should match( /id="1"/)
|
|
160
|
-
tag.should match( /class="CLASS"/)
|
|
161
|
-
tag.should match( />$/ )
|
|
319
|
+
tag.should match_tag(:div, :id => "1", :class => "CLASS")
|
|
162
320
|
end
|
|
163
|
-
|
|
321
|
+
|
|
164
322
|
it "should render a self closing tag" do
|
|
165
|
-
self_closing_tag(
|
|
323
|
+
self_closing_tag(:br).should == "<br/>"
|
|
166
324
|
end
|
|
167
|
-
|
|
325
|
+
|
|
168
326
|
it "should render a self closing tag with attributes" do
|
|
169
|
-
self_closing_tag(:img, :src => "SOURCE"
|
|
327
|
+
self_closing_tag(:img, :src => "SOURCE").should match_tag(:img, :src => "SOURCE")
|
|
170
328
|
end
|
|
171
|
-
|
|
329
|
+
|
|
172
330
|
it "should render a closing tag" do
|
|
173
331
|
close_tag(:div).should == "</div>"
|
|
174
332
|
end
|
|
175
|
-
|
|
333
|
+
|
|
176
334
|
end
|
|
@@ -17,3 +17,18 @@ rescue LoadError
|
|
|
17
17
|
require 'rubigen'
|
|
18
18
|
end
|
|
19
19
|
require 'rubigen/helpers/generator_test_helper'
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def directory_should_be_created(directory)
|
|
23
|
+
File.should be_exist(File.join(APP_ROOT, directory))
|
|
24
|
+
File.should be_directory(File.join(APP_ROOT, directory))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def file_should_be_created(file)
|
|
28
|
+
File.should be_exist(File.join(APP_ROOT, file))
|
|
29
|
+
File.should be_file(File.join(APP_ROOT, file))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def file_should_be_executable(file)
|
|
33
|
+
File.should be_executable(File.join(APP_ROOT, file))
|
|
34
|
+
end
|