aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/visitors/test_oracle12.rb4
-rw-r--r--test/visitors/test_postgres.rb57
2 files changed, 51 insertions, 10 deletions
diff --git a/test/visitors/test_oracle12.rb b/test/visitors/test_oracle12.rb
index cfa130fcab..df0f01b30b 100644
--- a/test/visitors/test_oracle12.rb
+++ b/test/visitors/test_oracle12.rb
@@ -23,7 +23,7 @@ module Arel
it 'generates select options offset then limit' do
stmt = Nodes::SelectStatement.new
stmt.offset = Nodes::Offset.new(1)
- stmt.limit = Nodes::Limit.new(Nodes.build_quoted(10))
+ stmt.limit = Nodes::Limit.new(10)
sql = compile(stmt)
sql.must_be_like "SELECT OFFSET 1 ROWS FETCH FIRST 10 ROWS ONLY"
end
@@ -31,7 +31,7 @@ module Arel
describe 'locking' do
it 'removes limit when locking' do
stmt = Nodes::SelectStatement.new
- stmt.limit = Nodes::Limit.new(Nodes.build_quoted(10))
+ stmt.limit = Nodes::Limit.new(10)
stmt.lock = Nodes::Lock.new(Arel.sql('FOR UPDATE'))
sql = compile(stmt)
sql.must_be_like "SELECT FOR UPDATE"
diff --git a/test/visitors/test_postgres.rb b/test/visitors/test_postgres.rb
index d6de216d91..4b7dbe367f 100644
--- a/test/visitors/test_postgres.rb
+++ b/test/visitors/test_postgres.rb
@@ -53,11 +53,21 @@ module Arel
describe "Nodes::Matches" do
it "should know how to visit" do
node = @table[:name].matches('foo%')
+ node.must_be_kind_of Nodes::Matches
+ node.case_sensitive.must_equal(false)
compile(node).must_be_like %{
"users"."name" ILIKE 'foo%'
}
end
+ it "should know how to visit case sensitive" do
+ node = @table[:name].matches('foo%', nil, true)
+ node.case_sensitive.must_equal(true)
+ compile(node).must_be_like %{
+ "users"."name" LIKE 'foo%'
+ }
+ end
+
it "can handle ESCAPE" do
node = @table[:name].matches('foo!%', '!')
compile(node).must_be_like %{
@@ -77,11 +87,21 @@ module Arel
describe "Nodes::DoesNotMatch" do
it "should know how to visit" do
node = @table[:name].does_not_match('foo%')
+ node.must_be_kind_of Nodes::DoesNotMatch
+ node.case_sensitive.must_equal(false)
compile(node).must_be_like %{
"users"."name" NOT ILIKE 'foo%'
}
end
+ it "should know how to visit case sensitive" do
+ node = @table[:name].does_not_match('foo%', nil, true)
+ node.case_sensitive.must_equal(true)
+ compile(node).must_be_like %{
+ "users"."name" NOT LIKE 'foo%'
+ }
+ end
+
it "can handle ESCAPE" do
node = @table[:name].does_not_match('foo!%', '!')
compile(node).must_be_like %{
@@ -100,34 +120,55 @@ module Arel
describe "Nodes::Regexp" do
it "should know how to visit" do
- node = Arel::Nodes::Regexp.new(@table[:name], Nodes.build_quoted('foo%'))
+ node = @table[:name].matches_regexp('foo.*')
+ node.must_be_kind_of Nodes::Regexp
+ node.case_sensitive.must_equal(true)
compile(node).must_be_like %{
- "users"."name" ~ 'foo%'
+ "users"."name" ~ 'foo.*'
+ }
+ end
+
+ it "can handle case insensitive" do
+ node = @table[:name].matches_regexp('foo.*', false)
+ node.must_be_kind_of Nodes::Regexp
+ node.case_sensitive.must_equal(false)
+ compile(node).must_be_like %{
+ "users"."name" ~* 'foo.*'
}
end
it 'can handle subqueries' do
- subquery = @table.project(:id).where(Arel::Nodes::Regexp.new(@table[:name], Nodes.build_quoted('foo%')))
+ subquery = @table.project(:id).where(@table[:name].matches_regexp('foo.*'))
node = @attr.in subquery
compile(node).must_be_like %{
- "users"."id" IN (SELECT id FROM "users" WHERE "users"."name" ~ 'foo%')
+ "users"."id" IN (SELECT id FROM "users" WHERE "users"."name" ~ 'foo.*')
}
end
end
describe "Nodes::NotRegexp" do
it "should know how to visit" do
- node = Arel::Nodes::NotRegexp.new(@table[:name], Nodes.build_quoted('foo%'))
+ node = @table[:name].does_not_match_regexp('foo.*')
+ node.must_be_kind_of Nodes::NotRegexp
+ node.case_sensitive.must_equal(true)
+ compile(node).must_be_like %{
+ "users"."name" !~ 'foo.*'
+ }
+ end
+
+ it "can handle case insensitive" do
+ node = @table[:name].does_not_match_regexp('foo.*', false)
+ node.case_sensitive.must_equal(false)
compile(node).must_be_like %{
- "users"."name" !~ 'foo%'
+ "users"."name" !~* 'foo.*'
}
end
it 'can handle subqueries' do
- subquery = @table.project(:id).where(Arel::Nodes::NotRegexp.new(@table[:name], Nodes.build_quoted('foo%')))
+ subquery = @table.project(:id).where(@table[:name].does_not_match_regexp('foo.*'))
node = @attr.in subquery
compile(node).must_be_like %{
- "users"."id" IN (SELECT id FROM "users" WHERE "users"."name" !~ 'foo%')
+ "users"."id" IN (SELECT id FROM "users" WHERE "users"."name" !~ 'foo.*')
}
end
end