spec/grape_rabl_spec.rb in grape-rabl-0.2.0 vs spec/grape_rabl_spec.rb in grape-rabl-0.2.1
- old
+ new
@@ -6,44 +6,79 @@
end
before do
subject.format :json
subject.formatter :json, Grape::Formatter::Rabl
+ subject.helpers MyHelper
end
def app
subject
end
it 'should work without rabl template' do
subject.get("/home") {"Hello World"}
get "/home"
- last_response.body.should == "Hello World"
+ last_response.body.should == "\"Hello World\""
end
it "should raise error about root directory" do
- subject.get("/home", :rabl => true){}
- get "/home"
- last_response.status.should == 500
- last_response.body.should include "Use Rack::Config to set 'api.tilt.root' in config.ru"
+ begin
+ subject.get("/home", :rabl => true){}
+ get "/home"
+ rescue Exception => e
+ e.message.should include "Use Rack::Config to set 'api.tilt.root' in config.ru"
+ end
end
-
context "titl root is setup" do
before do
subject.before { env["api.tilt.root"] = "#{File.dirname(__FILE__)}/views" }
end
+ describe "helpers" do
+ it "should execute helper" do
+ subject.get("/home", :rabl => "helper") { @user = OpenStruct.new }
+ get "/home"
+ last_response.body.should == "{\"user\":{\"helper\":\"my_helper\"}}"
+ end
+ end
+
+ describe "#render" do
+ before do
+ subject.get("/home", :rabl => "user") do
+ @user = OpenStruct.new(:name => "LTe")
+ render :rabl => "admin"
+ end
+
+ subject.get("/about", :rabl => "user") do
+ @user = OpenStruct.new(:name => "LTe")
+ end
+ end
+
+ it "renders template passed as argument to reneder method" do
+ get("/home")
+ last_response.body.should == '{"admin":{"name":"LTe"}}'
+ end
+
+ it "does not save rabl options after called #render method" do
+ get("/home")
+ get("/about")
+ last_response.body.should == '{"user":{"name":"LTe","project":null}}'
+ end
+ end
+
+
it "should respond with proper content-type" do
subject.get("/home", :rabl => "user"){}
get("/home")
last_response.headers["Content-Type"].should == "application/json"
end
it "should not raise error about root directory" do
- subject.get("/home", :rabl => true){}
+ subject.get("/home", :rabl => "user"){}
get "/home"
- last_response.status.should == 500
+ last_response.status.should == 200
last_response.body.should_not include "Use Rack::Config to set 'api.tilt.root' in config.ru"
end
["user", "user.rabl"].each do |rabl_option|
it "should render rabl template (#{rabl_option})" do