1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
require 'spec_helper'
describe Gon do
describe '.jbuilder' do
context 'render jbuilder templates' do
before do
Gon.clear
controller.instance_variable_set('@objects', objects)
end
let(:controller) { ActionController::Base.new }
let(:objects) { [1, 2] }
it 'render json from jbuilder template' do
Gon.jbuilder 'spec/test_data/sample.json.jbuilder', :controller => controller
expect(Gon.objects.length).to eq(2)
end
it 'render json from jbuilder template with locals' do
Gon.jbuilder 'spec/test_data/sample_with_locals.json.jbuilder',
:controller => controller,
:locals => { :some_local => 1234, :some_complex_local => OpenStruct.new(:id => 1234) }
expect(Gon.some_local).to eq(1234)
expect(Gon.some_complex_local_id).to eq(1234)
end
it 'render json from jbuilder template with locals' do
Gon.jbuilder 'spec/test_data/sample_with_helpers.json.jbuilder', :controller => controller
expect(Gon.date).to eq('about 6 hours')
end
it 'render json from jbuilder template with controller methods' do
pending
controller.instance_eval {
def private_controller_method
puts 'gon test helper works'
end
private :private_controller_method
}
Gon.jbuilder 'spec/test_data/sample_with_controller_method.json.jbuilder', :controller => controller
expect(Gon.date).to eq('about 6 hours')
end
it 'render json from jbuilder template with a partial' do
controller.view_paths << 'spec/test_data'
Gon.jbuilder 'spec/test_data/sample_with_partial.json.jbuilder', :controller => controller
expect(Gon.objects.length).to eq(2)
end
end
it 'should raise error if you use gon.jbuilder without requiring jbuilder gem' do
Gon.send(:remove_const, :Jbuilder)
expect { Gon.jbuilder 'some_path' }.to raise_error
load 'jbuilder.rb'
load 'gon/jbuilder.rb'
end
end
def request
@request ||= double 'request', :env => {}
end
end
|