Basic filter implementation, similar to Sinatra.

This commit is contained in:
Werner 2016-02-07 09:49:38 -04:30
parent 4ee3ce4c00
commit ab711c22fd
2 changed files with 77 additions and 0 deletions

View file

@ -0,0 +1,25 @@
require "../spec_helper"
describe "Kemal::Middleware::Filters" do
it "executes code before home request" do
test_filter = FilterTest.new
test_filter.modified = "false"
filter = Kemal::Middleware::Filter.new
filter.add :before, "/greetings", {} of Symbol => String { test_filter.modified = "true" }
kemal = Kemal::RouteHandler.new
kemal.add_route "GET", "/greetings" { test_filter.modified }
test_filter.modified.should eq("false")
request = HTTP::Request.new("GET", "/greetings")
create_request_and_return_io(filter, request)
io_with_context = create_request_and_return_io(kemal, request)
client_response = HTTP::Client::Response.from_io(io_with_context, decompress: false)
client_response.body.should eq("true")
end
end
class FilterTest
property modified
end