aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-07-30 00:08:27 +0900
committerGitHub <noreply@github.com>2019-07-30 00:08:27 +0900
commit2e6d9af6c8b9900481dabfca685b3e335c2f27aa (patch)
treee2af35d2fb64037fe3764bb9b9a026f1fa91f053 /activerecord/test
parent79740de065e9b5ff03e9956f7e6151f6e1c03f58 (diff)
parent92c265b3ad89303e53e64f7ead4499066966c722 (diff)
downloadrails-2e6d9af6c8b9900481dabfca685b3e335c2f27aa.tar.gz
rails-2e6d9af6c8b9900481dabfca685b3e335c2f27aa.tar.bz2
rails-2e6d9af6c8b9900481dabfca685b3e335c2f27aa.zip
Merge pull request #36800 from jamespearson/matches_regex_mysql
Enabled matches_regex for MySql
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/arel/visitors/mysql_test.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/activerecord/test/cases/arel/visitors/mysql_test.rb b/activerecord/test/cases/arel/visitors/mysql_test.rb
index 5f37587957..05dccd126e 100644
--- a/activerecord/test/cases/arel/visitors/mysql_test.rb
+++ b/activerecord/test/cases/arel/visitors/mysql_test.rb
@@ -104,6 +104,52 @@ module Arel
sql.must_be_like %{ NOT "users"."name" <=> NULL }
end
end
+
+ describe "Nodes::Regexp" do
+ before do
+ @table = Table.new(:users)
+ @attr = @table[:id]
+ end
+
+ it "should know how to visit" do
+ node = @table[:name].matches_regexp("foo.*")
+ node.must_be_kind_of Nodes::Regexp
+ compile(node).must_be_like %{
+ "users"."name" REGEXP 'foo.*'
+ }
+ end
+
+ it "can handle subqueries" do
+ 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" REGEXP 'foo.*')
+ }
+ end
+ end
+
+ describe "Nodes::NotRegexp" do
+ before do
+ @table = Table.new(:users)
+ @attr = @table[:id]
+ end
+
+ it "should know how to visit" do
+ node = @table[:name].does_not_match_regexp("foo.*")
+ node.must_be_kind_of Nodes::NotRegexp
+ compile(node).must_be_like %{
+ "users"."name" NOT REGEXP 'foo.*'
+ }
+ end
+
+ it "can handle subqueries" do
+ 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" NOT REGEXP 'foo.*')
+ }
+ end
+ end
end
end
end