Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to spec draper decorators with rspec.

I am attempting to write specs for the individual functions in my decorators. I have specs for my helpers like the following (this is just an example):

book_helper.rb

module BookHelper
  def heading_title
    @book.name[0..200]
  end
end

book_helper_spec.rb

require 'spec_helper'

describe BookHelper do
  subject { FactoryGirl.build(:book) }

  it 'limits title to 200 characters' do
    title = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium.'
    subject.name = title
    subject.save
    @book = subject
    expect(heading_title).to eq(title[0..200])
  end
end

Given the following decorator, how can I write a spec for the function?

book_decorator.rb

class BookDecorator < Draper::Decorator
  delegate_all

  def display_days
    model.months_to_display * 30
  end
end
like image 650
Zack Avatar asked Nov 10 '14 00:11

Zack


1 Answers

For your sample, I'd try with something like:

require 'spec_helper'

describe BookDecorator do
  let(:book) { FactoryGirl.build_stubbed(:book).decorate }

  it 'returns the displayed days' do
    expect(book.display_days).to eq('600')
  end

end
like image 123
Alter Lagos Avatar answered Oct 29 '22 00:10

Alter Lagos