spec/grape_rabl_spec.rb in grape-rabl-0.4.1 vs spec/grape_rabl_spec.rb in grape-rabl-0.4.2
- old
+ new
@@ -4,46 +4,47 @@
subject do
Class.new(Grape::API)
end
before do
- subject.format :json
+ subject.default_format :json
subject.formatter :json, Grape::Formatter::Rabl
+ subject.formatter :xml, 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\""
+ expect(last_response.body).to eq('"Hello World"')
end
it 'should raise error about root directory' do
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"
+ expect(e.message).to include "Use Rack::Config to set 'api.tilt.root' in config.ru"
end
end
- context 'titl root is setup' do
+ context 'titl root is setup' do
let(:parsed_response) { JSON.parse(last_response.body) }
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'
- parsed_response.should == JSON.parse("{\"user\":{\"helper\":\"my_helper\"}}")
+ expect(parsed_response).to eq(JSON.parse('{"user":{"helper":"my_helper"}}'))
end
end
describe '#render' do
before do
@@ -73,37 +74,37 @@
end
end
it 'renders template passed as argument to render method' do
get('/home')
- parsed_response.should == JSON.parse('{"admin":{"name":"LTe"}}')
+ expect(parsed_response).to eq(JSON.parse('{"admin":{"name":"LTe"}}'))
end
it 'renders admin template' do
get('/admin/1')
- parsed_response.should == JSON.parse('{"admin":{"name":"LTe"}}')
+ expect(parsed_response).to eq(JSON.parse('{"admin":{"name":"LTe"}}'))
end
it 'renders user template' do
get('/admin/2')
- parsed_response.should == JSON.parse('{"user":{"name":"LTe","project":null}}')
+ expect(parsed_response).to eq(JSON.parse('{"user":{"name":"LTe","project":null}}'))
end
it 'renders template passed as argument to render method with locals' do
get('/home-detail')
- parsed_response.should == JSON.parse('{"admin":{"name":"LTe","details":"amazing detail"}}')
+ expect(parsed_response).to eq(JSON.parse('{"admin":{"name":"LTe","details":"amazing detail"}}'))
end
it 'renders with locals without overriding template' do
get('/about-detail')
- parsed_response.should == JSON.parse('{"user":{"name":"LTe","details":"just a user","project":null}}')
+ expect(parsed_response).to eq(JSON.parse('{"user":{"name":"LTe","details":"just a user","project":null}}'))
end
it 'does not save rabl options after called #render method' do
get('/home')
get('/about')
- parsed_response.should == JSON.parse('{"user":{"name":"LTe","project":null}}')
+ expect(parsed_response).to eq(JSON.parse('{"user":{"name":"LTe","project":null}}'))
end
it 'does not modify endpoint options' do
get '/home'
expect(last_request.env['api.endpoint'].options[:route_options][:rabl]).to eq 'user'
@@ -111,38 +112,38 @@
end
it 'should respond with proper content-type' do
subject.get('/home', rabl: 'user') {}
get('/home')
- last_response.headers['Content-Type'].should == 'application/json'
+ expect(last_response.headers['Content-Type']).to eq('application/json')
end
it 'should not raise error about root directory' do
subject.get('/home', rabl: 'user') {}
get '/home'
- last_response.status.should eq 200
- last_response.body.should_not include "Use Rack::Config to set 'api.tilt.root' in config.ru"
+ expect(last_response.status).to eq 200
+ expect(last_response.body).not_to 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
subject.get('/home', rabl: rabl_option) do
@user = OpenStruct.new(name: 'LTe', email: 'email@example.com')
@project = OpenStruct.new(name: 'First')
end
get '/home'
- parsed_response.should == JSON.parse('{"user":{"name":"LTe","email":"email@example.com","project":{"name":"First"}}}')
+ expect(parsed_response).to eq(JSON.parse('{"user":{"name":"LTe","email":"email@example.com","project":{"name":"First"}}}'))
end
end
describe 'template cache' do
before do
- @views_dir = FileUtils.mkdir_p("#{File.expand_path("..", File.dirname(__FILE__))}/tmp")[0]
+ @views_dir = FileUtils.mkdir_p("#{File.expand_path('..', File.dirname(__FILE__))}/tmp")[0]
@template = "#{@views_dir}/user.rabl"
FileUtils.cp("#{File.dirname(__FILE__)}/views/user.rabl", @template)
- subject.before { env['api.tilt.root'] = "#{File.expand_path("..", File.dirname(__FILE__))}/tmp" }
+ subject.before { env['api.tilt.root'] = "#{File.expand_path('..', File.dirname(__FILE__))}/tmp" }
subject.get('/home', rabl: 'user') do
@user = OpenStruct.new(name: 'LTe', email: 'email@example.com')
@project = OpenStruct.new(name: 'First')
end
end
@@ -155,27 +156,47 @@
it 'should serve from cache if cache_template_loading' do
Grape::Rabl.configure do |config|
config.cache_template_loading = true
end
get '/home'
- last_response.status.should be == 200
+ expect(last_response.status).to eq(200)
old_response = last_response.body
open(@template, 'a') { |f| f << 'node(:test) { "test" }' }
get '/home'
- last_response.status.should be == 200
+ expect(last_response.status).to eq(200)
new_response = last_response.body
- old_response.should == new_response
+ expect(old_response).to eq(new_response)
end
- it 'should serve new template if cache_template_loading' do
+ it 'should maintain different cached templates for different formats' do
+ Grape::Rabl.configure do |config|
+ config.cache_template_loading = true
+ end
get '/home'
- last_response.status.should be == 200
+ expect(last_response.status).to eq(200)
+ json_response = last_response.body
+ get '/home.xml'
+ expect(last_response.status).to eq(200)
+ xml_response = last_response.body
+ expect(json_response).not_to eq(xml_response)
+ open(@template, 'a') { |f| f << 'node(:test) { "test" }' }
+ get '/home.xml'
+ expect(last_response.status).to eq(200)
+ expect(last_response.body).to eq(xml_response)
+ get '/home.json'
+ expect(last_response.status).to eq(200)
+ expect(last_response.body).to eq(json_response)
+ end
+
+ it 'should serve new template unless cache_template_loading' do
+ get '/home'
+ expect(last_response.status).to eq(200)
old_response = last_response.body
open(@template, 'a') { |f| f << 'node(:test) { "test" }' }
get '/home'
- last_response.status.should be == 200
+ expect(last_response.status).to eq(200)
new_response = last_response.body
- old_response.should_not == new_response
+ expect(old_response).not_to eq(new_response)
end
end
end
end