summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/app_spec.rb58
-rw-r--r--spec/node_spec.rb602
-rw-r--r--spec/spec_helper.rb357
3 files changed, 511 insertions, 506 deletions
diff --git a/spec/app_spec.rb b/spec/app_spec.rb
index 2d7aaeb..9864939 100644
--- a/spec/app_spec.rb
+++ b/spec/app_spec.rb
@@ -1,43 +1,37 @@
-# -*- coding: UTF-8 -*-
-
require 'spec_helper'
describe Zorglub do
+ describe Zorglub::App do
+ it 'map should add a mapped node' do
+ expect(APP.at('/temp')).to be_nil
+ APP.map '/temp', Temp
+ expect(APP.at('/temp')).to be Temp
+ end
- describe Zorglub::App do
-
- it "map should add a mapped node" do
- expect(APP.at("/temp")).to be_nil
- APP.map "/temp", Temp
- expect(APP.at("/temp")).to be Temp
- end
-
- it "delete should delete a mapped node" do
- expect(APP.at("/temp")).to be Temp
- APP.delete "/temp"
- expect(APP.at("/temp")).to be_nil
- end
-
- it "at should return mapped node" do
- expect(APP.at("/node1")).to be Node1
- end
-
- it "at should return nil if no Node mapped" do
- expect(APP.at("/none")).to be_nil
- end
+ it 'delete should delete a mapped node' do
+ expect(APP.at('/temp')).to be Temp
+ APP.delete '/temp'
+ expect(APP.at('/temp')).to be_nil
+ end
- it "to should return path to node" do
- expect(APP.to(Node1)).to eq "/node1"
- end
+ it 'at should return mapped node' do
+ expect(APP.at('/node1')).to be Node1
+ end
- it "to should return nil if not an existing Node" do
- expect(APP.to(nil)).to be_nil
- end
+ it 'at should return nil if no Node mapped' do
+ expect(APP.at('/none')).to be_nil
+ end
- it "to_hash should return a correct hash" do
- expect(APP.to_hash["/node1"]).to be Node1
- end
+ it 'to should return path to node' do
+ expect(APP.to(Node1)).to eq '/node1'
+ end
+ it 'to should return nil if not an existing Node' do
+ expect(APP.to(nil)).to be_nil
end
+ it 'to_hash should return a correct hash' do
+ expect(APP.to_hash['/node1']).to be Node1
+ end
+ end
end
diff --git a/spec/node_spec.rb b/spec/node_spec.rb
index f77d7c3..fe1edfb 100644
--- a/spec/node_spec.rb
+++ b/spec/node_spec.rb
@@ -1,315 +1,309 @@
-# -*- coding: UTF-8 -*-
-
require 'spec_helper'
def clean_static_path
- static_base_path = Node0.app.static_base_path
- Dir.glob( File.join(static_base_path,'**','*') ).each do |f| File.unlink f if File.file? f end
- Dir.glob( File.join(static_base_path,'*') ).each do |d| Dir.rmdir d end
- Dir.rmdir static_base_path if File.directory? static_base_path
+ static_base_path = Node0.app.static_base_path
+ Dir.glob(File.join(static_base_path, '**', '*')).each { |f| File.unlink f if File.file? f }
+ Dir.glob(File.join(static_base_path, '*')).each { |d| Dir.rmdir d }
+ Dir.rmdir static_base_path if File.directory? static_base_path
end
describe Zorglub do
+ describe Zorglub::Node do
+ before(:all) do
+ clean_static_path
+ end
+
+ after(:all) do
+ clean_static_path
+ end
+
+ it "engine should return default Node's engine" do
+ expect(Node0.engine).to eq Node0.app.opt(:engine)
+ end
+
+ it "layout should return default Node's layout" do
+ expect(Node0.layout).to eq Node0.app.opt(:layout)
+ end
+
+ it "engine should return class defined Node's engine" do
+ expect(Node1.engine).to eq 'engine-1'
+ expect(Node3.engine).to eq 'engine-2'
+ end
+
+ it "layout should return class defined Node's layout" do
+ expect(Node1.layout).to eq 'layout-1'
+ expect(Node3.layout).to eq 'layout-2'
+ end
+
+ it 'engine should return engine inherited from Node2' do
+ expect(Node2.engine).to eq 'engine-1'
+ end
+
+ it 'layout should return layout inherited from Node2' do
+ expect(Node2.layout).to eq 'layout-1'
+ end
+
+ it 'r should build a well formed path' do
+ expect(Node1.r(1, 'arg2', 'some')).to eq '/node1/1/arg2/some'
+ end
+
+ it 'instance level map should work' do
+ r = Node0.my_call '/with_2args/1/2'
+ h = YAML.load r.body[0]
+ expect(h[:map]).to eq '/node0'
+ end
+
+ it 'should return err404 response when no method found' do
+ expect(Node0.respond_to?('noresponse')).to be_falsey
+ r = Node0.my_call '/noresponse'
+ expect(r.status).to eq 404
+ end
+
+ it 'simple method should respond' do
+ r = Node0.my_call '/hello'
+ expect(r.status).to eq 200
+ expect(r.body[0]).to eq 'world'
+ end
+
+ it 'instance level args should work' do
+ r = Node0.my_call '/with_2args/1/2'
+ h = YAML.load r.body[0]
+ expect(h[:args][0]).to eq '1'
+ expect(h[:args][1]).to eq '2'
+ end
+
+ it 'should raise error when too much arguments' do
+ expect(-> { Node0.my_call '/with_2args/1/2/3' }).to raise_error ArgumentError
+ end
+
+ it 'layout proc, method level layout and engine definitions should work' do
+ r = Node0.my_call '/index'
+ expect(r.status).to eq 200
+ h = YAML.load r.body[0]
+ ly = File.join Node0.app.layout_base_path, Node0.layout
+ vu = File.join Node0.app.view_base_path, Node0.r, 'index'
+ expect(h[:path]).to eq ly
+ expect(h[:layout]).to eq ly
+ expect(h[:view]).to eq vu
+ end
+
+ it 'layout proc, method level layout and engine definitions should work' do
+ r = Node1.my_call '/index'
+ expect(r.status).to eq 200
+ h = YAML.load r.body[0]
+ ly = File.join Node1.app.layout_base_path, 'main.spec'
+ vu = File.join Node1.app.view_base_path, Node1.r, 'index.spec'
+ expect(h[:path]).to eq ly
+ expect(h[:layout]).to eq ly
+ expect(h[:view]).to eq vu
+ end
+
+ it 'before_all hook should work' do
+ Node3.before = 0
+ Node3.after = 0
+ expect(Node3.before).to eq 0
+ expect(Node3.my_call_i('/index')).to eq 1
+ expect(Node3.before).to eq 1
+ expect(Node3.my_call_i('/index')).to eq 1
+ expect(Node3.before).to eq 2
+ expect(Node3.my_call_i('/index')).to eq 1
+ expect(Node3.before).to eq 3
+ end
+
+ it 'after_all hook should work' do
+ Node3.before = 0
+ Node3.after = 0
+ expect(Node3.after).to eq 0
+ expect(Node3.my_call_i('/index')).to eq 1
+ expect(Node3.after).to eq 1
+ expect(Node3.my_call_i('/index')).to eq 1
+ expect(Node3.after).to eq 2
+ expect(Node3.my_call_i('/index')).to eq 1
+ expect(Node3.after).to eq 3
+ end
+
+ it 'inherited before_all hook should work' do
+ Node3.before = 0
+ Node3.after = 0
+ expect(Node3.before).to eq 0
+ expect(Node8.my_call_i('/index')).to eq 1
+ expect(Node3.before).to eq 1
+ expect(Node8.my_call_i('/index')).to eq 1
+ expect(Node3.before).to eq 2
+ expect(Node8.my_call_i('/index')).to eq 1
+ expect(Node3.before).to eq 3
+ end
+
+ it 'inherited after_all hook should work' do
+ Node3.before = 0
+ Node3.after = 0
+ expect(Node3.after).to eq 0
+ expect(Node8.my_call_i('/index')).to eq 1
+ expect(Node3.after).to eq 1
+ expect(Node8.my_call_i('/index')).to eq 1
+ expect(Node3.after).to eq 2
+ expect(Node8.my_call_i('/index')).to eq 1
+ expect(Node3.after).to eq 3
+ end
+
+ it 'should find view and layout and render them' do
+ r = Node0.my_call '/do_render'
+ expect(r.status).to eq 200
+ expect(r.body[0]).to eq 'layout_start view_content layout_end'
+ end
+
+ it 'default mime-type should be text/html' do
+ r = Node0.my_call '/index'
+ expect(r.headers['Content-type']).to eq 'text/html'
+ end
+
+ it 'should be able to override mime-type' do
+ r = Node0.my_call '/do_render'
+ expect(r.headers['Content-type']).to eq 'text/view'
+ end
+
+ it 'should be able to override through rack response mime-type' do
+ r = Node0.my_call '/do_content_type'
+ expect(r.headers['Content-type']).to eq 'text/mine'
+ end
+
+ it 'partial should render correctly' do
+ expect(Node0.partial({}, :do_partial, 1, 2)).to eq 'partial_content'
+ end
+
+ it 'method level view should work' do
+ expect(Node0.partial({}, :other_view)).to eq 'partial_content'
+ end
+
+ it 'partial with hooks should be default' do
+ Node3.before = 0
+ Node3.after = 0
+ expect(Node3.partial({}, :do_partial, 1, 2)).to eq 'partial_content'
+ expect(Node3.before).to eq 1
+ expect(Node3.after).to eq 1
+ end
- describe Zorglub::Node do
-
- before(:all) do
- clean_static_path
- end
-
- after(:all) do
- clean_static_path
- end
-
- it "engine should return default Node's engine" do
- expect(Node0.engine).to eq Node0.app.opt(:engine)
- end
-
- it "layout should return default Node's layout" do
- expect(Node0.layout).to eq Node0.app.opt(:layout)
- end
-
- it "engine should return class defined Node's engine" do
- expect(Node1.engine).to eq "engine-1"
- expect(Node3.engine).to eq "engine-2"
- end
-
- it "layout should return class defined Node's layout" do
- expect(Node1.layout).to eq "layout-1"
- expect(Node3.layout).to eq "layout-2"
- end
-
- it "engine should return engine inherited from Node2" do
- expect(Node2.engine).to eq "engine-1"
- end
-
- it "layout should return layout inherited from Node2" do
- expect(Node2.layout).to eq "layout-1"
- end
-
- it "r should build a well formed path" do
- expect(Node1.r(1,'arg2',"some")).to eq "/node1/1/arg2/some"
- end
-
- it "instance level map should work" do
- r = Node0.my_call '/with_2args/1/2'
- h = YAML.load r.body[0]
- expect(h[:map]).to eq '/node0'
- end
-
- it "should return err404 response when no method found" do
- expect(Node0.respond_to?('noresponse')).to be_falsey
- r = Node0.my_call '/noresponse'
- expect(r.status).to eq 404
- end
-
- it "simple method should respond" do
- r = Node0.my_call '/hello'
- expect(r.status).to eq 200
- expect(r.body[0]).to eq 'world'
- end
-
- it "instance level args should work" do
- r = Node0.my_call '/with_2args/1/2'
- h = YAML.load r.body[0]
- expect(h[:args][0]).to eq '1'
- expect(h[:args][1]).to eq '2'
- end
-
- it "should raise error when too much arguments" do
- expect(lambda{ r = Node0.my_call '/with_2args/1/2/3' }).to raise_error ArgumentError
- end
-
- it "layout proc, method level layout and engine definitions should work" do
- r = Node0.my_call '/index'
- expect(r.status).to eq 200
- h = YAML.load r.body[0]
- ly = File.join Node0.app.layout_base_path, Node0.layout
- vu = File.join Node0.app.view_base_path, Node0.r, 'index'
- expect(h[:path]).to eq ly
- expect(h[:layout]).to eq ly
- expect(h[:view]).to eq vu
- end
-
- it "layout proc, method level layout and engine definitions should work" do
- r = Node1.my_call '/index'
- expect(r.status).to eq 200
- h = YAML.load r.body[0]
- ly = File.join Node1.app.layout_base_path, 'main.spec'
- vu = File.join Node1.app.view_base_path, Node1.r, 'index.spec'
- expect(h[:path]).to eq ly
- expect(h[:layout]).to eq ly
- expect(h[:view]).to eq vu
- end
-
- it "before_all hook should work" do
- Node3.before = 0
- Node3.after = 0
- expect(Node3.before).to eq 0
- expect(Node3.my_call_i('/index')).to eq 1
- expect(Node3.before).to eq 1
- expect(Node3.my_call_i('/index')).to eq 1
- expect(Node3.before).to eq 2
- expect(Node3.my_call_i('/index')).to eq 1
- expect(Node3.before).to eq 3
- end
-
- it "after_all hook should work" do
- Node3.before = 0
- Node3.after = 0
- expect(Node3.after).to eq 0
- expect(Node3.my_call_i('/index')).to eq 1
- expect(Node3.after).to eq 1
- expect(Node3.my_call_i('/index')).to eq 1
- expect(Node3.after).to eq 2
- expect(Node3.my_call_i('/index')).to eq 1
- expect(Node3.after).to eq 3
- end
-
- it "inherited before_all hook should work" do
- Node3.before = 0
- Node3.after = 0
- expect(Node3.before).to eq 0
- expect(Node8.my_call_i('/index')).to eq 1
- expect(Node3.before).to eq 1
- expect(Node8.my_call_i('/index')).to eq 1
- expect(Node3.before).to eq 2
- expect(Node8.my_call_i('/index')).to eq 1
- expect(Node3.before).to eq 3
- end
-
- it "inherited after_all hook should work" do
- Node3.before = 0
- Node3.after = 0
- expect(Node3.after).to eq 0
- expect(Node8.my_call_i('/index')).to eq 1
- expect(Node3.after).to eq 1
- expect(Node8.my_call_i('/index')).to eq 1
- expect(Node3.after).to eq 2
- expect(Node8.my_call_i('/index')).to eq 1
- expect(Node3.after).to eq 3
- end
-
- it "should find view and layout and render them" do
- r = Node0.my_call '/do_render'
- expect(r.status).to eq 200
- expect(r.body[0]).to eq "layout_start view_content layout_end"
- end
-
- it "default mime-type should be text/html" do
- r = Node0.my_call '/index'
- expect(r.headers['Content-type']).to eq 'text/html'
- end
-
- it "should be able to override mime-type" do
- r = Node0.my_call '/do_render'
- expect(r.headers['Content-type']).to eq 'text/view'
- end
-
- it "should be able to override through rack response mime-type" do
- r = Node0.my_call '/do_content_type'
- expect(r.headers['Content-type']).to eq 'text/mine'
- end
-
- it "partial should render correctly" do
- expect(Node0.partial({},:do_partial, 1, 2)).to eq 'partial_content'
- end
-
- it "method level view should work" do
- expect(Node0.partial({},:other_view)).to eq 'partial_content'
- end
-
- it "partial with hooks should be default" do
- Node3.before = 0
- Node3.after = 0
- expect(Node3.partial({},:do_partial,1,2)).to eq 'partial_content'
- expect(Node3.before).to eq 1
- expect(Node3.after).to eq 1
- end
-
- it "partial without hooks should work" do
- Node3.before = 0
- Node3.after = 0
- expect(Node3.partial({:no_hooks=>true},:do_partial,1,2)).to eq 'partial_content'
- expect(Node3.before).to eq 0
- expect(Node3.after).to eq 0
- end
-
- it "static pages should be generated" do
- r = Node6.my_call '/do_static'
- expect(r.body[0]).to eq 'VAL 1'
- expect(r.headers['Content-type']).to eq 'text/static'
- r = Node6.my_call '/do_static'
- expect(r.body[0]).to eq 'VAL 1'
- expect(r.headers['Content-type']).to eq 'text/static'
- r = Node6.my_call '/do_static'
- expect(r.body[0]).to eq 'VAL 1'
- expect(r.headers['Content-type']).to eq 'text/static'
- r = Node6.my_call '/no_static'
- expect(r.body[0]).to eq 'VAL 4'
- expect(r.headers['Content-type']).to eq 'text/static'
- r = Node6.my_call '/do_static'
- expect(r.body[0]).to eq 'VAL 1'
- expect(r.headers['Content-type']).to eq 'text/static'
- Node6.static! true, 0.000001
- sleep 0.0001
- r = Node6.my_call '/do_static'
- expect(r.body[0]).to eq 'VAL 6'
- expect(r.headers['Content-type']).to eq 'text/static'
- end
-
- it "redirect should work" do
- r = Node0.my_call '/do_redirect'
- expect(r.status).to eq 302
- expect(r.headers['location']).to eq Node0.r(:do_partial,1,2,3)
- end
-
- it "no_layout! should be inherited" do
- expect(Node5.layout).to be_nil
- end
-
- it "cli_vals should be inherited and extended" do
- r = Node5.my_call '/index'
- vars = YAML.load r.body[0]
- expect(vars).to eq ['js0','js1','js3','jsx','css0','css1','css2']
- expect(vars[7]).to be_nil
- end
-
- it "cli_vals should be extended at method level" do
- r = Node4.my_call '/more'
- vars = YAML.load r.body[0]
- expect(vars).to eq ['js0','js1','js2']
- expect(vars[3]).to be_nil
- end
-
- it "cli_vals should be untouched" do
- r = Node4.my_call '/index'
- vars = YAML.load r.body[0]
- expect(vars).to eq ['js0','js1']
- expect(vars[2]).to be_nil
- r = Node5.my_call '/index'
- vars = YAML.load r.body[0]
- expect(vars).to eq ['js0','js1','js3','jsx','css0','css1','css2']
- expect(vars[7]).to be_nil
- end
-
- it "ext definition and file engine should work" do
- r = Node0.my_call '/xml_file'
- expect(r.body[0]).to eq "<xml>file<\/xml>\n"
- expect(r.headers['Content-type']).to eq 'application/xml'
- r = Node0.my_call '/plain_file'
- expect(r.body[0]).to eq "plain file\n"
- expect(r.headers['Content-type']).to eq 'text/plain'
- end
-
- it "no view no layout should work as well" do
- r = Node0.my_call '/no_view_no_layout'
- expect(r.body[0]).to eq "hello world"
- end
-
- it "haml engine should work" do
- Node0.app.opt! :engines_cache_enabled, false
- r = Node0.my_call '/engines/haml'
- expect(r.body[0]).to eq "<h1>Hello world</h1>\n"
- Node0.app.opt! :engines_cache_enabled, true
- r = Node0.my_call '/engines/haml'
- expect(r.body[0]).to eq "<h1>Hello world</h1>\n"
- end
-
- it "sass engine should work" do
- Node0.app.opt! :engines_cache_enabled, true
- r = Node0.my_call '/engines/sass'
- expect(r.body[0]).to eq "vbar{width:80%;height:23px}vbar ul{list-style-type:none}vbar li{float:left}vbar li a{font-weight:bold}\n"
- Node0.app.opt! :engines_cache_enabled, false
- r = Node0.my_call '/engines/sass'
- expect(r.body[0]).to eq "vbar{width:80%;height:23px}vbar ul{list-style-type:none}vbar li{float:left}vbar li a{font-weight:bold}\n"
- end
-
- it "view_base_path! should work" do
- r = Node7.my_call '/view_path'
- h = YAML.load r.body[0]
- expect(h[:view]).to eq File.join(Node7.app.opt(:root), 'alt','do_render')
- end
-
- it "layout_base_path! should work" do
- r = Node7.my_call '/view_path'
- h = YAML.load r.body[0]
- expect(h[:layout]).to eq File.join(Node7.app.opt(:root), 'alt','layout','default')
- end
-
- it "debug out should work" do
- stderr0= $stderr.dup
- stderrs = StringIO.new
- $stderr = stderrs
- begin
- APP.opt! :debug, true
- Node0.my_call '/hello'
- ensure
- $stderr = stderr0
- end
- expect(stderrs.string.include?('spec/data/view/node0/hello')).to be true
- end
+ it 'partial without hooks should work' do
+ Node3.before = 0
+ Node3.after = 0
+ expect(Node3.partial({ no_hooks: true }, :do_partial, 1, 2)).to eq 'partial_content'
+ expect(Node3.before).to eq 0
+ expect(Node3.after).to eq 0
+ end
+
+ it 'static pages should be generated' do
+ r = Node6.my_call '/do_static'
+ expect(r.body[0]).to eq 'VAL 1'
+ expect(r.headers['Content-type']).to eq 'text/static'
+ r = Node6.my_call '/do_static'
+ expect(r.body[0]).to eq 'VAL 1'
+ expect(r.headers['Content-type']).to eq 'text/static'
+ r = Node6.my_call '/do_static'
+ expect(r.body[0]).to eq 'VAL 1'
+ expect(r.headers['Content-type']).to eq 'text/static'
+ r = Node6.my_call '/no_static'
+ expect(r.body[0]).to eq 'VAL 4'
+ expect(r.headers['Content-type']).to eq 'text/static'
+ r = Node6.my_call '/do_static'
+ expect(r.body[0]).to eq 'VAL 1'
+ expect(r.headers['Content-type']).to eq 'text/static'
+ Node6.static! true, 0.000001
+ sleep 0.0001
+ r = Node6.my_call '/do_static'
+ expect(r.body[0]).to eq 'VAL 6'
+ expect(r.headers['Content-type']).to eq 'text/static'
+ end
+
+ it 'redirect should work' do
+ r = Node0.my_call '/do_redirect'
+ expect(r.status).to eq 302
+ expect(r.headers['location']).to eq Node0.r(:do_partial, 1, 2, 3)
+ end
+ it 'no_layout! should be inherited' do
+ expect(Node5.layout).to be_nil
end
+ it 'cli_vals should be inherited and extended' do
+ r = Node5.my_call '/index'
+ vars = YAML.load r.body[0]
+ expect(vars).to eq %w[js0 js1 js3 jsx css0 css1 css2]
+ expect(vars[7]).to be_nil
+ end
+
+ it 'cli_vals should be extended at method level' do
+ r = Node4.my_call '/more'
+ vars = YAML.load r.body[0]
+ expect(vars).to eq %w[js0 js1 js2]
+ expect(vars[3]).to be_nil
+ end
+
+ it 'cli_vals should be untouched' do
+ r = Node4.my_call '/index'
+ vars = YAML.load r.body[0]
+ expect(vars).to eq %w[js0 js1]
+ expect(vars[2]).to be_nil
+ r = Node5.my_call '/index'
+ vars = YAML.load r.body[0]
+ expect(vars).to eq %w[js0 js1 js3 jsx css0 css1 css2]
+ expect(vars[7]).to be_nil
+ end
+
+ it 'ext definition and file engine should work' do
+ r = Node0.my_call '/xml_file'
+ expect(r.body[0]).to eq "<xml>file<\/xml>\n"
+ expect(r.headers['Content-type']).to eq 'application/xml'
+ r = Node0.my_call '/plain_file'
+ expect(r.body[0]).to eq "plain file\n"
+ expect(r.headers['Content-type']).to eq 'text/plain'
+ end
+
+ it 'no view no layout should work as well' do
+ r = Node0.my_call '/no_view_no_layout'
+ expect(r.body[0]).to eq 'hello world'
+ end
+
+ it 'haml engine should work' do
+ Node0.app.opt! :engines_cache_enabled, false
+ r = Node0.my_call '/engines/haml'
+ expect(r.body[0]).to eq "<h1>Hello world</h1>\n"
+ Node0.app.opt! :engines_cache_enabled, true
+ r = Node0.my_call '/engines/haml'
+ expect(r.body[0]).to eq "<h1>Hello world</h1>\n"
+ end
+
+ it 'sass engine should work' do
+ Node0.app.opt! :engines_cache_enabled, true
+ r = Node0.my_call '/engines/sass'
+ expect(r.body[0]).to eq "vbar{width:80%;height:23px}vbar ul{list-style-type:none}vbar li{float:left}vbar li a{font-weight:bold}\n"
+ Node0.app.opt! :engines_cache_enabled, false
+ r = Node0.my_call '/engines/sass'
+ expect(r.body[0]).to eq "vbar{width:80%;height:23px}vbar ul{list-style-type:none}vbar li{float:left}vbar li a{font-weight:bold}\n"
+ end
+
+ it 'view_base_path! should work' do
+ r = Node7.my_call '/view_path'
+ h = YAML.load r.body[0]
+ expect(h[:view]).to eq File.join(Node7.app.opt(:root), 'alt', 'do_render')
+ end
+
+ it 'layout_base_path! should work' do
+ r = Node7.my_call '/view_path'
+ h = YAML.load r.body[0]
+ expect(h[:layout]).to eq File.join(Node7.app.opt(:root), 'alt', 'layout', 'default')
+ end
+
+ it 'debug out should work' do
+ stderr0 = $stderr.dup
+ stderrs = StringIO.new
+ $stderr = stderrs
+ begin
+ APP.opt! :debug, true
+ Node0.my_call '/hello'
+ ensure
+ $stderr = stderr0
+ end
+ expect(stderrs.string.include?('spec/data/view/node0/hello')).to be true
+ end
+ end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 9b2c452..257327e 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,19 +1,19 @@
#! /usr/bin/env ruby
begin
- require 'simplecov'
- SimpleCov.start do
- add_filter 'spec'
- end
+ require 'simplecov'
+ SimpleCov.start do
+ add_filter 'spec'
+ end
rescue LoadError
end
begin
- require 'coveralls'
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new [
- SimpleCov::Formatter::HTMLFormatter,
- Coveralls::SimpleCov::Formatter
- ]
+ require 'coveralls'
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new [
+ SimpleCov::Formatter::HTMLFormatter,
+ Coveralls::SimpleCov::Formatter
+ ]
rescue LoadError
end
@@ -24,206 +24,223 @@ require 'zorglub/engines/file'
require 'zorglub/engines/haml'
require 'zorglub/engines/sass'
-HASH_PROC = Proc.new { |path,obj| {:path=>path,:layout=>obj.layout,:view=>obj.view,:args=>obj.args,:map=>obj.map}.to_yaml }
-STATIC_PROC = Proc.new { |path,obj| ["VAL #{obj.value}",'text/static'] }
-RENDER_PROC = Proc.new { |path,obj|
- case obj.state
- when :layout
- "layout_start #{obj.content} layout_end"
- when :view
- ["view_content", 'text/view']
- when :partial
- ['partial_content','text/partial']
- else
- raise Exception.new
- end
+HASH_PROC = proc { |path, obj| { path: path, layout: obj.layout, view: obj.view, args: obj.args, map: obj.map }.to_yaml }
+STATIC_PROC = proc { |_path, obj| ["VAL #{obj.value}", 'text/static'] }
+RENDER_PROC = proc { |_path, obj|
+ case obj.state
+ when :layout
+ "layout_start #{obj.content} layout_end"
+ when :view
+ ['view_content', 'text/view']
+ when :partial
+ ['partial_content', 'text/partial']
+ else
+ raise Exception.new
+ end
}
APP_ROOT = File.join Dir.pwd, 'spec', 'data'
class Zorglub::Node
- def self.my_call uri
- call( {'PATH_INFO'=>uri} )
- end
- def self.my_call_i uri
- call( {'PATH_INFO'=>uri} ).body[0].to_i
- end
+ def self.my_call(uri)
+ call({ 'PATH_INFO' => uri })
+ end
+
+ def self.my_call_i(uri)
+ call({ 'PATH_INFO' => uri }).body[0].to_i
+ end
end
class Temp < Zorglub::Node
end
class Node0 < Zorglub::Node
- # default
- def index
- html
- end
- def hello
- no_layout!
- 'world'
- end
- def with_2args a1, a2
- end
- def do_render
- engine! 'real'
- end
- def do_content_type
- engine! 'real'
- response.headers['Content-Type'] = 'text/mine'
- end
- def do_partial a1, a2
- engine! 'real'
- end
- def other_view
- engine! 'real'
- view! r('do_partial')
- end
- def do_redirect
- redirect r(:do_partial,1,2,3)
- end
- def xml_file
- no_layout!
- engine! :file
- ext! 'xml'
- mime! 'application/xml'
- end
- def plain_file
- no_layout!
- engine! :file
- ext! 'txt'
- mime! 'text/plain'
- end
- def no_view_no_layout
- no_view!
- no_layout!
- 'hello world'
- end
- def engines name
- no_layout!
- case name
- when 'haml'
- engine! :haml
- when 'sass'
- engine! :sass
- end
+ # default
+ def index
+ html
+ end
+
+ def hello
+ no_layout!
+ 'world'
+ end
+
+ def with_2args(arg1, arg2); end
+
+ def do_render
+ engine! 'real'
+ end
+
+ def do_content_type
+ engine! 'real'
+ response.headers['Content-Type'] = 'text/mine'
+ end
+
+ def do_partial(_arg1, _arg2)
+ engine! 'real'
+ end
+
+ def other_view
+ engine! 'real'
+ view! r('do_partial')
+ end
+
+ def do_redirect
+ redirect r(:do_partial, 1, 2, 3)
+ end
+
+ def xml_file
+ no_layout!
+ engine! :file
+ ext! 'xml'
+ mime! 'application/xml'
+ end
+
+ def plain_file
+ no_layout!
+ engine! :file
+ ext! 'txt'
+ mime! 'text/plain'
+ end
+
+ def no_view_no_layout
+ no_view!
+ no_layout!
+ 'hello world'
+ end
+
+ def engines(name)
+ no_layout!
+ case name
+ when 'haml'
+ engine! :haml
+ when 'sass'
+ engine! :sass
end
+ end
end
class Node1 < Zorglub::Node
- layout! 'layout-1'
- engine! 'engine-1'
- def index
- layout! 'main'
- engine! 'engine-2'
- end
+ layout! 'layout-1'
+ engine! 'engine-1'
+ def index
+ layout! 'main'
+ engine! 'engine-2'
+ end
end
class Node2 < Node1
- # inherited from Node1
+ # inherited from Node1
end
class Node3 < Zorglub::Node
- @before=0
- @after=0
- class << self
- attr_accessor :before, :after
- def post obj
- @after +=1
- end
- end
- before_all do |node|
- Node3.before +=1
- end
- after_all Node3.method(:post)
- layout! 'layout-2'
- engine! 'engine-2'
- def index
- Node3.before-Node3.after
- end
- def do_partial a1, a2
- view! Node0.r('do_partial')
- engine! 'real'
- end
+ @before = 0
+ @after = 0
+ class << self
+ attr_accessor :before, :after
+
+ def post(_obj)
+ @after += 1
+ end
+ end
+ before_all do |_node|
+ Node3.before += 1
+ end
+ after_all Node3.method(:post)
+ layout! 'layout-2'
+ engine! 'engine-2'
+ def index
+ Node3.before - Node3.after
+ end
+
+ def do_partial(_arg1, _arg2)
+ view! Node0.r('do_partial')
+ engine! 'real'
+ end
end
class Node8 < Node3
end
class Node4 < Zorglub::Node
- no_layout!
- cli_val :js,'js0'
- cli_val :js,'js1'
- def index
- cli_val(:js).to_yaml
- end
- def more
- cli_val :js,'js2'
- cli_val(:js).to_yaml
- end
+ no_layout!
+ cli_val :js, 'js0'
+ cli_val :js, 'js1'
+
+ def index
+ cli_val(:js).to_yaml
+ end
+
+ def more
+ cli_val :js, 'js2'
+ cli_val(:js).to_yaml
+ end
end
class Node5 < Node4
- cli_val :js, 'js3'
- cli_val :css, 'css0', 'css1'
- # no_layout! inherited from Node4
- def index
- js = cli_val(:js,'jsx')
- cli_val(:css, 'css0', 'css1','css2')
- css = cli_val :css
- js.concat(css).to_yaml
- end
+ cli_val :js, 'js3'
+ cli_val :css, 'css0', 'css1'
+ # no_layout! inherited from Node4
+ def index
+ js = cli_val(:js, 'jsx')
+ cli_val(:css, 'css0', 'css1', 'css2')
+ css = cli_val :css
+ js.concat(css).to_yaml
+ end
end
class Node6 < Zorglub::Node
- @static_cpt=0
- class << self
- attr_accessor :static_cpt
- end
- attr_reader :value
- static! true, 5
- def no_static
- static! false
- engine! 'static'
- view! Node0.r('do_render')
- Node6.static_cpt+=1
- @value = Node6.static_cpt
- end
- def do_static
- engine! 'static'
- view! Node0.r('do_render')
- Node6.static_cpt+=1
- @value = Node6.static_cpt
- end
+ @static_cpt = 0
+ class << self
+ attr_accessor :static_cpt
+ end
+ attr_reader :value
+
+ static! true, 5
+ def no_static
+ static! false
+ engine! 'static'
+ view! Node0.r('do_render')
+ Node6.static_cpt += 1
+ @value = Node6.static_cpt
+ end
+
+ def do_static
+ engine! 'static'
+ view! Node0.r('do_render')
+ Node6.static_cpt += 1
+ @value = Node6.static_cpt
+ end
end
class Node7 < Zorglub::Node
- layout_base_path! File.join APP_ROOT, 'alt','layout'
- view_base_path! File.join APP_ROOT, 'alt'
- def view_path
- view! 'do_render'
- end
+ layout_base_path! File.join APP_ROOT, 'alt', 'layout'
+ view_base_path! File.join APP_ROOT, 'alt'
+ def view_path
+ view! 'do_render'
+ end
end
APP = Zorglub::App.new do
- register_engine! :file, nil, Zorglub::Engines::File.method(:proc)
- register_engine! :haml, 'haml', Zorglub::Engines::Haml.method(:proc)
- register_engine! :sass, 'scss', Zorglub::Engines::Sass.method(:proc)
- register_engine! 'default', nil, HASH_PROC
- register_engine! 'engine-1', 'spec', HASH_PROC
- register_engine! 'engine-2', 'spec', HASH_PROC
- register_engine! 'real', nil, RENDER_PROC
- register_engine! 'static', nil, STATIC_PROC
- opt! :root, APP_ROOT
- opt! :engine, 'default'
- map '/node0', Node0
- map '/node1', Node1
- map '/node3', Node3
- map '/node4', Node4
- map '/node5', Node5
- map '/node6', Node6
- map '/node7', Node7
- map '/node8', Node8
+ register_engine! :file, nil, Zorglub::Engines::File.method(:proc)
+ register_engine! :haml, 'haml', Zorglub::Engines::Haml.method(:proc)
+ register_engine! :sass, 'scss', Zorglub::Engines::Sass.method(:proc)
+ register_engine! 'default', nil, HASH_PROC
+ register_engine! 'engine-1', 'spec', HASH_PROC
+ register_engine! 'engine-2', 'spec', HASH_PROC
+ register_engine! 'real', nil, RENDER_PROC
+ register_engine! 'static', nil, STATIC_PROC
+ opt! :root, APP_ROOT
+ opt! :engine, 'default'
+ map '/node0', Node0
+ map '/node1', Node1
+ map '/node3', Node3
+ map '/node4', Node4
+ map '/node5', Node5
+ map '/node6', Node6
+ map '/node7', Node7
+ map '/node8', Node8
end
class Node2
- map APP, '/node2'
+ map APP, '/node2'
end