test/integration.rb in cuba-0.2.0 vs test/integration.rb in cuba-0.3.0
- old
+ new
@@ -1,4 +1,95 @@
+$:.unshift(File.expand_path("../lib", File.dirname(__FILE__)))
+require "cuba"
+
+prepare { Cuba.reset! }
+
+test "resetting" do
+ old = Cuba.app
+ assert old.object_id == Cuba.app.object_id
+
+ Cuba.reset!
+ assert old.object_id != Cuba.app.object_id
+end
+
+class Middle
+ def initialize(app, first, second, &block)
+ @app, @first, @second, @block = app, first, second, block
+ end
+
+ def call(env)
+ env["m.first"] = @first
+ env["m.second"] = @second
+ env["m.block"] = @block.call
+
+ @app.call(env)
+ end
+end
+
+test "use passes in the arguments and block" do
+ Cuba.use Middle, "First", "Second" do
+ "this is the block"
+ end
+
+ Cuba.define do
+ on get do
+ on path("hello") do
+ "Default"
+ end
+ end
+ end
+
+ env = { "REQUEST_METHOD" => "GET", "PATH_INFO" => "/hello",
+ "SCRIPT_NAME" => "/" }
+
+ Cuba.call(env)
+
+ assert "First" == env["m.first"]
+ assert "Second" == env["m.second"]
+ assert "this is the block" == env["m.block"]
+end
+
+test "reset and use" do
+ Cuba.use Middle, "First", "Second" do
+ "this is the block"
+ end
+
+ Cuba.define do
+ on get do
+ on path("hello") do
+ res.write "Default"
+ end
+ end
+ end
+
+ Cuba.reset!
+
+ Cuba.use Middle, "1", "2" do
+ "3"
+ end
+
+ Cuba.define do
+ on get do
+ on path("hello") do
+ res.write "2nd Default"
+ end
+ end
+ end
+
+ env = { "REQUEST_METHOD" => "GET", "PATH_INFO" => "/hello",
+ "SCRIPT_NAME" => "/" }
+
+ status, headers, resp = Cuba.call(env)
+
+ assert 200 == status
+ assert "text/html" == headers["Content-Type"]
+ assert ["2nd Default"] == resp.body
+
+ assert "1" == env["m.first"]
+ assert "2" == env["m.second"]
+ assert "3" == env["m.block"]
+end
+
test "examples" do
`cd example && rake -I../lib`
assert $?.exitstatus == 0
-end
+end
\ No newline at end of file