Skip to content

Instantly share code, notes, and snippets.

@rzane
Last active July 22, 2016 03:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rzane/377356177290159fc1f9629f27132d75 to your computer and use it in GitHub Desktop.
Save rzane/377356177290159fc1f9629f27132d75 to your computer and use it in GitHub Desktop.
Test Squeel's behavior when dealing with associated columns
require 'bundler/inline'
require 'minitest/spec'
require 'minitest/autorun'
gemfile true do
source 'https://rubygems.org'
gem 'activerecord', '4.2.6', require: false
gem 'sqlite3'
gem 'squeel', '1.2.3', require: false
end
require 'arel'
require 'active_record'
require 'squeel'
ActiveRecord::Base.establish_connection(
adapter: 'sqlite3',
database: ':memory:'
)
ActiveRecord::Schema.define do
create_table :owners, force: true
create_table :dogs, force: true do |t|
t.string :name
t.string :breed
t.belongs_to :owner
end
end
class Owner < ActiveRecord::Base
has_many :dogs
end
class Dog < ActiveRecord::Base
belongs_to :owner
end
class SqueelTest < Minitest::Spec
it 'works' do
scope = Owner.joins{:dogs}.where{ breed == 'mutt' }
scope.to_sql.must_equal %{
SELECT "owners".* FROM "owners"
INNER JOIN "dogs" ON "dogs"."owner_id" = "owners"."id"
WHERE "owners"."breed" = 'mutt'
}.squish
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment