diff options
Diffstat (limited to 'activerecord/test/cases/arel/select_manager_test.rb')
-rw-r--r-- | activerecord/test/cases/arel/select_manager_test.rb | 488 |
1 files changed, 244 insertions, 244 deletions
diff --git a/activerecord/test/cases/arel/select_manager_test.rb b/activerecord/test/cases/arel/select_manager_test.rb index e9056953d8..1bc9f6abf2 100644 --- a/activerecord/test/cases/arel/select_manager_test.rb +++ b/activerecord/test/cases/arel/select_manager_test.rb @@ -1,18 +1,18 @@ # frozen_string_literal: true -require_relative 'helper' -module Arel +require_relative "helper" +module Arel class SelectManagerTest < Arel::Spec def test_join_sources manager = Arel::SelectManager.new - manager.join_sources << Arel::Nodes::StringJoin.new(Nodes.build_quoted('foo')) + manager.join_sources << Arel::Nodes::StringJoin.new(Nodes.build_quoted("foo")) assert_equal "SELECT FROM 'foo'", manager.to_sql end - describe 'backwards compatibility' do - describe 'project' do - it 'accepts symbols as sql literals' do + describe "backwards compatibility" do + describe "project" do + it "accepts symbols as sql literals" do table = Table.new :users manager = Arel::SelectManager.new manager.project :id @@ -23,19 +23,19 @@ module Arel end end - describe 'order' do - it 'accepts symbols' do + describe "order" do + it "accepts symbols" do table = Table.new :users manager = Arel::SelectManager.new - manager.project Nodes::SqlLiteral.new '*' + manager.project Nodes::SqlLiteral.new "*" manager.from table manager.order :foo manager.to_sql.must_be_like %{ SELECT * FROM "users" ORDER BY foo } end end - describe 'group' do - it 'takes a symbol' do + describe "group" do + it "takes a symbol" do table = Table.new :users manager = Arel::SelectManager.new manager.from table @@ -44,55 +44,55 @@ module Arel end end - describe 'as' do - it 'makes an AS node by grouping the AST' do + describe "as" do + it "makes an AS node by grouping the AST" do manager = Arel::SelectManager.new - as = manager.as(Arel.sql('foo')) + as = manager.as(Arel.sql("foo")) assert_kind_of Arel::Nodes::Grouping, as.left assert_equal manager.ast, as.left.expr - assert_equal 'foo', as.right + assert_equal "foo", as.right end - it 'converts right to SqlLiteral if a string' do + it "converts right to SqlLiteral if a string" do manager = Arel::SelectManager.new - as = manager.as('foo') + as = manager.as("foo") assert_kind_of Arel::Nodes::SqlLiteral, as.right end - it 'can make a subselect' do + it "can make a subselect" do manager = Arel::SelectManager.new manager.project Arel.star - manager.from Arel.sql('zomg') - as = manager.as(Arel.sql('foo')) + manager.from Arel.sql("zomg") + as = manager.as(Arel.sql("foo")) manager = Arel::SelectManager.new - manager.project Arel.sql('name') + manager.project Arel.sql("name") manager.from as manager.to_sql.must_be_like "SELECT name FROM (SELECT * FROM zomg) foo" end end - describe 'from' do - it 'ignores strings when table of same name exists' do + describe "from" do + it "ignores strings when table of same name exists" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.from 'users' - manager.project table['id'] + manager.from "users" + manager.project table["id"] manager.to_sql.must_be_like 'SELECT "users"."id" FROM users' end - it 'should support any ast' do - table = Table.new :users + it "should support any ast" do + table = Table.new :users manager1 = Arel::SelectManager.new manager2 = Arel::SelectManager.new - manager2.project(Arel.sql('*')) + manager2.project(Arel.sql("*")) manager2.from table - manager1.project Arel.sql('lol') - as = manager2.as Arel.sql('omg') + manager1.project Arel.sql("lol") + as = manager2.as Arel.sql("omg") manager1.from(as) manager1.to_sql.must_be_like %{ @@ -101,32 +101,32 @@ module Arel end end - describe 'having' do - it 'converts strings to SQLLiterals' do - table = Table.new :users + describe "having" do + it "converts strings to SQLLiterals" do + table = Table.new :users mgr = table.from - mgr.having Arel.sql('foo') + mgr.having Arel.sql("foo") mgr.to_sql.must_be_like %{ SELECT FROM "users" HAVING foo } end - it 'can have multiple items specified separately' do + it "can have multiple items specified separately" do table = Table.new :users mgr = table.from - mgr.having Arel.sql('foo') - mgr.having Arel.sql('bar') + mgr.having Arel.sql("foo") + mgr.having Arel.sql("bar") mgr.to_sql.must_be_like %{ SELECT FROM "users" HAVING foo AND bar } end - it 'can receive any node' do + it "can receive any node" do table = Table.new :users mgr = table.from - mgr.having Arel::Nodes::And.new([Arel.sql('foo'), Arel.sql('bar')]) + mgr.having Arel::Nodes::And.new([Arel.sql("foo"), Arel.sql("bar")]) mgr.to_sql.must_be_like %{ SELECT FROM "users" HAVING foo AND bar } end end - describe 'on' do - it 'converts to sqlliterals' do + describe "on" do + it "converts to sqlliterals" do table = Table.new :users right = table.alias mgr = table.from @@ -134,7 +134,7 @@ module Arel mgr.to_sql.must_be_like %{ SELECT FROM "users" INNER JOIN "users" "users_2" ON omg } end - it 'converts to sqlliterals with multiple items' do + it "converts to sqlliterals with multiple items" do table = Table.new :users right = table.alias mgr = table.from @@ -144,17 +144,17 @@ module Arel end end - describe 'clone' do - it 'creates new cores' do - table = Table.new :users, :as => 'foo' + describe "clone" do + it "creates new cores" do + table = Table.new :users, as: "foo" mgr = table.from m2 = mgr.clone m2.project "foo" mgr.to_sql.wont_equal m2.to_sql end - it 'makes updates to the correct copy' do - table = Table.new :users, :as => 'foo' + it "makes updates to the correct copy" do + table = Table.new :users, as: "foo" mgr = table.from m2 = mgr.clone m3 = m2.clone @@ -164,40 +164,40 @@ module Arel end end - describe 'initialize' do - it 'uses alias in sql' do - table = Table.new :users, :as => 'foo' + describe "initialize" do + it "uses alias in sql" do + table = Table.new :users, as: "foo" mgr = table.from mgr.skip 10 mgr.to_sql.must_be_like %{ SELECT FROM "users" "foo" OFFSET 10 } end end - describe 'skip' do - it 'should add an offset' do - table = Table.new :users + describe "skip" do + it "should add an offset" do + table = Table.new :users mgr = table.from mgr.skip 10 mgr.to_sql.must_be_like %{ SELECT FROM "users" OFFSET 10 } end - it 'should chain' do - table = Table.new :users + it "should chain" do + table = Table.new :users mgr = table.from mgr.skip(10).to_sql.must_be_like %{ SELECT FROM "users" OFFSET 10 } end end - describe 'offset' do - it 'should add an offset' do - table = Table.new :users + describe "offset" do + it "should add an offset" do + table = Table.new :users mgr = table.from mgr.offset = 10 mgr.to_sql.must_be_like %{ SELECT FROM "users" OFFSET 10 } end - it 'should remove an offset' do - table = Table.new :users + it "should remove an offset" do + table = Table.new :users mgr = table.from mgr.offset = 10 mgr.to_sql.must_be_like %{ SELECT FROM "users" OFFSET 10 } @@ -206,35 +206,35 @@ module Arel mgr.to_sql.must_be_like %{ SELECT FROM "users" } end - it 'should return the offset' do - table = Table.new :users + it "should return the offset" do + table = Table.new :users mgr = table.from mgr.offset = 10 assert_equal 10, mgr.offset end end - describe 'exists' do - it 'should create an exists clause' do + describe "exists" do + it "should create an exists clause" do table = Table.new(:users) manager = Arel::SelectManager.new table - manager.project Nodes::SqlLiteral.new '*' + manager.project Nodes::SqlLiteral.new "*" m2 = Arel::SelectManager.new m2.project manager.exists m2.to_sql.must_be_like %{ SELECT EXISTS (#{manager.to_sql}) } end - it 'can be aliased' do + it "can be aliased" do table = Table.new(:users) manager = Arel::SelectManager.new table - manager.project Nodes::SqlLiteral.new '*' + manager.project Nodes::SqlLiteral.new "*" m2 = Arel::SelectManager.new - m2.project manager.exists.as('foo') + m2.project manager.exists.as("foo") m2.to_sql.must_be_like %{ SELECT EXISTS (#{manager.to_sql}) AS foo } end end - describe 'union' do + describe "union" do before do table = Table.new :users @m1 = Arel::SelectManager.new table @@ -248,7 +248,7 @@ module Arel end - it 'should union two managers' do + it "should union two managers" do # FIXME should this union "managers" or "statements" ? # FIXME this probably shouldn't return a node node = @m1.union @m2 @@ -259,7 +259,7 @@ module Arel } end - it 'should union all' do + it "should union all" do node = @m1.union :all, @m2 node.to_sql.must_be_like %{ @@ -269,7 +269,7 @@ module Arel end - describe 'intersect' do + describe "intersect" do before do table = Table.new :users @m1 = Arel::SelectManager.new table @@ -283,7 +283,7 @@ module Arel end - it 'should interect two managers' do + it "should interect two managers" do # FIXME should this intersect "managers" or "statements" ? # FIXME this probably shouldn't return a node node = @m1.intersect @m2 @@ -296,7 +296,7 @@ module Arel end - describe 'except' do + describe "except" do before do table = Table.new :users @m1 = Arel::SelectManager.new table @@ -308,7 +308,7 @@ module Arel @m2.where(table[:age].between(40..99)) end - it 'should except two managers' do + it "should except two managers" do # FIXME should this except "managers" or "statements" ? # FIXME this probably shouldn't return a node node = @m1.except @m2 @@ -321,8 +321,8 @@ module Arel end - describe 'with' do - it 'should support basic WITH' do + describe "with" do + it "should support basic WITH" do users = Table.new(:users) users_top = Table.new(:users_top) comments = Table.new(:comments) @@ -370,43 +370,43 @@ module Arel end end - describe 'ast' do - it 'should return the ast' do - table = Table.new :users + describe "ast" do + it "should return the ast" do + table = Table.new :users mgr = table.from assert mgr.ast end - it 'should allow orders to work when the ast is grepped' do - table = Table.new :users + it "should allow orders to work when the ast is grepped" do + table = Table.new :users mgr = table.from - mgr.project Arel.sql '*' + mgr.project Arel.sql "*" mgr.from table - mgr.orders << Arel::Nodes::Ascending.new(Arel.sql('foo')) + mgr.orders << Arel::Nodes::Ascending.new(Arel.sql("foo")) mgr.ast.grep(Arel::Nodes::OuterJoin) mgr.to_sql.must_be_like %{ SELECT * FROM "users" ORDER BY foo ASC } end end - describe 'taken' do - it 'should return limit' do + describe "taken" do + it "should return limit" do manager = Arel::SelectManager.new manager.take 10 manager.taken.must_equal 10 end end - describe 'lock' do + describe "lock" do # This should fail on other databases - it 'adds a lock node' do - table = Table.new :users + it "adds a lock node" do + table = Table.new :users mgr = table.from mgr.lock.to_sql.must_be_like %{ SELECT FROM "users" FOR UPDATE } end end - describe 'orders' do - it 'returns order clauses' do + describe "orders" do + it "returns order clauses" do table = Table.new :users manager = Arel::SelectManager.new order = table[:id] @@ -415,11 +415,11 @@ module Arel end end - describe 'order' do - it 'generates order clauses' do + describe "order" do + it "generates order clauses" do table = Table.new :users manager = Arel::SelectManager.new - manager.project Nodes::SqlLiteral.new '*' + manager.project Nodes::SqlLiteral.new "*" manager.from table manager.order table[:id] manager.to_sql.must_be_like %{ @@ -428,10 +428,10 @@ module Arel end # FIXME: I would like to deprecate this - it 'takes *args' do + it "takes *args" do table = Table.new :users manager = Arel::SelectManager.new - manager.project Nodes::SqlLiteral.new '*' + manager.project Nodes::SqlLiteral.new "*" manager.from table manager.order table[:id], table[:name] manager.to_sql.must_be_like %{ @@ -439,16 +439,16 @@ module Arel } end - it 'chains' do + it "chains" do table = Table.new :users manager = Arel::SelectManager.new manager.order(table[:id]).must_equal manager end - it 'has order attributes' do + it "has order attributes" do table = Table.new :users manager = Arel::SelectManager.new - manager.project Nodes::SqlLiteral.new '*' + manager.project Nodes::SqlLiteral.new "*" manager.from table manager.order table[:id].desc manager.to_sql.must_be_like %{ @@ -457,8 +457,8 @@ module Arel end end - describe 'on' do - it 'takes two params' do + describe "on" do + it "takes two params" do left = Table.new :users right = left.alias predicate = left[:id].eq(right[:id]) @@ -474,7 +474,7 @@ module Arel } end - it 'takes three params' do + it "takes three params" do left = Table.new :users right = left.alias predicate = left[:id].eq(right[:id]) @@ -496,59 +496,59 @@ module Arel end end - it 'should hand back froms' do + it "should hand back froms" do relation = Arel::SelectManager.new assert_equal [], relation.froms end - it 'should create and nodes' do + it "should create and nodes" do relation = Arel::SelectManager.new - children = ['foo', 'bar', 'baz'] + children = ["foo", "bar", "baz"] clause = relation.create_and children assert_kind_of Arel::Nodes::And, clause assert_equal children, clause.children end - it 'should create insert managers' do + it "should create insert managers" do relation = Arel::SelectManager.new insert = relation.create_insert assert_kind_of Arel::InsertManager, insert end - it 'should create join nodes' do + it "should create join nodes" do relation = Arel::SelectManager.new - join = relation.create_join 'foo', 'bar' + join = relation.create_join "foo", "bar" assert_kind_of Arel::Nodes::InnerJoin, join - assert_equal 'foo', join.left - assert_equal 'bar', join.right + assert_equal "foo", join.left + assert_equal "bar", join.right end - it 'should create join nodes with a full outer join klass' do + it "should create join nodes with a full outer join klass" do relation = Arel::SelectManager.new - join = relation.create_join 'foo', 'bar', Arel::Nodes::FullOuterJoin + join = relation.create_join "foo", "bar", Arel::Nodes::FullOuterJoin assert_kind_of Arel::Nodes::FullOuterJoin, join - assert_equal 'foo', join.left - assert_equal 'bar', join.right + assert_equal "foo", join.left + assert_equal "bar", join.right end - it 'should create join nodes with a outer join klass' do + it "should create join nodes with a outer join klass" do relation = Arel::SelectManager.new - join = relation.create_join 'foo', 'bar', Arel::Nodes::OuterJoin + join = relation.create_join "foo", "bar", Arel::Nodes::OuterJoin assert_kind_of Arel::Nodes::OuterJoin, join - assert_equal 'foo', join.left - assert_equal 'bar', join.right + assert_equal "foo", join.left + assert_equal "bar", join.right end - it 'should create join nodes with a right outer join klass' do + it "should create join nodes with a right outer join klass" do relation = Arel::SelectManager.new - join = relation.create_join 'foo', 'bar', Arel::Nodes::RightOuterJoin + join = relation.create_join "foo", "bar", Arel::Nodes::RightOuterJoin assert_kind_of Arel::Nodes::RightOuterJoin, join - assert_equal 'foo', join.left - assert_equal 'bar', join.right + assert_equal "foo", join.left + assert_equal "bar", join.right end - describe 'join' do - it 'responds to join' do + describe "join" do + it "responds to join" do left = Table.new :users right = left.alias predicate = left[:id].eq(right[:id]) @@ -563,7 +563,7 @@ module Arel } end - it 'takes a class' do + it "takes a class" do left = Table.new :users right = left.alias predicate = left[:id].eq(right[:id]) @@ -578,7 +578,7 @@ module Arel } end - it 'takes the full outer join class' do + it "takes the full outer join class" do left = Table.new :users right = left.alias predicate = left[:id].eq(right[:id]) @@ -593,7 +593,7 @@ module Arel } end - it 'takes the right outer join class' do + it "takes the right outer join class" do left = Table.new :users right = left.alias predicate = left[:id].eq(right[:id]) @@ -608,12 +608,12 @@ module Arel } end - it 'noops on nil' do - manager = Arel::SelectManager.new + it "noops on nil" do + manager = Arel::SelectManager.new manager.join(nil).must_equal manager end - it 'raises EmptyJoinError on empty' do + it "raises EmptyJoinError on empty" do left = Table.new :users manager = Arel::SelectManager.new @@ -624,8 +624,8 @@ module Arel end end - describe 'outer join' do - it 'responds to join' do + describe "outer join" do + it "responds to join" do left = Table.new :users right = left.alias predicate = left[:id].eq(right[:id]) @@ -640,15 +640,15 @@ module Arel } end - it 'noops on nil' do - manager = Arel::SelectManager.new + it "noops on nil" do + manager = Arel::SelectManager.new manager.outer_join(nil).must_equal manager end end - describe 'joins' do + describe "joins" do - it 'returns inner join sql' do + it "returns inner join sql" do table = Table.new :users aliaz = table.alias manager = Arel::SelectManager.new @@ -657,7 +657,7 @@ module Arel manager.to_sql end - it 'returns outer join sql' do + it "returns outer join sql" do table = Table.new :users aliaz = table.alias manager = Arel::SelectManager.new @@ -666,7 +666,7 @@ module Arel manager.to_sql end - it 'can have a non-table alias as relation name' do + it "can have a non-table alias as relation name" do users = Table.new :users comments = Table.new :comments @@ -678,7 +678,7 @@ module Arel ).as("counts") joins = users.join(counts).on(counts[:user_id].eq(10)) - joins.to_sql.must_be_like %{ + joins.to_sql.must_be_like %{ SELECT FROM "users" INNER JOIN (SELECT "comments"."user_id" AS user_id, COUNT("comments"."user_id") AS count FROM "comments" GROUP BY "comments"."user_id") counts ON counts."user_id" = 10 } end @@ -689,7 +689,7 @@ module Arel predicate = left[:id].eq(right[:id]) mgr = left.join(right) - mgr.project Nodes::SqlLiteral.new('*') + mgr.project Nodes::SqlLiteral.new("*") mgr.on(predicate).must_equal mgr mgr.to_sql.must_be_like %{ @@ -699,15 +699,15 @@ module Arel } end - it 'returns string join sql' do + it "returns string join sql" do manager = Arel::SelectManager.new - manager.from Nodes::StringJoin.new(Nodes.build_quoted('hello')) + manager.from Nodes::StringJoin.new(Nodes.build_quoted("hello")) assert_match "'hello'", manager.to_sql end end - describe 'group' do - it 'takes an attribute' do + describe "group" do + it "takes an attribute" do table = Table.new :users manager = Arel::SelectManager.new manager.from table @@ -717,13 +717,13 @@ module Arel } end - it 'chains' do + it "chains" do table = Table.new :users manager = Arel::SelectManager.new manager.group(table[:id]).must_equal manager end - it 'takes multiple args' do + it "takes multiple args" do table = Table.new :users manager = Arel::SelectManager.new manager.from table @@ -734,132 +734,132 @@ module Arel end # FIXME: backwards compat - it 'makes strings literals' do + it "makes strings literals" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.group 'foo' + manager.group "foo" manager.to_sql.must_be_like %{ SELECT FROM "users" GROUP BY foo } end end - describe 'window definition' do - it 'can be empty' do + describe "window definition" do + it "can be empty" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window') + manager.window("a_window") manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS () } end - it 'takes an order' do + it "takes an order" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').order(table['foo'].asc) + manager.window("a_window").order(table["foo"].asc) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (ORDER BY "users"."foo" ASC) } end - it 'takes an order with multiple columns' do + it "takes an order with multiple columns" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').order(table['foo'].asc, table['bar'].desc) + manager.window("a_window").order(table["foo"].asc, table["bar"].desc) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (ORDER BY "users"."foo" ASC, "users"."bar" DESC) } end - it 'takes a partition' do + it "takes a partition" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').partition(table['bar']) + manager.window("a_window").partition(table["bar"]) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (PARTITION BY "users"."bar") } end - it 'takes a partition and an order' do + it "takes a partition and an order" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').partition(table['foo']).order(table['foo'].asc) + manager.window("a_window").partition(table["foo"]).order(table["foo"].asc) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (PARTITION BY "users"."foo" ORDER BY "users"."foo" ASC) } end - it 'takes a partition with multiple columns' do + it "takes a partition with multiple columns" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').partition(table['bar'], table['baz']) + manager.window("a_window").partition(table["bar"], table["baz"]) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (PARTITION BY "users"."bar", "users"."baz") } end - it 'takes a rows frame, unbounded preceding' do + it "takes a rows frame, unbounded preceding" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').rows(Arel::Nodes::Preceding.new) + manager.window("a_window").rows(Arel::Nodes::Preceding.new) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (ROWS UNBOUNDED PRECEDING) } end - it 'takes a rows frame, bounded preceding' do + it "takes a rows frame, bounded preceding" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').rows(Arel::Nodes::Preceding.new(5)) + manager.window("a_window").rows(Arel::Nodes::Preceding.new(5)) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (ROWS 5 PRECEDING) } end - it 'takes a rows frame, unbounded following' do + it "takes a rows frame, unbounded following" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').rows(Arel::Nodes::Following.new) + manager.window("a_window").rows(Arel::Nodes::Following.new) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (ROWS UNBOUNDED FOLLOWING) } end - it 'takes a rows frame, bounded following' do + it "takes a rows frame, bounded following" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').rows(Arel::Nodes::Following.new(5)) + manager.window("a_window").rows(Arel::Nodes::Following.new(5)) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (ROWS 5 FOLLOWING) } end - it 'takes a rows frame, current row' do + it "takes a rows frame, current row" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').rows(Arel::Nodes::CurrentRow.new) + manager.window("a_window").rows(Arel::Nodes::CurrentRow.new) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (ROWS CURRENT ROW) } end - it 'takes a rows frame, between two delimiters' do + it "takes a rows frame, between two delimiters" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - window = manager.window('a_window') + window = manager.window("a_window") window.frame( Arel::Nodes::Between.new( window.rows, @@ -872,61 +872,61 @@ module Arel } end - it 'takes a range frame, unbounded preceding' do + it "takes a range frame, unbounded preceding" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').range(Arel::Nodes::Preceding.new) + manager.window("a_window").range(Arel::Nodes::Preceding.new) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (RANGE UNBOUNDED PRECEDING) } end - it 'takes a range frame, bounded preceding' do + it "takes a range frame, bounded preceding" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').range(Arel::Nodes::Preceding.new(5)) + manager.window("a_window").range(Arel::Nodes::Preceding.new(5)) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (RANGE 5 PRECEDING) } end - it 'takes a range frame, unbounded following' do + it "takes a range frame, unbounded following" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').range(Arel::Nodes::Following.new) + manager.window("a_window").range(Arel::Nodes::Following.new) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (RANGE UNBOUNDED FOLLOWING) } end - it 'takes a range frame, bounded following' do + it "takes a range frame, bounded following" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').range(Arel::Nodes::Following.new(5)) + manager.window("a_window").range(Arel::Nodes::Following.new(5)) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (RANGE 5 FOLLOWING) } end - it 'takes a range frame, current row' do + it "takes a range frame, current row" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.window('a_window').range(Arel::Nodes::CurrentRow.new) + manager.window("a_window").range(Arel::Nodes::CurrentRow.new) manager.to_sql.must_be_like %{ SELECT FROM "users" WINDOW "a_window" AS (RANGE CURRENT ROW) } end - it 'takes a range frame, between two delimiters' do + it "takes a range frame, between two delimiters" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - window = manager.window('a_window') + window = manager.window("a_window") window.frame( Arel::Nodes::Between.new( window.range, @@ -940,7 +940,7 @@ module Arel end end - describe 'delete' do + describe "delete" do it "copies from" do table = Table.new :users manager = Arel::SelectManager.new @@ -963,8 +963,8 @@ module Arel end end - describe 'where_sql' do - it 'gives me back the where sql' do + describe "where_sql" do + it "gives me back the where sql" do table = Table.new :users manager = Arel::SelectManager.new manager.from table @@ -972,7 +972,7 @@ module Arel manager.where_sql.must_be_like %{ WHERE "users"."id" = 10 } end - it 'joins wheres with AND' do + it "joins wheres with AND" do table = Table.new :users manager = Arel::SelectManager.new manager.from table @@ -981,19 +981,19 @@ module Arel manager.where_sql.must_be_like %{ WHERE "users"."id" = 10 AND "users"."id" = 11} end - it 'handles database specific statements' do + it "handles database specific statements" do old_visitor = Table.engine.connection.visitor Table.engine.connection.visitor = Visitors::PostgreSQL.new Table.engine.connection table = Table.new :users manager = Arel::SelectManager.new manager.from table manager.where table[:id].eq 10 - manager.where table[:name].matches 'foo%' + manager.where table[:name].matches "foo%" manager.where_sql.must_be_like %{ WHERE "users"."id" = 10 AND "users"."name" ILIKE 'foo%' } Table.engine.connection.visitor = old_visitor end - it 'returns nil when there are no wheres' do + it "returns nil when there are no wheres" do table = Table.new :users manager = Arel::SelectManager.new manager.from table @@ -1001,35 +1001,35 @@ module Arel end end - describe 'update' do + describe "update" do - it 'creates an update statement' do + it "creates an update statement" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - stmt = manager.compile_update({table[:id] => 1}, Arel::Attributes::Attribute.new(table, 'id')) + stmt = manager.compile_update({ table[:id] => 1 }, Arel::Attributes::Attribute.new(table, "id")) stmt.to_sql.must_be_like %{ UPDATE "users" SET "id" = 1 } end - it 'takes a string' do + it "takes a string" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - stmt = manager.compile_update(Nodes::SqlLiteral.new('foo = bar'), Arel::Attributes::Attribute.new(table, 'id')) + stmt = manager.compile_update(Nodes::SqlLiteral.new("foo = bar"), Arel::Attributes::Attribute.new(table, "id")) stmt.to_sql.must_be_like %{ UPDATE "users" SET foo = bar } end - it 'copies limits' do + it "copies limits" do table = Table.new :users manager = Arel::SelectManager.new manager.from table manager.take 1 - stmt = manager.compile_update(Nodes::SqlLiteral.new('foo = bar'), Arel::Attributes::Attribute.new(table, 'id')) - stmt.key = table['id'] + stmt = manager.compile_update(Nodes::SqlLiteral.new("foo = bar"), Arel::Attributes::Attribute.new(table, "id")) + stmt.key = table["id"] stmt.to_sql.must_be_like %{ UPDATE "users" SET foo = bar @@ -1037,13 +1037,13 @@ module Arel } end - it 'copies order' do + it "copies order" do table = Table.new :users manager = Arel::SelectManager.new manager.from table manager.order :foo - stmt = manager.compile_update(Nodes::SqlLiteral.new('foo = bar'), Arel::Attributes::Attribute.new(table, 'id')) - stmt.key = table['id'] + stmt = manager.compile_update(Nodes::SqlLiteral.new("foo = bar"), Arel::Attributes::Attribute.new(table, "id")) + stmt.key = table["id"] stmt.to_sql.must_be_like %{ UPDATE "users" SET foo = bar @@ -1051,25 +1051,25 @@ module Arel } end - it 'copies where clauses' do + it "copies where clauses" do table = Table.new :users manager = Arel::SelectManager.new manager.where table[:id].eq 10 manager.from table - stmt = manager.compile_update({table[:id] => 1}, Arel::Attributes::Attribute.new(table, 'id')) + stmt = manager.compile_update({ table[:id] => 1 }, Arel::Attributes::Attribute.new(table, "id")) stmt.to_sql.must_be_like %{ UPDATE "users" SET "id" = 1 WHERE "users"."id" = 10 } end - it 'copies where clauses when nesting is triggered' do + it "copies where clauses when nesting is triggered" do table = Table.new :users manager = Arel::SelectManager.new manager.where table[:foo].eq 10 manager.take 42 manager.from table - stmt = manager.compile_update({table[:id] => 1}, Arel::Attributes::Attribute.new(table, 'id')) + stmt = manager.compile_update({ table[:id] => 1 }, Arel::Attributes::Attribute.new(table, "id")) stmt.to_sql.must_be_like %{ UPDATE "users" SET "id" = 1 WHERE "users"."id" IN (SELECT "users"."id" FROM "users" WHERE "users"."foo" = 10 LIMIT 42) @@ -1078,51 +1078,51 @@ module Arel end - describe 'project' do + describe "project" do it "takes sql literals" do manager = Arel::SelectManager.new - manager.project Nodes::SqlLiteral.new '*' + manager.project Nodes::SqlLiteral.new "*" manager.to_sql.must_be_like %{ SELECT * } end - it 'takes multiple args' do + it "takes multiple args" do manager = Arel::SelectManager.new - manager.project Nodes::SqlLiteral.new('foo'), - Nodes::SqlLiteral.new('bar') + manager.project Nodes::SqlLiteral.new("foo"), + Nodes::SqlLiteral.new("bar") manager.to_sql.must_be_like %{ SELECT foo, bar } end - it 'takes strings' do + it "takes strings" do manager = Arel::SelectManager.new - manager.project '*' + manager.project "*" manager.to_sql.must_be_like %{ SELECT * } end end - describe 'projections' do - it 'reads projections' do + describe "projections" do + it "reads projections" do manager = Arel::SelectManager.new - manager.project Arel.sql('foo'), Arel.sql('bar') - manager.projections.must_equal [Arel.sql('foo'), Arel.sql('bar')] + manager.project Arel.sql("foo"), Arel.sql("bar") + manager.projections.must_equal [Arel.sql("foo"), Arel.sql("bar")] end end - describe 'projections=' do - it 'overwrites projections' do + describe "projections=" do + it "overwrites projections" do manager = Arel::SelectManager.new - manager.project Arel.sql('foo') - manager.projections = [Arel.sql('bar')] + manager.project Arel.sql("foo") + manager.projections = [Arel.sql("bar")] manager.to_sql.must_be_like %{ SELECT bar } end end - describe 'take' do + describe "take" do it "knows take" do table = Table.new :users manager = Arel::SelectManager.new - manager.from(table).project(table['id']) - manager.where(table['id'].eq(1)) + manager.from(table).project(table["id"]) + manager.where(table["id"].eq(1)) manager.take 1 manager.to_sql.must_be_like %{ @@ -1138,22 +1138,22 @@ module Arel manager.take(1).must_equal manager end - it 'removes LIMIT when nil is passed' do + it "removes LIMIT when nil is passed" do manager = Arel::SelectManager.new manager.limit = 10 - assert_match('LIMIT', manager.to_sql) + assert_match("LIMIT", manager.to_sql) manager.limit = nil - refute_match('LIMIT', manager.to_sql) + refute_match("LIMIT", manager.to_sql) end end - describe 'where' do + describe "where" do it "knows where" do table = Table.new :users manager = Arel::SelectManager.new - manager.from(table).project(table['id']) - manager.where(table['id'].eq(1)) + manager.from(table).project(table["id"]) + manager.where(table["id"].eq(1)) manager.to_sql.must_be_like %{ SELECT "users"."id" FROM "users" @@ -1165,37 +1165,37 @@ module Arel table = Table.new :users manager = Arel::SelectManager.new manager.from(table) - manager.project(table['id']).where(table['id'].eq 1).must_equal manager + manager.project(table["id"]).where(table["id"].eq 1).must_equal manager end end - describe 'from' do + describe "from" do it "makes sql" do table = Table.new :users manager = Arel::SelectManager.new manager.from table - manager.project table['id'] + manager.project table["id"] manager.to_sql.must_be_like 'SELECT "users"."id" FROM "users"' end it "chains" do table = Table.new :users manager = Arel::SelectManager.new - manager.from(table).project(table['id']).must_equal manager + manager.from(table).project(table["id"]).must_equal manager manager.to_sql.must_be_like 'SELECT "users"."id" FROM "users"' end end - describe 'source' do - it 'returns the join source of the select core' do + describe "source" do + it "returns the join source of the select core" do manager = Arel::SelectManager.new manager.source.must_equal manager.ast.cores.last.source end end - describe 'distinct' do - it 'sets the quantifier' do + describe "distinct" do + it "sets the quantifier" do manager = Arel::SelectManager.new manager.distinct @@ -1212,13 +1212,13 @@ module Arel end end - describe 'distinct_on' do - it 'sets the quantifier' do + describe "distinct_on" do + it "sets the quantifier" do manager = Arel::SelectManager.new table = Table.new :users - manager.distinct_on(table['id']) - manager.ast.cores.last.set_quantifier.must_equal Arel::Nodes::DistinctOn.new(table['id']) + manager.distinct_on(table["id"]) + manager.ast.cores.last.set_quantifier.must_equal Arel::Nodes::DistinctOn.new(table["id"]) manager.distinct_on(false) manager.ast.cores.last.set_quantifier.must_be_nil @@ -1228,7 +1228,7 @@ module Arel manager = Arel::SelectManager.new table = Table.new :users - manager.distinct_on(table['id']).must_equal manager + manager.distinct_on(table["id"]).must_equal manager manager.distinct_on(false).must_equal manager end end |