Skip to content

Commit

Permalink
Merge pull request #467 from composerinteralia/custom-errors
Browse files Browse the repository at this point in the history
Raise custom error on empty join
  • Loading branch information
rafaelfranca committed Jan 18, 2017
2 parents ab109d3 + 33d0d96 commit f5f81be
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 2 deletions.
2 changes: 2 additions & 0 deletions lib/arel.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require 'arel/errors'

require 'arel/crud'
require 'arel/factory_methods'

Expand Down
7 changes: 7 additions & 0 deletions lib/arel/errors.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module Arel
class ArelError < StandardError
end

class EmptyJoinError < ArelError
end
end
2 changes: 1 addition & 1 deletion lib/arel/select_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def join relation, klass = Nodes::InnerJoin

case relation
when String, Nodes::SqlLiteral
raise if relation.empty?
raise EmptyJoinError if relation.empty?
klass = Nodes::StringJoin
end

Expand Down
2 changes: 1 addition & 1 deletion lib/arel/table.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def join relation, klass = Nodes::InnerJoin

case relation
when String, Nodes::SqlLiteral
raise if relation.empty?
raise EmptyJoinError if relation.empty?
klass = Nodes::StringJoin
end

Expand Down
10 changes: 10 additions & 0 deletions test/test_select_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -618,6 +618,16 @@ def test_manager_stores_bind_values
manager = Arel::SelectManager.new
manager.join(nil).must_equal manager
end

it 'raises EmptyJoinError on empty' do
left = Table.new :users
manager = Arel::SelectManager.new

manager.from left
assert_raises(EmptyJoinError) do
manager.join("")
end
end
end

describe 'outer join' do
Expand Down
6 changes: 6 additions & 0 deletions test/test_table.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,12 @@ module Arel
mgr.to_sql.must_be_like %{ SELECT FROM "users" }
end

it 'raises EmptyJoinError on empty' do
assert_raises(EmptyJoinError) do
@relation.join ""
end
end

it 'takes a second argument for join type' do
right = @relation.alias
predicate = @relation[:id].eq(right[:id])
Expand Down

0 comments on commit f5f81be

Please sign in to comment.