Sha256: 5c63ce722fbead9254b6502c366708174236db28d500b272a09f1747d236d0a5

Contents?: true

Size: 1.84 KB

Versions: 12

Compression:

Stored size: 1.84 KB

Contents

require File.dirname(__FILE__) + '/helper'

context "ActiveRecord Adapter" do
  context "Joins" do
    specify "simple == on an association" do
      sql = User.select { |m| m.account.email == 'chris@ozmm.org' }
      sql.to_hash.should ==  { 
        :conditions => "accounts.email = 'chris@ozmm.org'", 
        :include => [:account] 
      }
    end

    specify "simple mixed == on an association" do
      sql = User.select { |m| m.name == 'chris' && m.account.email == 'chris@ozmm.org' }
      sql.to_hash.should ==  { 
        :conditions => "(users.name = 'chris' AND accounts.email = 'chris@ozmm.org')", 
        :include => [:account] 
      }
    end

    specify "multiple associations" do
      sql = User.select { |m| m.ideas.title == 'New Freezer' || m.invites.email == 'pj@hyett.com' }
      sql.to_hash.should ==  { 
        :conditions => "(ideas.title = 'New Freezer' OR invites.email = 'pj@hyett.com')",
        :include => [:ideas, :invites]
      }
    end

    specify "belongs_to" do
      sql = User.select { |m| m.account.id > 20 }
      sql.to_hash.should ==  { 
        :conditions => "accounts.id > 20",
        :include    => [:account]
      }
    end

    specify "complex joins have no to_s" do
      sql = User.select { |m| m.account.id > 20 }
      should.raise { sql.to_s }
    end

    specify "non-existant associations" do
      should.raise { User.select { |m| m.liquor.brand == 'Jack' } }
    end

    specify "in order" do
      sql = User.sort_by { |m| m.ideas.title }
      sql.to_hash.should ==  { 
        :order   => "ideas.title",
        :include => [:ideas]
      }
    end

    specify "in a more complex order" do
      sql = User.sort_by { |m| [ m.ideas.title, -m.invites.email ] }
      sql.to_hash.should ==  { 
        :order   => "ideas.title, invites.email DESC",
        :include => [:ideas, :invites]
      }
    end
  end
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
benhoskings-ambitious-activerecord-0.1.3.1 test/join_test.rb
benhoskings-ambitious-activerecord-0.1.3.2 test/join_test.rb
benhoskings-ambitious-activerecord-0.1.3.3 test/join_test.rb
benhoskings-ambitious-activerecord-0.1.3.4 test/join_test.rb
benhoskings-ambitious-activerecord-0.1.3.5 test/join_test.rb
benhoskings-ambitious-activerecord-0.1.3.6 test/join_test.rb
benhoskings-ambitious-activerecord-0.1.3.7 test/join_test.rb
benhoskings-ambitious-activerecord-0.1.3 test/join_test.rb
benhoskings-ambitious-activerecord-0.1.3.8 test/join_test.rb
ambitious-activerecord-0.1.0 test/join_test.rb
ambitious-activerecord-0.1.1 test/join_test.rb
ambitious-activerecord-0.1.3 test/join_test.rb