Commit a48fe5f383cb6712d739f7bce562874415f7dbb8

Authored by João M. M. Silva + Rafael Reggiani Manzo
Committed by Rafael Manzo
1 parent fc4da177

project model update method Unit tests

spec/controllers/projects_controller_spec.rb
... ... @@ -13,7 +13,7 @@ describe ProjectsController do
13 13  
14 14 describe 'create' do
15 15  
16   - context 'with a valid fields' do
  16 + context 'with valid fields' do
17 17 before :each do
18 18 @subject = FactoryGirl.build(:project)
19 19 @subject_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
... ... @@ -92,4 +92,51 @@ describe ProjectsController do
92 92 end
93 93 end
94 94  
95   -end
  95 + describe 'update' do
  96 +
  97 + context 'with valid fields' do
  98 + before :each do
  99 + @subject = FactoryGirl.build(:project)
  100 + @subject_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
  101 +
  102 + Project.expects(:find).with(@subject.id.to_s).returns(@subject)
  103 + Project.any_instance.expects(:update).with(@subject_params).returns(true)
  104 + end
  105 +
  106 + context 'rendering the show' do
  107 + before :each do
  108 + Project.expects(:exists?).returns(true)
  109 +
  110 + post :update, :id => @subject.id, :project => @subject_params
  111 + end
  112 +
  113 + it 'should redirect to the show view' do
  114 + response.should redirect_to project_path(@subject)
  115 + end
  116 + end
  117 +
  118 + context 'without rendering the show view' do
  119 + before :each do
  120 + post :update, :id => @subject.id, :project => @subject_params
  121 + end
  122 +
  123 + it { should respond_with(:redirect) }
  124 + end
  125 + end
  126 +
  127 + context 'with an invalid field' do
  128 + before :each do
  129 + @subject = FactoryGirl.build(:project)
  130 + @subject_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
  131 +
  132 + Project.expects(:find).with(@subject.id.to_s).returns(@subject)
  133 + Project.any_instance.expects(:update).with(@subject_params).returns(false)
  134 +
  135 + post :update, :id => @subject.id, :project => @subject_params
  136 + end
  137 +
  138 + it { should render_template(:edit) }
  139 + end
  140 + end
  141 +
  142 +end
96 143 \ No newline at end of file
... ...
spec/models/project_spec.rb
... ... @@ -31,5 +31,32 @@ describe Project do
31 31 end
32 32 end
33 33 end
  34 +
  35 + describe 'update' do
  36 + before :each do
  37 + @qt = FactoryGirl.build(:project)
  38 + @qt_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
  39 + end
  40 +
  41 + context 'with valid attributes' do
  42 + before :each do
  43 + @qt.expects(:save).returns(true)
  44 + end
  45 +
  46 + it 'should return true' do
  47 + @qt.update(@qt_params).should eq(true)
  48 + end
  49 + end
  50 +
  51 + context 'with invalid attributes' do
  52 + before :each do
  53 + @qt.expects(:save).returns(false)
  54 + end
  55 +
  56 + it 'should return false' do
  57 + @qt.update(@qt_params).should eq(false)
  58 + end
  59 + end
  60 + end
34 61 end
35 62 end
... ...