From b60e78f81142ecd3f3416a4b976e32241616082f Mon Sep 17 00:00:00 2001
From: Kat <katrina@kosiak.co.uk>
Date: Mon, 8 Apr 2024 09:30:37 +0100
Subject: [PATCH] Set created_by on single log

---
 app/controllers/logs_controller.rb             | 10 ++++++++--
 spec/requests/lettings_logs_controller_spec.rb | 16 +++++++++++++++-
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/app/controllers/logs_controller.rb b/app/controllers/logs_controller.rb
index 87b9668ef..949e705bd 100644
--- a/app/controllers/logs_controller.rb
+++ b/app/controllers/logs_controller.rb
@@ -47,9 +47,9 @@ private
 
   def log_params
     if current_user && !current_user.support?
-      org_params.merge(api_log_params)
+      org_params.merge(api_log_params).merge(created_by_params)
     else
-      api_log_params
+      api_log_params.merge(created_by_params)
     end
   end
 
@@ -71,6 +71,12 @@ private
     }
   end
 
+  def created_by_params
+    return {} unless current_user
+
+    { "created_by_id" => current_user.id }
+  end
+
   def search_term
     params["search"]
   end
diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb
index a7bc9dc04..ecb8a439a 100644
--- a/spec/requests/lettings_logs_controller_spec.rb
+++ b/spec/requests/lettings_logs_controller_spec.rb
@@ -139,9 +139,11 @@ RSpec.describe LettingsLogsController, type: :request do
 
       it "tracks who created the record" do
         created_id = response.location.match(/[0-9]+/)[0]
-        whodunnit_actor = LettingsLog.find_by(id: created_id).versions.last.actor
+        log = LettingsLog.find(created_id)
+        whodunnit_actor = log.versions.last.actor
         expect(whodunnit_actor).to be_a(User)
         expect(whodunnit_actor.id).to eq(user.id)
+        expect(log.reload.created_by).to eq(user)
       end
 
       context "when creating a new log" do
@@ -161,6 +163,12 @@ RSpec.describe LettingsLogsController, type: :request do
             expect(lettings_log.owning_organisation).to eq(nil)
             expect(lettings_log.managing_organisation).to eq(nil)
           end
+
+          it "sets created_by to current user" do
+            created_id = response.location.match(/[0-9]+/)[0]
+            lettings_log = LettingsLog.find(created_id)
+            expect(lettings_log.created_by).to eq(support_user)
+          end
         end
 
         context "when the user is not support" do
@@ -180,6 +188,12 @@ RSpec.describe LettingsLogsController, type: :request do
               expect(lettings_log.owning_organisation.name).to eq("User org")
               expect(lettings_log.managing_organisation.name).to eq("User org")
             end
+
+            it "sets created_by to current user" do
+              created_id = response.location.match(/[0-9]+/)[0]
+              lettings_log = LettingsLog.find(created_id)
+              expect(lettings_log.created_by).to eq(user)
+            end
           end
 
           context "when the user's org doesn't hold stock" do