aboutsummaryrefslogblamecommitdiffstats
path: root/spec/relations/join_spec.rb
blob: b4a46fae9722accdcabb959ab7cd3adf35629113 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15














                                                      
                                                     














                                                                           
                                           
 

                                                                                          





                                      
   
require 'spec_helper'

describe "Arel" do
  before :all do
    @owner = Arel::Model.build do |r|
      r.engine Arel::Testing::Engine.new

      r.attribute :id, Arel::Attributes::Integer
    end

    @thing = Arel::Model.build do |r|
      r.engine Arel::Testing::Engine.new

      r.attribute :id,       Arel::Attributes::Integer
      r.attribute :owner_id, Arel::Attributes::Integer
      r.attribute :name,     Arel::Attributes::String
      r.attribute :age,      Arel::Attributes::Integer
    end
  end

  describe "Join" do
    before :all do
      @relation = @thing.join(@owner).on(@thing[:owner_id].eq(@owner[:id]))
      @expected = []

      3.times do |owner_id|
        @owner.insert([owner_id])

        8.times do |i|
          thing_id = owner_id * 8 + i
          age      = 2 * thing_id
          name     = "Name #{thing_id % 6}"

          @thing.insert([thing_id, owner_id, name, age])
          @expected << Arel::Row.new(@relation, [thing_id, owner_id, name, age, owner_id])
        end
      end
    end

    it_should_behave_like 'A Relation'
  end
end