summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--spec/app_spec.rb24
-rw-r--r--spec/node_spec.rb94
-rw-r--r--spec/spec_helper.rb36
3 files changed, 76 insertions, 78 deletions
diff --git a/spec/app_spec.rb b/spec/app_spec.rb
index 0e8375b..fb2adbd 100644
--- a/spec/app_spec.rb
+++ b/spec/app_spec.rb
@@ -1,43 +1,43 @@
# -*- coding: UTF-8 -*-
-#
+
require 'spec_helper'
-#
+
describe Zorglub do
- #
+
describe Zorglub::App do
- #
+
it "map should add a mapped node" do
APP.at("/temp").should be_nil
APP.map "/temp", Temp
APP.at("/temp").should be Temp
end
- #
+
it "delete should delete a mapped node" do
APP.at("/temp").should be Temp
APP.delete "/temp"
APP.at("/temp").should be_nil
end
- #
+
it "at should return mapped node" do
APP.at("/node1").should be Node1
end
- #
+
it "at should return nil if no Node mapped" do
APP.at("/none").should be_nil
end
- #
+
it "to should return path to node" do
APP.to(Node1).should == "/node1"
end
- #
+
it "to should return nil if not an existing Node" do
APP.to(nil).should be_nil
end
- #
+
it "to_hash should return a correct hash" do
APP.to_hash["/node1"].should be Node1
end
- #
+
end
- #
+
end
diff --git a/spec/node_spec.rb b/spec/node_spec.rb
index 67bd70f..ec05136 100644
--- a/spec/node_spec.rb
+++ b/spec/node_spec.rb
@@ -1,85 +1,85 @@
# -*- 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
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
Node0.engine.should == Node0.app.opt(:engine)
end
- #
+
it "layout should return default Node's layout" do
Node0.layout.should == Node0.app.opt(:layout)
end
- #
+
it "engine should return class defined Node's engine" do
Node1.engine.should == "engine-1"
Node3.engine.should == "engine-2"
end
- #
+
it "layout should return class defined Node's layout" do
Node1.layout.should == "layout-1"
Node3.layout.should == "layout-2"
end
- #
+
it "engine should return engine inherited from Node2" do
Node2.engine.should == "engine-1"
end
- #
+
it "layout should return layout inherited from Node2" do
Node2.layout.should == "layout-1"
end
- #
+
it "r should build a well formed path" do
Node1.r(1,'arg2',"some").should == "/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]
h[:map].should == '/node0'
end
- #
+
it "should return err404 response when no method found" do
Node0.respond_to?('noresponse').should be_falsey
r = Node0.my_call '/noresponse'
r.status.should == 404
end
- #
+
it "simple method should respond" do
r = Node0.my_call '/hello'
r.status.should == 200
r.body[0].should == 'world'
end
- #
+
it "instance level args should work" do
r = Node0.my_call '/with_2args/1/2'
h = YAML.load r.body[0]
h[:args][0].should == '1'
h[:args][1].should == '2'
end
- #
+
it "should raise error when too much arguments" do
lambda{ r = Node0.my_call '/with_2args/1/2/3' }.should raise_error ArgumentError
end
- #
+
it "layout proc, method level layout and engine definitions should work" do
r = Node0.my_call '/index'
r.status.should == 200
@@ -90,7 +90,7 @@ describe Zorglub do
h[:layout].should == ly
h[:view].should == vu
end
- #
+
it "layout proc, method level layout and engine definitions should work" do
r = Node1.my_call '/index'
r.status.should == 200
@@ -101,7 +101,7 @@ describe Zorglub do
h[:layout].should == ly
h[:view].should == vu
end
- #
+
it "before_all hook should work" do
Node3.before = 0
Node3.after = 0
@@ -113,7 +113,7 @@ describe Zorglub do
Node3.my_call '/index'
Node3.before.should == 3
end
- #
+
it "after_all hook should work" do
Node3.before = 0
Node3.after = 0
@@ -125,7 +125,7 @@ describe Zorglub do
Node3.my_call '/index'
Node3.after.should == 3
end
- #
+
it "inherited before_all hook should work" do
Node3.before = 0
Node3.after = 0
@@ -137,7 +137,7 @@ describe Zorglub do
Node8.my_call '/index'
Node3.before.should == 3
end
- #
+
it "inherited after_all hook should work" do
Node3.before = 0
Node3.after = 0
@@ -149,36 +149,36 @@ describe Zorglub do
Node8.my_call '/index'
Node3.after.should == 3
end
- #
+
it "should find view and layout and render them" do
r = Node0.my_call '/do_render'
r.status.should == 200
r.body[0].should == "layout_start view_content layout_end"
end
- #
+
it "default mime-type should be text/html" do
r = Node0.my_call '/index'
r.header['Content-type'].should == 'text/html'
end
- #
+
it "should be able to override mime-type" do
r = Node0.my_call '/do_render'
r.header['Content-type'].should == 'text/view'
end
- #
+
it "should be able to override through rack response mime-type" do
r = Node0.my_call '/do_content_type'
r.header['Content-type'].should == 'text/mine'
end
- #
+
it "partial should render correctly" do
Node0.partial({},:do_partial, 1, 2).should == 'partial_content'
end
- #
+
it "method level view should work" do
Node0.partial({},:other_view).should == 'partial_content'
end
- #
+
it "partial with hooks should be default" do
Node3.before = 0
Node3.after = 0
@@ -186,7 +186,7 @@ describe Zorglub do
Node3.before.should == 1
Node3.after.should == 1
end
- #
+
it "partial without hooks should work" do
Node3.before = 0
Node3.after = 0
@@ -194,7 +194,7 @@ describe Zorglub do
Node3.before.should == 0
Node3.after.should == 0
end
- #
+
it "static pages should be generated" do
r = Node6.my_call '/do_static'
r.body[0].should == 'VAL 1'
@@ -217,31 +217,31 @@ describe Zorglub do
r.body[0].should == 'VAL 6'
r.header['Content-type'].should == 'text/static'
end
- #
+
it "redirect should work" do
r = Node0.my_call '/do_redirect'
r.status.should == 302
r.header['location'].should == Node0.r(:do_partial,1,2,3)
end
- #
+
it "no_layout! should be inherited" do
Node5.layout.should be_nil
end
- #
+
it "cli_vals should be inherited and extended" do
r = Node5.my_call '/index'
vars = YAML.load r.body[0]
vars.should == ['js0','js1','js3','jsx','css0','css1','css2']
vars[7].should be_nil
end
- #
+
it "cli_vals should be extended at method level" do
r = Node4.my_call '/more'
vars = YAML.load r.body[0]
vars.should == ['js0','js1','js2']
vars[3].should be_nil
end
- #
+
it "cli_vals should be untouched" do
r = Node4.my_call '/index'
vars = YAML.load r.body[0]
@@ -252,7 +252,7 @@ describe Zorglub do
vars.should == ['js0','js1','js3','jsx','css0','css1','css2']
vars[7].should be_nil
end
- #
+
it "ext definition and file engine should work" do
r = Node0.my_call '/xml_file'
r.body[0].should == "<xml>file<\/xml>\n"
@@ -261,12 +261,12 @@ describe Zorglub do
r.body[0].should == "plain file\n"
r.header['Content-type'].should == 'text/plain'
end
- #
+
it "no view no layout should work as well" do
r = Node0.my_call '/no_view_no_layout'
r.body[0].should == "hello world"
end
- #
+
it "haml engine should work" do
Node0.app.opt! :engines_cache_enabled, false
r = Node0.my_call '/engines/haml'
@@ -275,7 +275,7 @@ describe Zorglub do
r = Node0.my_call '/engines/haml'
r.body[0].should == "<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'
@@ -284,24 +284,24 @@ describe Zorglub do
r = Node0.my_call '/engines/sass'
r.body[0].should == "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]
h[:view].should == 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]
h[:layout].should == File.join(Node7.app.opt(:root), 'alt','layout','default')
end
- #
+
it "debug out should work" do
APP.opt! :debug, true
Node0.my_call '/hello'
end
- #
+
end
- #
+
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index eea6bfe..fd96d17 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,9 +1,8 @@
#! /usr/bin/env ruby
-#
+
begin
require 'coveralls'
Coveralls.wear!
- #
rescue LoadError
end
begin
@@ -13,14 +12,14 @@ begin
end
rescue LoadError
end
-#
+
require 'yaml'
-#
+
require 'zorglub'
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|
@@ -36,16 +35,16 @@ RENDER_PROC = Proc.new { |path,obj|
end
}
APP_ROOT = File.join Dir.pwd, 'spec', 'data'
-#
+
class Zorglub::Node
def self.my_call uri
call( {'PATH_INFO'=>uri} )
end
end
-#
+
class Temp < Zorglub::Node
end
-#
+
class Node0 < Zorglub::Node
# default
def index
@@ -101,7 +100,7 @@ class Node0 < Zorglub::Node
end
end
end
-#
+
class Node1 < Zorglub::Node
layout! 'layout-1'
engine! 'engine-1'
@@ -110,11 +109,11 @@ class Node1 < Zorglub::Node
engine! 'engine-2'
end
end
-#
+
class Node2 < Node1
# inherited from Node1
end
-#
+
class Node3 < Zorglub::Node
@before=0
@after=0
@@ -138,10 +137,10 @@ class Node3 < Zorglub::Node
engine! 'real'
end
end
-#
+
class Node8 < Node3
end
-#
+
class Node4 < Zorglub::Node
no_layout!
cli_val :js,'js0'
@@ -154,7 +153,7 @@ class Node4 < Zorglub::Node
cli_val(:js).to_yaml
end
end
-#
+
class Node5 < Node4
cli_val :js, 'js3'
cli_val :css, 'css0', 'css1'
@@ -166,7 +165,7 @@ class Node5 < Node4
js.concat(css).to_yaml
end
end
-#
+
class Node6 < Zorglub::Node
@static_cpt=0
class << self
@@ -188,7 +187,7 @@ class Node6 < Zorglub::Node
@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'
@@ -196,7 +195,7 @@ class Node7 < Zorglub::Node
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)
@@ -217,8 +216,7 @@ APP = Zorglub::App.new do
map '/node7', Node7
map '/node8', Node8
end
-#
+
class Node2
map APP, '/node2'
end
-#