[rspec-users] view spec template.base_path
Phillip Koebbe
phillipkoebbe at gmail.com
Thu Mar 25 14:50:47 EDT 2010
On 2010-03-25 1:42 PM, Phillip Koebbe wrote:
> I have a helper method
>
> def partial_path_for(partial, options = {})
> base_path = options[:base_path] || self.template.base_path
> "_partials/#{base_path}/#{partial}"
> end
>
> and use it in a template (haml) like
>
> = render :partial => partial_path_for(:details)
>
> I'd like to have a similar helper for view specs so I can do this
>
> describe 'web/admin/merchants/show.html.haml' do
> before(:each) do
> @merchant = stub_model(Merchant, :name => 'Some Merchant')
> assigns[:merchant] = @merchant
> end
>
> it 'should render the details partial' do
> partial_path = partial_path_for(:details, :base_path =>
> self.template.base_path)
> template.should_receive(:render).with(:partial => partial_path)
> render
> end
>
> it_should_behave_like 'merchant details'
> end
>
> Unfortunately, if I debug right before the template.should_receive
> statement, self.template.base_path is nil. How can I get the path to
> the template?
>
Right after I sent that message, I discovered I could set a variable
before the initial describe statement and reuse it. This works:
base_path = 'web/admin/merchants'
describe "#{base_path}/show.html.haml" do
...
partial_path = call_some_method(:details, base_path)
...
end
But I'd really rather have the value coming from somewhere else. This
method depends on me creating a variable, which I don't like.
Peace,
Phillip
> Thanks,
> Phillip
More information about the rspec-users
mailing list