From aeeb22947cf160f3219b8e6e50bb6d516c208502 Mon Sep 17 00:00:00 2001 From: Joe Freund Date: Wed, 26 Jul 2023 18:16:37 -0700 Subject: [PATCH 1/3] Added API for adding and updating notes and phones outside the change request paradigm --- app/controllers/notes_controller.rb | 31 ++++++++++++++++++++-------- app/controllers/phones_controller.rb | 9 ++++++++ config/routes.rb | 3 +++ 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/app/controllers/notes_controller.rb b/app/controllers/notes_controller.rb index c9852080..418291b5 100644 --- a/app/controllers/notes_controller.rb +++ b/app/controllers/notes_controller.rb @@ -2,19 +2,32 @@ class NotesController < ApplicationController def create - if params[:service_id] - note = service.notes.build - note.note = params[:note][:note] - service.save! - elsif params[:resource_id] - note = resource.notes.build - note.note = params[:note][:note] - resource.save! + note = nil + note_json = params[:note] + if note_json[:service_id] + note = Note.create(service_id: note_json[:service_id], note: note_json[:note]) + note.save! + elsif note_json[:resource_id] + note = Note.create(resource_id: note_json[:resource_id], note: note_json[:note]) + note.save! + else + render plain: "Improper Note Data", status: 400 + return end - + render status: :created, json: note end + def update + + note = Note.find(params[:id]) + note.note = params[:note][:note] + note.save + + render status: :ok, json: note + + end + def destroy note = Note.find params[:id] note.delete diff --git a/app/controllers/phones_controller.rb b/app/controllers/phones_controller.rb index 820de66d..5abd5cce 100644 --- a/app/controllers/phones_controller.rb +++ b/app/controllers/phones_controller.rb @@ -1,6 +1,15 @@ # frozen_string_literal: true class PhonesController < ApplicationController + def create + phone_json = params[:phone] + + phone = Phone.create(resource_id: phone_json[:resource_id], number: phone_json[:number], + service_type: phone_json[:service_type], description: phone_json[:description]) + + render status: :created, json: phone + end + def destroy phone = Phone.find params[:id] phone.delete diff --git a/config/routes.rb b/config/routes.rb index e02b12e9..0c8b9f0b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -48,6 +48,8 @@ end end resources :notes do + post :create + put :update resources :change_requests, only: :create end resources :addresses do @@ -57,6 +59,7 @@ resources :change_requests, only: :create end resources :phones do + post :create resources :change_requests, only: :create end resources :textings, only: %i[create destroy] From 78abbe4f1fe11b3f6829db89159fc53ff18b5a33 Mon Sep 17 00:00:00 2001 From: Joe Freund Date: Wed, 26 Jul 2023 19:23:03 -0700 Subject: [PATCH 2/3] Added postman tests for new API endpoints --- .../AskDarcel%20API.postman_collection.json | 202 +++++++++++++++++- 1 file changed, 201 insertions(+), 1 deletion(-) diff --git a/postman/AskDarcel%20API.postman_collection.json b/postman/AskDarcel%20API.postman_collection.json index 9df76b8c..645d0f9e 100644 --- a/postman/AskDarcel%20API.postman_collection.json +++ b/postman/AskDarcel%20API.postman_collection.json @@ -1,6 +1,6 @@ { "info": { - "_postman_id": "fca7c8d9-8e45-4f57-a7b4-cd66fcc57bf7", + "_postman_id": "648fcc4b-4bde-42d7-9391-02a7dde4d0a9", "name": "AskDarcel API", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "_exporter_id": "680011" @@ -1627,6 +1627,49 @@ }, "response": [] }, + { + "name": "Add Phone", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "tests[\"Response time is less than 1000ms\"] = responseTime < 1000;", + "", + "tests[\"Status code is 201\"] = responseCode.code === 201;" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{ \n\t\"phone\" : {\n\t\t\"number\" : \"4155555267\",\n \"service_type\" : \"O\",\n \"resource_id\" : \"1\",\n \"description\" : \"a phone\"\n\t}\n}" + }, + "url": { + "raw": "{{base_url}}/phones", + "host": [ + "{{base_url}}" + ], + "path": [ + "phones" + ] + } + }, + "response": [] + }, { "name": "Submit New Service", "event": [ @@ -1983,6 +2026,163 @@ }, "response": [] }, + { + "name": "Add Note for Service", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Adding instruction\", function () {", + " pm.response.to.have.status(201);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"note\": {\n \"instruction\": \"test note\",\n \"service_id\": 1\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{base_url}}/notes", + "host": [ + "{{base_url}}" + ], + "path": [ + "notes" + ] + } + }, + "response": [] + }, + { + "name": "Add Note for Resource", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Adding instruction\", function () {", + " pm.response.to.have.status(201);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"note\": {\n \"instruction\": \"test note\",\n \"resource_id\": 1\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{base_url}}/notes", + "host": [ + "{{base_url}}" + ], + "path": [ + "notes" + ] + } + }, + "response": [] + }, + { + "name": "Add Orphaned Note", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Adding instruction\", function () {", + " pm.response.to.have.status(400);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"note\": {\n \"note\": \"test note\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{base_url}}/notes", + "host": [ + "{{base_url}}" + ], + "path": [ + "notes" + ] + } + }, + "response": [] + }, + { + "name": "Update Note", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Adding instruction\", function () {", + " pm.response.to.have.status(201);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"note\": {\n \"note\": \"updated note\",\n \"resource_id\": 2\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{base_url}}/notes/2", + "host": [ + "{{base_url}}" + ], + "path": [ + "notes", + "2" + ] + } + }, + "response": [] + }, { "name": "Delete Note", "event": [ From 74cf875d26bbadeafa3520088c9fca90b3abb24e Mon Sep 17 00:00:00 2001 From: Joe Freund Date: Wed, 23 Aug 2023 19:14:38 -0700 Subject: [PATCH 3/3] Cleanup to new API endpoints --- app/controllers/notes_controller.rb | 8 +++----- app/controllers/phones_controller.rb | 4 ++-- config/routes.rb | 3 --- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/app/controllers/notes_controller.rb b/app/controllers/notes_controller.rb index 418291b5..ddeedd33 100644 --- a/app/controllers/notes_controller.rb +++ b/app/controllers/notes_controller.rb @@ -5,11 +5,9 @@ def create note = nil note_json = params[:note] if note_json[:service_id] - note = Note.create(service_id: note_json[:service_id], note: note_json[:note]) - note.save! + note = Note.create!(service_id: note_json[:service_id], note: note_json[:note]) elsif note_json[:resource_id] - note = Note.create(resource_id: note_json[:resource_id], note: note_json[:note]) - note.save! + note = Note.create!(resource_id: note_json[:resource_id], note: note_json[:note]) else render plain: "Improper Note Data", status: 400 return @@ -22,7 +20,7 @@ def update note = Note.find(params[:id]) note.note = params[:note][:note] - note.save + note.save! render status: :ok, json: note diff --git a/app/controllers/phones_controller.rb b/app/controllers/phones_controller.rb index 5abd5cce..b94d1dfd 100644 --- a/app/controllers/phones_controller.rb +++ b/app/controllers/phones_controller.rb @@ -4,8 +4,8 @@ class PhonesController < ApplicationController def create phone_json = params[:phone] - phone = Phone.create(resource_id: phone_json[:resource_id], number: phone_json[:number], - service_type: phone_json[:service_type], description: phone_json[:description]) + phone = Phone.create!(resource_id: phone_json[:resource_id], number: phone_json[:number], + service_type: phone_json[:service_type], description: phone_json[:description]) render status: :created, json: phone end diff --git a/config/routes.rb b/config/routes.rb index 0c8b9f0b..e02b12e9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -48,8 +48,6 @@ end end resources :notes do - post :create - put :update resources :change_requests, only: :create end resources :addresses do @@ -59,7 +57,6 @@ resources :change_requests, only: :create end resources :phones do - post :create resources :change_requests, only: :create end resources :textings, only: %i[create destroy]