Sha256: 9ca684193fd4644942a91bb721e1922551297713997a4fa9396c01e8a6fc3be7

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

require 'spec_helper'

describe DataMapper::Adapters::FqlAdapter do
  let(:adapter) { DataMapper.setup(:default, :adapter => :fql) }
  let(:repository) { DataMapper.repository(adapter.name) }
  subject { adapter }

  context 'when setting up with an options hash' do
    subject { DataMapper.setup(:default, :adapter => :fql, :access_token => 'abcdef' ) }

    its(:session) { should be_instance_of(MiniFB::OAuthSession) }
  end
  
  context 'when setting up with an existing session' do
    let(:session) { MiniFB::OAuthSession.new('token') }
    subject { DataMapper.setup(:default, :adapter => :fql, :session => session) }

    its(:session) { should be_equal(session) }
  end
  
  describe '#compile' do
    context 'when querying for a single resource' do
      let(:query) { DataMapper::Query.new(repository, User, :conditions => { :uid => 1 }) }
      subject { adapter.compile(query) }
      
      it { should == "select uid, name from user where uid = 1" }
    end
  end
  
  describe '#read' do
    let(:session) { mock(MiniFB::OAuthSession) }
    let(:adapter) { DataMapper.setup(:default, :adapter => :fql, :session => session) }
    
    context 'when querying for a single resource' do
      let(:query) { mock(DataMapper::Query) }
      let(:fql) { 'select uid, name from user where uid = 1' }
      subject { adapter.read(query) }
      
      before do
        adapter.should_receive(:compile).with(query).and_return(fql)
        session.should_receive(:fql).with(fql).and_return([Hashie::Mash.new({:uid => 1, :name => 'Gabor Ratky'})])
      end
      
      it { should == [ { 'uid' => 1, 'name' => 'Gabor Ratky' }]}
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dm-fql-adapter-0.1.0 spec/adapter_spec.rb