Testing simple STI with FactoryGirl
factory-bot, rspec, ruby, ruby-on-rails, sti
Solution
You can declare the definitions of factories as follow:
FactoryGirl.define do
factory :task, class: 'Task' do
shop
currency
value 10
end
factory :counter_task, parent: :task, class: 'CounterTask' do
end
end
And now you can test base class isolated from its own factory and the same for each inherited class.
Problem
I have got a class, that is the base of some other classes that specializes the behavior: ``` class Task < ActiveRecord::Base attr_accessible :type, :name, :command validates_presence_of :type, :name, :command # some methods I would like to test end ``` The class CounterTask inherits from Task ``` class CounterTask < Task end ``` This all works fine until I am trying to test the base class, since it must have a type. ``` FactoryGirl.define do factory :task do sequence(:name) { |n| "name_#{n}" } sequence(:command) { |n| "command_#{n}" } end end ``` How would you test the basic functionality of the superclass?