Sha256: 87046bd1c4e2fdfd74c67edb72c9721abc3c24a12df741a307d588d5c441dfc8

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

$:.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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cuba-0.3.0 test/integration.rb