Luke Galea-4 wrote:
Could someone point me in the right direction?
I thought the simplest way would be to either call the login action
from my other tests before(:all), but I can't seem to find how to
call another controller from within the spec for a different
controller. (Results in @controller is nil).
This is what we do. I realize that according to the another poster this is the wrong way, but it is the best way we've found for use with Goldberg.
def goldbergAuthAdmin()
get 'goldberg/auth/login'
#Goldberg::AuthController.set_user(session, Goldberg::User.find_by_name(:first, "admin").id)
#Our Admin user has id 2.
Goldberg::AuthController.set_user(session,2)
end
BTW, another important step is bootstrapping goldberg into your test database...
To facilitate this we added two methods to the GoldbergMigration model:
def self.clear_for_class(klass, dest)
filename = "#{dest}/#{klass.to_s.sub(/^Goldberg::/, '')}.yml"
records = klass.delete_all
end
def self.clear_bootstrap
self.goldberg_classes.each do |klass|
self.clear_for_class klass, "#{File.dirname(__FILE__)}/../db"
end
end
Then add this to spec_helper.rb, or your own included spec_helper
def goldbergReload()
GoldbergMigration.clear_bootstrap
GoldbergMigration.load_bootstrap
end
Then call this from a before(:all) in the first describe of each rspec needing goldberg. Of course you have to have dumped your goldberg bootstrap from dev/production first (You do this in the console: "GoldbergMigration.dump_bootstrap" to save all goldberg settings, controller/action perms, users roles, etc to some yaml files).
Hope that helps!
Peter Boling
Sagebit, LLC