Sha256: 6a4f712669dfe2d409486b68bfc1b3ea725d3ad0209284831d360a67d8b7ac93

Contents?: true

Size: 1.42 KB

Versions: 6

Compression:

Stored size: 1.42 KB

Contents

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

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 "non-existant associations" do
    sql = User.select { |m| m.liquor.brand == 'Jack' }
    should.raise { sql.to_hash } 
  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

Version data entries

6 entries across 3 versions & 1 rubygems

Version Path
ambition-0.1.2 test/join_test.rb
ambition-0.1.2 ./test/join_test.rb
ambition-0.1.3 ./test/join_test.rb
ambition-0.1.3 test/join_test.rb
ambition-0.1.4 ./test/join_test.rb
ambition-0.1.4 test/join_test.rb