Given a controller like this where it creates several instance variables for use by the view, would you generally test that each of those get set properly? It seems like you would want to, but it also seems a little it could be a bit tricky. What’s the right approach?
class StaffsController < ApplicationController
def index
set_index_vars
@all_staff = Staff.find_staff_for_business_all_inclusive(current_business_id)
respond_to do |format|
format.html { render :action => "index", :locals => { :all_staff => @all_staff, :all_services => @all_services, :new_vacation => @new_vacation } }
end
end
def set_index_vars
@days_of_week = days_of_week
@first_day_of_week = DefaultsConfig.first_day_of_week
@all_services = Service.services_for_business(current_business_id)
@new_vacation = StaffVacation.new
@has_hit_staff_limit = current_user_plan.has_hit_staff_limit?
end
end
The code is also posted at https://gist.github.com/1018190
If you’re going to write a controller spec, then yes, by all means test that the instance variables are assigned. Much of the ‘trickiness’ can come from dependencies on other models/libraries, so stub out those method calls: