-
-
Save mallain/451179 to your computer and use it in GitHub Desktop.
require 'test_helper' | |
class Hr::AlertCollaboratorsControllerTest < ActionController::TestCase | |
context "logged in" do | |
setup do | |
UserSession.create(Factory(:user)) | |
Factory(:agency) | |
Factory(:feedback) | |
@alert_collaborator = Factory.stub(:alert_collaborator) | |
@alert_collaborator.id = 1001 | |
AlertCollaborator.stubs(:find).returns(@alert_collaborator) | |
AlertCollaborator.stubs(:find).with(:all, anything).returns([@alert_collaborator]) | |
end | |
should_get_action :index | |
should_get_action :new | |
context "on POST to :create (valid data)" do | |
setup do | |
AlertCollaborator.any_instance.expects(:save).returns(true).once | |
AlertCollaborator.any_instance.stubs(:id).returns(1001) | |
post :create, :alert_collaborator => {} | |
end | |
should_assign_to :alert_collaborator, :class => AlertCollaborator | |
should_respond_with :redirect | |
should_redirect_to("alert_collaborator index page"){hr_alert_collaborators_path} | |
end | |
context "on POST to :create (invalid data)" do | |
setup do | |
AlertCollaborator.any_instance.expects(:save).returns(false).once | |
post :create, :alert_collaborator => {} | |
end | |
should_assign_to :alert_collaborator, :class => AlertCollaborator | |
should_respond_with :success | |
should_render_with_layout | |
should_render_template :new | |
should_not_set_the_flash | |
end | |
context "on GET to :show" do | |
setup do | |
get :show, {:id => @alert_collaborator.id} | |
end | |
should_respond_with :success | |
should_render_with_layout | |
should_render_template :show | |
should_not_set_the_flash | |
end | |
context "on GET to :edit" do | |
setup do | |
get :edit, :id => @alert_collaborator.id | |
end | |
should_respond_with :success | |
should_render_with_layout | |
should_render_template :edit | |
should_not_set_the_flash | |
end | |
context "on PUT to :update (valid data)" do | |
setup do | |
@alert_collaborator.expects(:update_attributes).returns(true).once | |
put :update, :id => @alert_collaborator.id, :alert_collaborator => {} | |
end | |
should_assign_to :alert_collaborator, :class => AlertCollaborator | |
should_respond_with :redirect | |
should_redirect_to("alert_collaborator index page"){hr_alert_collaborators_path} | |
end | |
context "on PUT to :update (invalid data)" do | |
setup do | |
@alert_collaborator.expects(:update_attributes).returns(false).once | |
put :update, :id => @alert_collaborator.id, :alert_collaborator => {} | |
end | |
should_assign_to :alert_collaborator, :class => AlertCollaborator | |
should_respond_with :success | |
should_render_template :edit | |
end | |
context "on DELETE to :destroy" do | |
setup do | |
@alert_collaborator.expects(:destroy).returns(true).once | |
delete :destroy, :id => @alert_collaborator.id | |
end | |
should_assign_to(:alert_collaborator){@alert_collaborator} | |
should_respond_with :redirect | |
should_redirect_to("alert_collaborator index page"){hr_alert_collaborators_path} | |
end | |
end | |
end |
class Hr::ArrivalCollaboratorsController < ApplicationController | |
resource_controller | |
before_filter :require_user | |
before_filter :load_data | |
create.wants.html { redirect_to hr_arrival_collaborators_path } | |
update.wants.html { redirect_to hr_arrival_collaborators_path } | |
create.before { | |
@arrival_collaborator.agency = current_agency | |
@arrival_collaborator.feedback = current_time | |
} | |
def load_data | |
@arrival_collaborators_agency = ArrivalCollaborator.find(:all, :conditions => {:agency_id => current_agency.id, :feedback_id => current_time.id}) | |
end | |
end |
mickael@mickael-laptop:~/projects/pabd/test$ ruby functional/hr/alert_collaborators_controller_test.rb | |
Loaded suite functional/hr/alert_collaborators_controller_test | |
Started | |
................................. | |
Finished in 5.545446 seconds. | |
33 tests, 50 assertions, 0 failures, 0 errors |
C'est bien le test du Destroy qui ne fonctionne pas, mais le message d'erreur n'est pas en phase.
(Edit : Le message d'erreur est en phase avec le test controller 25/06/10)
ok entre temps Emilien m'a dit que cela serait configurable dans resource controller dans un bloque destroy de lui dire de ne pas router vers l'instance mais plutôt dans index
HTH ;)
le bloque va dans Hr::ArrivalCollaboratorsController bien entendu :)
Donc en fait, même en mettant le bloc destroy ci-dessous dans le controller Hr::ArrivalCollaborators, il arrive que resource_controller ne le fasse pas au niveau "test controller" ?
destroy.wants.html { redirect_to hr_arrival_collaborators_path }
Je vais essayer de creuser de se côté là, merci à toi et Emilien.
Voilà, je viens de trouver le pourquoi du comment, il "suffisait" de transformer :
(Ligne 90) @alert_collaborator.expects(:destroy).once
en
(Ligne 90) @alert_collaborator.expects(:destroy).returns(true).once
Dans le fichier "alert_collaborators_controller_test.rb"
Une bonne chose de faite.
Je ne vois pas le teste qui ne fonctionne pas dans la source en haut, c'est bien "... DESTROY to DELETE" non?