Sha256: 3dc128bfedb6ffc9d748f7344b1afee307ea18e2d003a4aecf91a6bd2c68a8d7

Contents?: true

Size: 1.75 KB

Versions: 3

Compression:

Stored size: 1.75 KB

Contents

require 'test_helper'

describe Rack::PageCaching::Response do
  let(:rack_response) do
    [
      200,
      { 'Content-Type' => 'text/html; charset=utf-8' },
      ['Foo Bar']
    ]
  end

  let(:env) do
    {
      'PATH_INFO' => '/hotels/singapore',
      'REQUEST_METHOD' => 'GET',
      'HTTP_HOST' => 'www.example.org',
      'rack.page_caching.perform_caching' => true
    }
  end

  let(:response) { Rack::PageCaching::Response.new(rack_response, env) }

  it 'is cacheable for successful html responses' do
    response.cacheable?.must_equal true
  end

  it 'returns the path' do
    response.path.must_equal '/hotels/singapore'
  end

  it 'returns the body' do
    response.body.must_equal ['Foo Bar']
  end

  it 'returns the content type' do
    response.content_type.must_equal 'text/html'
  end

  it 'returns the host' do
    response.host.must_equal 'www.example.org'
  end

  describe 'no caching' do
    describe 'no directive provided' do
      before { env.delete 'rack.page_caching.perform_caching' }
      it 'is not cacheable by default' do
        response.cacheable?.must_equal false
      end
    end

    describe 'directive is false' do
      before { env.merge! 'rack.page_caching.perform_caching' => false }
      it 'is not cacheable if perform_caching env is set to false' do
        response.cacheable?.must_equal false
      end
    end

    describe 'response not cacheable' do
      before { env.merge! 'REQUEST_METHOD' => 'POST' }
      it 'does not cache post requests' do
        response.cacheable?.must_equal false
      end
    end

    describe 'non-200 response' do
      before { rack_response[0] = 404 }
      it 'does not cache resposes where status is not 200' do
        response.cacheable?.must_equal false
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rack-page_caching-0.0.3 test/rack/page_caching/response_spec.rb
rack-page_caching-0.0.2 test/rack/page_caching/response_spec.rb
rack-page_caching-0.0.1 test/rack/page_caching/response_spec.rb