1
0
mirror of https://github.com/fspc/BikeShed-1.git synced 2025-02-28 08:43:23 -05:00

Added api/time_entry/delete method

This commit is contained in:
Jason Denney 2014-05-03 22:06:56 -04:00
parent 24facd4dee
commit d94c436ba5
4 changed files with 58 additions and 0 deletions

View File

@ -1,5 +1,6 @@
class Api::V1::TimeEntriesController < Api::V1::BaseController class Api::V1::TimeEntriesController < Api::V1::BaseController
EXPECTED_TIME_ENTRY = "Expected time entry in submitted data" EXPECTED_TIME_ENTRY = "Expected time entry in submitted data"
NOT_FOUND = "Time entry not found"
def create def create
if params[:time_entries] && time_entry = params[:time_entries].first if params[:time_entries] && time_entry = params[:time_entries].first
@ -19,4 +20,13 @@ class Api::V1::TimeEntriesController < Api::V1::BaseController
render json: { errors: [EXPECTED_TIME_ENTRY]}, status: 422 and return render json: { errors: [EXPECTED_TIME_ENTRY]}, status: 422 and return
end end
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 end

View File

@ -31,6 +31,7 @@ Velocipede::Application.routes.draw do
put 'tasks/update' => "tasks#update", as: "api_update_task" put 'tasks/update' => "tasks#update", as: "api_update_task"
post 'time_entries/create' => "time_entries#create", as: "api_create_time_entry" 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
end end

View File

@ -77,4 +77,41 @@ describe Api::V1::TimeEntriesController do
end end
end 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 end

View File

@ -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