Browse Source

WIP, cleaned up api/time_entries, added TimeEntry

* Added scoped TimeEntry model
* Removed setting defaults in TimeEntry controller
* Still working on tests…
denney-fix-saving-dates
Jason Denney 11 years ago
parent
commit
1191014471
  1. 21
      app/controllers/api/v1/time_entries_controller.rb
  2. 15
      app/models/time_entry.rb
  3. 29
      spec/controllers/api/time_entries_controller_spec.rb

21
app/controllers/api/v1/time_entries_controller.rb

@ -1,25 +1,16 @@
class Api::V1::TimeEntriesController < Api::V1::BaseController class Api::V1::TimeEntriesController < Api::V1::BaseController
EXPECTED_TIME_ENTRY = "Expected time entry in submitted data"
def create def create
if params[:time_entries] && time_entry = params[:time_entries].first if params[:time_entries] && time_entry = params[:time_entries].first
puts time_entry.inspect time_entry.merge!({ loggable_id: current_user.id,
time_entry_defaults = { logger_id: current_user.id })
loggable_type: "User",
loggable_id: current_user.id,
log_action_type: "ActsAsLoggable::UserAction"}
time_entry.merge!(time_entry_defaults)
if time_entry[:bike_id] >= 0 if time_entry[:bike_id] >= 0
copy_defaults = { time_entry.copy_to_bike_history(time_entry[:bike_id])
copy_log: true,
copy_type: 'Bike',
copy_id: time_entry[:bike_id],
copy_action_type: 'ActsAsLoggable::BikeAction',
copy_action_id: 4
}
time_entry.merge!( copy_defaults )
end end
@time_entry = ::ActsAsLoggable::Log.new(time_entry.except(:bike_id)) @time_entry = TimeEntry.new(time_entry.except(:bike_id))
if !@time_entry.save if !@time_entry.save
render json: { errors: @time_entry.errors }, status: 422 and return render json: { errors: @time_entry.errors }, status: 422 and return
end end

15
app/models/time_entry.rb

@ -0,0 +1,15 @@
class TimeEntry < ActsAsLoggable::Log
default_scope where( loggable_type: "User",
logger_type: "User",
log_action_type: "ActsAsLoggable::UserAction")
def copy_to_bike_history(bike_id)
self.assign_attributes({
copy_log: true,
copy_type: 'Bike',
copy_id: bike_id,
copy_action_type: 'ActsAsLoggable::BikeAction',
copy_action_id: 4
})
end
end

29
spec/controllers/api/time_entries_controller_spec.rb

@ -0,0 +1,29 @@
require 'spec_helper'
describe Api::V1::TimeEntriesController do
describe "#create" do
context "as a user" do
let!(:user){ FactoryGirl.create(:user) }
before(:each) do
sign_in user
end
context "with no time entry in json data" do
it "returns error status" do
post :create
json = JSON.parse(@response.body)
expect(@response.code.to_i).to eql 422
end
it "returns an error message" do
post :create
json = JSON.parse(@response.body)
expect(json["errors"].first).to eql Api::V1::TimeEntriesController::EXPECTED_TIME_ENTRY
end
end
end
end
end
Loading…
Cancel
Save