Sha256: 8516e2ef2fd6eeb7f0c2d2c7892f435e4f961bad529ee7a847e5538dc329d64c

Contents?: true

Size: 1.46 KB

Versions: 1

Compression:

Stored size: 1.46 KB

Contents

require 'spec_helper'

shared_examples 'valid result' do
  it { expect(result.count).to eq(11) }

  describe '#empty?' do
    it { expect(result).to respond_to(:empty?) }
    it { expect(result.empty?).to eq(false) }
  end

  describe '#each' do
    it { expect(result).to respond_to(:each) }
    it 'returns just OData4::Entities of the right type' do
      result.each do |entity|
        expect(entity).to be_a(OData4::Entity)
        expect(entity.type).to eq('Product')
      end
    end
  end
end

describe OData4::Query::Result, vcr: {cassette_name: 'query/result_specs'} do
  before(:example) do
    OData4::Service.open('http://services.odata.org/V4/OData/OData.svc', name: 'ODataDemo')
  end

  let(:entity_set) { OData4::ServiceRegistry['ODataDemo']['Products'] }
  # let(:subject) { entity_set.query.execute }

  let(:response) do
    response = double('response')
    allow(response).to receive_messages(
      headers: { 'Content-Type' => content_type },
      body: response_body
    )
    response
  end
  let(:result) { OData4::Query::Result.new(entity_set.query, response) }

  context 'with Atom Result' do
    let(:content_type) { 'application/atom+xml' }
    let(:response_body) { File.read('spec/fixtures/files/products.xml') }

    it_behaves_like 'valid result'
  end

  context 'with JSON Result' do
    let(:content_type) { 'application/json' }
    let(:response_body) { File.read('spec/fixtures/files/products.json') }

    it_behaves_like 'valid result'
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
odata4-0.7.0 spec/odata4/query/result_spec.rb