Browse Source

Accept a basic create request with JSON params

pull/44/head
baarkerlounger 4 years ago
parent
commit
901b3d7a4b
  1. 13
      app/controllers/case_logs_controller.rb
  2. 44
      spec/requests/case_log_controller_spec.rb

13
app/controllers/case_logs_controller.rb

@ -5,8 +5,11 @@ class CaseLogsController < ApplicationController
end end
def create def create
@case_log = CaseLog.create! @case_log = CaseLog.create!(create_params)
redirect_to @case_log respond_to do |format|
format.html { redirect_to @case_log }
format.json { render json: @case_log }
end
end end
# We don't have a dedicated non-editable show view # We don't have a dedicated non-editable show view
@ -66,4 +69,10 @@ private
result result
end end
end end
def create_params
return {} unless params.dig(:case_log)
params.require(:case_log).permit(CaseLog.new.attributes.keys)
end
end end

44
spec/requests/case_log_controller_spec.rb

@ -0,0 +1,44 @@
require 'rails_helper'
RSpec.describe CaseLogsController, type: :request do
describe "POST #create" do
let(:headers) do
{
"Content-Type" => "application/json",
"ACCEPT" => "application/json"
}
end
let(:tenant_code) { "T365" }
let(:tenant_age) { 35 }
let(:property_postcode) { "SE11 6TY" }
let(:params) do
{
"tenant_code": tenant_code,
"tenant_age": 35,
"property_postcode": property_postcode
}
end
before do
post "/case_logs", headers: headers, params: params.to_json
end
it "returns http success" do
expect(response).to have_http_status(:success)
end
it "returns a serialized Case Log" do
json_response = JSON.parse(response.body)
expect(json_response.keys).to match_array(CaseLog.new.attributes.keys)
end
it "creates a case log with the values passed" do
json_response = JSON.parse(response.body)
expect(json_response["tenant_code"]).to eq(tenant_code)
expect(json_response["tenant_age"]).to eq(tenant_age)
expect(json_response["property_postcode"]).to eq(property_postcode)
end
end
end
Loading…
Cancel
Save