Commit 5ae94e434013dccf1f90bfaa43a05b1e36c2ac5c
Committed by
Rafael Manzo
1 parent
810b3e30
Exists in
colab
and in
4 other branches
Destroy feature for reading
Signed-of By: Guilherme Rojas V. de Lima <guilhermehrojas@gmail.com>
Showing
5 changed files
with
83 additions
and
3 deletions
Show diff stats
app/controllers/readings_controller.rb
| ... | ... | @@ -37,6 +37,16 @@ class ReadingsController < 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. | ... | ... |
| ... | ... | @@ -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 "(.*?)"$ |
| 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 | ... | ... |