Commit 5ae94e434013dccf1f90bfaa43a05b1e36c2ac5c

Authored by Fellipe Souto Sampaio
Committed by Rafael Manzo
1 parent 810b3e30

Destroy feature for reading

Signed-of By: Guilherme Rojas V. de Lima <guilhermehrojas@gmail.com>
app/controllers/readings_controller.rb
... ... @@ -37,6 +37,16 @@ class ReadingsController &lt; ApplicationController
37 37 end
38 38 end
39 39  
  40 + # DELETE /reading_groups/1/readings/1
  41 + # DELETE /reading_groups/1/readings/1
  42 + def destroy
  43 + @reading.destroy
  44 + respond_to do |format|
  45 + format.html { redirect_to reading_group_path(params[:reading_group_id].to_i) }
  46 + format.json { head :no_content }
  47 + end
  48 + end
  49 +
40 50 private
41 51  
42 52 # Never trust parameters from the scary internet, only allow the white list through.
... ...
features/reading/delete.feature 0 → 100644
... ... @@ -0,0 +1,23 @@
  1 +Feature: Reading Deletion
  2 + In order to be able to remove reading
  3 + As a regular user
  4 + The system should have an interface to it
  5 +
  6 + @kalibro_restart
  7 + Scenario: Should delete a reading that I own
  8 + Given I am a regular user
  9 + And I am signed in
  10 + And I own a sample reading group
  11 + And I have a sample reading within the sample reading group
  12 + When I visit the Sample Reading Group page
  13 + And I click the Destroy link
  14 + Then I should see "There are no readings yet!"
  15 +
  16 + @kalibro_restart
  17 + Scenario: Should not see the destroy reading link in the reading groups that I not own
  18 + Given I am a regular user
  19 + And I am signed in
  20 + And I have a sample reading group
  21 + And I have a sample reading within the sample reading group
  22 + When I visit the Sample Reading Group page
  23 + Then I should not see "Destroy"
0 24 \ No newline at end of file
... ...
features/step_definitions/reading_steps.rb
... ... @@ -14,10 +14,11 @@ Given(/^I have a sample reading within the sample reading group labeled &quot;(.*?)&quot;$
14 14 @reading = FactoryGirl.create(:reading, {label: label, group_id: @reading_group.id, id: nil})
15 15 end
16 16  
17   -Given(/^I have a sample reading within the module result labeled "(.*?)"$/) do |label|
18   - @reading = FactoryGirl.create(:reading, {label: label, group_id: @reading_group.id, id: nil})
  17 +When(/^I click the "(.*?)" td$/) do |text|
  18 + p page.find('td', text: text).methods
19 19 end
20 20  
21 21 Then(/^I should be at the New Reading page$/) do
22 22 visit new_reading_group_reading_path(@reading_group.id)
23 23 end
  24 +
... ...
features/step_definitions/user_steps.rb
... ... @@ -17,4 +17,8 @@ end
17 17  
18 18 Then(/^I should be in the User Projects page$/) do
19 19 page.should have_content("#{@user.name} Projects")
  20 +end
  21 +
  22 +When(/^I take a picture of the page$/) do
  23 + page.save_screenshot("/tmp/picture.png")
20 24 end
21 25 \ No newline at end of file
... ...
spec/controllers/readings_controller_spec.rb
... ... @@ -125,7 +125,7 @@ describe ReadingsController do
125 125 post :update, reading_group_id: reading_group.id, id: reading.id, reading: reading_params
126 126 end
127 127  
128   - it { should redirect_to(reading_group_reading_path(reading_group.id, reading.id)) }
  128 + it { should redirect_to(reading_group_path(reading_group.id)) }
129 129 it { should respond_with(:redirect) }
130 130 end
131 131  
... ... @@ -161,4 +161,46 @@ describe ReadingsController do
161 161 end
162 162 end
163 163  
  164 + describe 'destroy' do
  165 + let(:reading) { FactoryGirl.build(:reading) }
  166 +
  167 + context 'with an User logged in' do
  168 + before do
  169 + sign_in FactoryGirl.create(:user)
  170 + end
  171 +
  172 + context 'when the user owns the reading group' do
  173 + before :each do
  174 + subject.expects(:reading_owner?).returns true
  175 + reading.expects(:destroy)
  176 + Reading.expects(:find).at_least_once.with(reading.id).returns(reading)
  177 +
  178 + delete :destroy, id: reading.id, reading_group_id: reading.group_id.to_s
  179 + end
  180 +
  181 + it { should redirect_to(reading_group_path(reading.group_id)) }
  182 + it { should respond_with(:redirect) }
  183 + end
  184 +
  185 + context "when the user doesn't own the reading group" do
  186 + before :each do
  187 + Reading.expects(:find).at_least_once.with(reading.id).returns(reading)
  188 +
  189 + delete :destroy, id: reading.id, reading_group_id: reading.group_id.to_s
  190 + end
  191 +
  192 + it { should redirect_to(reading_group_path(reading.group_id)) }
  193 + it { should respond_with(:redirect) }
  194 + end
  195 + end
  196 +
  197 + context 'with no User logged in' do
  198 + before :each do
  199 + delete :destroy, id: reading.id, reading_group_id: reading.group_id.to_s
  200 + end
  201 +
  202 + it { should redirect_to new_user_session_path }
  203 + end
  204 + end
  205 +
164 206 end
165 207 \ No newline at end of file
... ...