/rspec_caching_test

rspec_caching_test

Primary LanguageRuby

rspec_caching_test

this is copy project

https://github.com/econsultancy/rspec-caching-test-plugin/blob/econsultancy-2011-08-05

Insatall

In your Gemfile:

gem 'rspec_caching_test', require: 'false', git: 'git://github.com/kengos/rspec_caching_test.git'

In your spec_helper.rb:

require 'rspec_caching_test'
RspecCachingTest::CacheTest.setup

with Spork:

Spork.prefork do
  # something
		
  require 'rspec_caching_test'
  RspecCachingTest::CacheTest.setup
		
  RSpec.configure do |config|
    # something
  end
end

Spork.each_run do
  # something
end

Usage:

if you use caches_page

Controller:

class ProductsController < ActionController::Base
  caches_page :index  
 
  def index
    # something
  end
end

RSpec:

describe "get 'index'" do
  it "should cache the page" do
    lambda { get :index }.should cache_page('/products') # this is page url
  end
end

if you use caches_action

Maybe contains bugs

Controller:

class ProductsController < ActionController::Base
  caches_action :index
  
  def index
    # something
  end
end

RSpec:

describe "get 'index'" do
  it "should cache the action" do
    lambda { get :index }.should cache_action(:index)
  end
end

if you use fragment

View:

<%= cache 'my_cache' do %>
  <p>my_cache</p>
<% end %>

RSpec:

describe "get 'index'" do
  it "should fragment cache" do
    lambda { get :index }.should cache_fragment('views/my_cache')
  end
end

More

use subject:

before { get :index }
subject { controller.cache_store.cached }
it { should have(3).items }
it { should be_include([xxxx, yyyy, zzzz]) }

cache_store:

before { get :index }
it { controller.cache_store.should be_kind_of RspecCachingTest::CacheTest::TestStore }