Sha256: def67e6e816c274903943d0d288e8e9a66f1292908dcd5702244294693685e74

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

require 'helper'

class TestRackRequest < Test::Unit::TestCase

  context "Rack::Request" do
    context "#is_mobile?" do
      context "without params" do
        setup do
          Rack::Request.any_instance.stubs(:params).returns({})
        end

        should "not detect a regular browser as mobile" do
          assert !request.is_mobile?
          assert !request("HTTP_USER_AGENT" => nil).is_mobile?
        end

        should "detect mobile units as mobile" do
          [ :ipod, :iphone, :android, :blackberry, :samsung ].each do |phone|
            agent = self.send(phone)
            assert request("HTTP_USER_AGENT" => agent).is_mobile?
          end
        end

        should "return true for a mobile browser" do
          assert request("HTTP_USER_AGENT" => iphone).is_mobile?
        end

        should "return false when forced in the session" do
          Rack::Request.any_instance.stubs(:session).returns({ Rack::Schmobile::IS_MOBILE => false })
          assert !request("HTTP_USER_AGENT" => iphone).is_mobile?
        end

        should "return true when forced in the session" do
          assert request("rack.session" => { Rack::Schmobile::IS_MOBILE => "true" }).is_mobile?
        end
      end

      context "with params" do
        should "return false when forced via a request parameter" do
          Rack::Request.any_instance.stubs(:params).returns({ Rack::Schmobile::IS_MOBILE => "false" })
          assert !request("HTTP_USER_AGENT" => iphone).is_mobile?
        end

        should "return true when forced via a request parameter" do
          Rack::Request.any_instance.stubs(:params).returns({ Rack::Schmobile::IS_MOBILE => "true" })
          assert request.is_mobile?
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
schmobile-0.1.0 test/test_rack_request.rb