Skip to content

Commit

Permalink
Added api/time_entry/delete method
Browse files Browse the repository at this point in the history
  • Loading branch information
spacemunkay committed May 4, 2014
1 parent 24facd4 commit d94c436
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 0 deletions.
10 changes: 10 additions & 0 deletions app/controllers/api/v1/time_entries_controller.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
class Api::V1::TimeEntriesController < Api::V1::BaseController
EXPECTED_TIME_ENTRY = "Expected time entry in submitted data"
NOT_FOUND = "Time entry not found"

def create
if params[:time_entries] && time_entry = params[:time_entries].first
Expand All @@ -19,4 +20,13 @@ def create
render json: { errors: [EXPECTED_TIME_ENTRY]}, status: 422 and return
end
end

def delete
if time_entry = TimeEntry.find_by_id(params[:id])
time_entry.delete
render nothing: true, status: 204 and return
else
render json: { errors: [NOT_FOUND]}, status: 404 and return
end
end
end
1 change: 1 addition & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
put 'tasks/update' => "tasks#update", as: "api_update_task"

post 'time_entries/create' => "time_entries#create", as: "api_create_time_entry"
delete 'time_entries/:id' => "time_entries#delete", as: "api_delete_time_entry"
end
end

Expand Down
37 changes: 37 additions & 0 deletions spec/controllers/api/time_entries_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,41 @@
end
end
end

describe "#delete" do
context "as a user" do
let!(:user){ FactoryGirl.create(:user) }

before(:each) do
sign_in user
end

context "entry does not exist" do
it "returns 404" do
delete :delete, id: 9000
expect(@response.code.to_i).to eql 404
end

it "returns not found" do
delete :delete, id: 9000
json = JSON.parse(@response.body)
expect(json).to have_key("errors")
expect(json.to_s).to include("not found")
end
end

context "entry exists" do
let!(:entry){ FactoryGirl.create(:time_entry) }

it "deletes the time entry" do
expect{delete :delete, id: entry.id}.to change{TimeEntry.count}
end

it "returns 204" do
delete :delete, id: entry.id
expect(@response.code.to_i).to eql 204
end
end
end
end
end
10 changes: 10 additions & 0 deletions spec/factories/time_entries.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FactoryGirl.define do
factory :time_entry do
loggable_type User.to_s
logger_type User.to_s
start_date Time.now
end_date Time.now
log_action_id 1
log_action_type ActsAsLoggable::UserAction.to_s
end
end

0 comments on commit d94c436

Please sign in to comment.