Sha256: 8aa9e444dfd69ebae069ed7289748725275641abf318037c38d8a3619f7ebad0

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

require 'spec_helper'

describe EdgeRider::ToIdQuery do

  describe '#to_id_query' do

    it 'should simplify a scope to a IN query that selects IDs' do
      Forum.create!(id: 1, name: 'Name 1')
      Forum.create!(id: 2, name: 'Name 2')
      Forum.create!(id: 3, name: 'Name 2')
      scope = Forum.scoped(conditions: { name: 'Name 2' })
      scope.to_id_query.to_sql.should =~ EdgeRider::Development.selects_star_with_conditions_pattern('forums', /["`]?forums["`]?\.["`]?id["`]? IN \(2,\s*3\)/)
    end

    it 'should resolve and lose any JOINs' do
      Forum.create!(id: 1, name: 'A')
      Forum.create!(id: 2, name: 'B')
      Forum.create!(id: 3, name: 'A')
      Topic.create!(id: 100, forum_id: 1)
      Topic.create!(id: 101, forum_id: 1)
      Topic.create!(id: 102, forum_id: 2)
      Topic.create!(id: 103, forum_id: 3)
      scope = Topic.scoped(joins: :forum, conditions: "forums.name = 'A'")
      scope.to_id_query.to_sql.should =~ EdgeRider::Development.selects_star_with_conditions_pattern('topics', /["`]?topics["`]?\.["`]?id["`]? IN \(100,\s*101,\s*103\)/)
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
edge_rider-1.1.0 spec/edge_rider/to_id_query_spec.rb
edge_rider-1.0.0 spec/edge_rider/to_id_query_spec.rb