From 9d9cc4777be3787ed3645d704f02e5ba1228be13 Mon Sep 17 00:00:00 2001
From: George Claghorn <george.claghorn@gmail.com>
Date: Fri, 13 Feb 2015 23:41:19 -0500
Subject: Provide friendlier access to request variants

Closes #18933.
---
 actionpack/test/dispatch/request_test.rb | 49 +++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 19 deletions(-)

(limited to 'actionpack/test')

diff --git a/actionpack/test/dispatch/request_test.rb b/actionpack/test/dispatch/request_test.rb
index 61cc4dcd7e..ab492665c9 100644
--- a/actionpack/test/dispatch/request_test.rb
+++ b/actionpack/test/dispatch/request_test.rb
@@ -1128,35 +1128,46 @@ class RequestEtag < BaseRequestTest
 end
 
 class RequestVariant < BaseRequestTest
-  test "setting variant" do
-    request = stub_request
+  setup do
+    @request = stub_request
+  end
 
-    request.variant = :mobile
-    assert_equal [:mobile], request.variant
+  test 'setting variant to a symbol' do
+    @request.variant = :phone
 
-    request.variant = [:phone, :tablet]
-    assert_equal [:phone, :tablet], request.variant
+    assert @request.variant.phone?
+    assert_not @request.variant.tablet?
+    assert @request.variant.any?(:phone, :tablet)
+    assert_not @request.variant.any?(:tablet, :desktop)
+  end
 
-    assert_raise ArgumentError do
-      request.variant = [:phone, "tablet"]
-    end
+  test 'setting variant to an array of symbols' do
+    @request.variant = [:phone, :tablet]
 
-    assert_raise ArgumentError do
-      request.variant = "yolo"
-    end
+    assert @request.variant.phone?
+    assert @request.variant.tablet?
+    assert_not @request.variant.desktop?
+    assert @request.variant.any?(:tablet, :desktop)
+    assert_not @request.variant.any?(:desktop, :watch)
   end
 
-  test "reset variant" do
-    request = stub_request
+  test 'clearing variant' do
+    @request.variant = nil
 
-    request.variant = nil
-    assert_equal nil, request.variant
+    assert @request.variant.empty?
+    assert_not @request.variant.phone?
+    assert_not @request.variant.any?(:phone, :tablet)
   end
 
-  test "setting variant with non symbol value" do
-    request = stub_request
+  test 'setting variant to a non-symbol value' do
+    assert_raise ArgumentError do
+      @request.variant = 'phone'
+    end
+  end
+
+  test 'setting variant to an array containing a non-symbol value' do
     assert_raise ArgumentError do
-      request.variant = "mobile"
+      @request.variant = [:phone, 'tablet']
     end
   end
 end
-- 
cgit v1.2.3