require 'spec_helper' module Travis::Api::App::Responders describe Json do class MyJson < Json end let(:request) { stub 'request', params: {} } let(:endpoint) { stub 'endpoint', request: request, content_type: nil } let(:resource) { stub 'resource' } let(:accept) { stub 'accept entry', version: '2', params: {} } let(:options) { { :accept => accept} } let(:json) { MyJson.new(endpoint, resource, options) } context 'with resource not associated with Api data class' do it 'returns nil result' do json.apply.should be_nil end end context 'with resource being' do context 'a Hash instance' do let(:resource) { { foo: 'bar' } } it 'returns resource converted to_json' do json.apply.should == { foo: 'bar' } end end context 'nil' do let(:resource) { nil } it 'responds with 404' do json.apply?.should be_falsey json.apply.should be_falsey end end end context 'with resource associated with Api data class' do let(:builder) { stub 'builder', data: { foo: 'bar' } } let(:builder_class) { stub 'builder class', new: builder } before do json.stubs :builder => builder_class end it 'returns proper data converted to json' do json.apply.should == { foo: 'bar' } end end end end