diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2015-12-30 13:02:14 -0200 |
---|---|---|
committer | Rafael França <rafaelmfranca@gmail.com> | 2015-12-30 13:02:14 -0200 |
commit | 3affdc1a35c1a4d6835982136129f6bc41a6afc6 (patch) | |
tree | cbf4480c67ed6896ea16d4973a7c8199299a4041 /activerecord/test | |
parent | 4f8bdfb40fd464d9bb3760dbac18cb6c6cbb4d4e (diff) | |
parent | d0be40cad168aae558eeb6a9b12acd8d113e3fc9 (diff) | |
download | rails-3affdc1a35c1a4d6835982136129f6bc41a6afc6.tar.gz rails-3affdc1a35c1a4d6835982136129f6bc41a6afc6.tar.bz2 rails-3affdc1a35c1a4d6835982136129f6bc41a6afc6.zip |
Merge pull request #22241 from kamipo/add_columns_for_distinct_for_mysql57
Add `columns_for_distinct` for MySQL 5.7 with ONLY_FULL_GROUP_BY
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/adapters/mysql2/mysql2_adapter_test.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/mysql2/mysql2_adapter_test.rb b/activerecord/test/cases/adapters/mysql2/mysql2_adapter_test.rb new file mode 100644 index 0000000000..4efd728754 --- /dev/null +++ b/activerecord/test/cases/adapters/mysql2/mysql2_adapter_test.rb @@ -0,0 +1,44 @@ +require "cases/helper" + +class Mysql2AdapterTest < ActiveRecord::Mysql2TestCase + def setup + @conn = ActiveRecord::Base.connection + end + + def test_columns_for_distinct_zero_orders + assert_equal "posts.id", + @conn.columns_for_distinct("posts.id", []) + end + + def test_columns_for_distinct_one_order + assert_equal "posts.id, posts.created_at AS alias_0", + @conn.columns_for_distinct("posts.id", ["posts.created_at desc"]) + end + + def test_columns_for_distinct_few_orders + assert_equal "posts.id, posts.created_at AS alias_0, posts.position AS alias_1", + @conn.columns_for_distinct("posts.id", ["posts.created_at desc", "posts.position asc"]) + end + + def test_columns_for_distinct_with_case + assert_equal( + 'posts.id, CASE WHEN author.is_active THEN UPPER(author.name) ELSE UPPER(author.email) END AS alias_0', + @conn.columns_for_distinct('posts.id', + ["CASE WHEN author.is_active THEN UPPER(author.name) ELSE UPPER(author.email) END"]) + ) + end + + def test_columns_for_distinct_blank_not_nil_orders + assert_equal "posts.id, posts.created_at AS alias_0", + @conn.columns_for_distinct("posts.id", ["posts.created_at desc", "", " "]) + end + + def test_columns_for_distinct_with_arel_order + order = Object.new + def order.to_sql + "posts.created_at desc" + end + assert_equal "posts.id, posts.created_at AS alias_0", + @conn.columns_for_distinct("posts.id", [order]) + end +end |