elabs/pundit — pull request #49 by coop (2013-08-12 04:55:25+00:00)
Title: Allow policies to be injected into controllers.

In controller specs instead of relying on Pundit to instantiate the correct policy object allow it to be injected into the controller. More often than not a double is used in controller specs which means the policy cannot be inferred. This also allows us to double the policy to ensure that on a unit level the rights methods are being called on collaborators.

``` ruby
class PostsController < ApplicationController
attr_writer :post
helper_method :post

def create
authorize post

post.save
respond_with post
end

private

def post
@post ||= Post.new post_attributes
end
end

describe PagesController do
let(:policy) { double 'SomePolicy', create?: true }

before do
controller.policy = policy
end

it 'delegates authorization to policy' do
expect(policy).to have_received(:create?)
end
end
```