@bogdan patch is already on the way :smile: 

```diff
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index a22849f..021c50d 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -1030,13 +1030,14 @@ module ActiveRecord
       arel.order(*orders) unless orders.empty?
     end

-    VALID_DIRECTIONS = [:asc, :desc, 'asc', 'desc'] # :nodoc:
+    VALID_DIRECTIONS = [:asc, :desc, :ASC, :DESC,
+                        'asc', 'desc', 'ASC', 'DESC'] # :nodoc:

     def validate_order_args(args)
       args.grep(Hash) do |h|
-        h.values.map(&:downcase).each do |value|
+        h.values.each do |value|
           raise ArgumentError, "Direction '#{value}' is invalid. Valid " \
-                               "directions are asc and desc." unless VALID_DIRECTIONS.include?(value)
+                               "directions are: #{VALID_DIRECTIONS.inspect}" unless VALID_DIRECTIONS.include?(value)
         end
       end
     end
diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb
index a08171c..0c02496 100644
--- a/activerecord/test/cases/relations_test.rb
+++ b/activerecord/test/cases/relations_test.rb
@@ -205,27 +205,16 @@ class RelationTest < ActiveRecord::TestCase
     assert_equal [topics(:first), topics(:second), topics(:third), topics(:fourth), topics(:fifth)], topics.to_a
   end

-  def test_nothing_raises_on_upcase_desc_arg
-    Topic.order(id: "DESC")
-  end
-
-  def test_nothing_raises_on_downcase_desc_arg
-    Topic.order(id: "desc")
-  end
-
-  def test_nothing_raises_on_upcase_asc_arg
-    Topic.order(id: "ASC")
-  end
-
-  def test_nothing_raises_on_downcase_asc_arg
-    Topic.order(id: "asc")
-  end
-
-  def test_nothing_raises_on_case_insensitive_args
-    Topic.order(id: "DeSc")
-    Topic.order(id: :DeSc)
-    Topic.order(id: "aSc")
-    Topic.order(id: :aSc)
+  def test_support_upper_and_lower_case_directions
+    assert_includes Topic.order(id: "ASC").to_sql, "ASC"
+    assert_includes Topic.order(id: "asc").to_sql, "ASC"
+    assert_includes Topic.order(id: :ASC).to_sql, "ASC"
+    assert_includes Topic.order(id: :asc).to_sql, "ASC"
+
+    assert_includes Topic.order(id: "DESC").to_sql, "DESC"
+    assert_includes Topic.order(id: "desc").to_sql, "DESC"
+    assert_includes Topic.order(id: :DESC).to_sql, "DESC"
+    assert_includes Topic.order(id: :desc).to_sql,"DESC"
   end
```