From 06817bd94f4093eab677876f47826f5a75520063 Mon Sep 17 00:00:00 2001
From: Jan Cernik <66427541+jancernik@users.noreply.github.com>
Date: Tue, 31 Jan 2023 10:15:17 -0300
Subject: [PATCH] FIX: Category permission change not creating a log (#20027)

It didn't create a log if the category was public { "everyone" => 1 }
---
 app/controllers/categories_controller.rb  | 1 +
 spec/services/staff_action_logger_spec.rb | 8 ++++----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb
index c907c3829c7..a7293b65828 100644
--- a/app/controllers/categories_controller.rb
+++ b/app/controllers/categories_controller.rb
@@ -196,6 +196,7 @@ class CategoriesController < ApplicationController
       category_params[:minimum_required_tags] = 0 if category_params[:minimum_required_tags]&.blank?
 
       old_permissions = cat.permissions_params
+      old_permissions = { "everyone" => 1 } if old_permissions.empty?
 
       if result = cat.update(category_params)
         Scheduler::Defer.later "Log staff action change category settings" do
diff --git a/spec/services/staff_action_logger_spec.rb b/spec/services/staff_action_logger_spec.rb
index 2f535b410f2..4241857bf64 100644
--- a/spec/services/staff_action_logger_spec.rb
+++ b/spec/services/staff_action_logger_spec.rb
@@ -439,18 +439,18 @@ RSpec.describe StaffActionLogger do
       expect(name_user_history.new_value).to eq("new_name")
     end
 
-    it "does not log permissions changes for category visible to everyone" do
+    it "logs permissions changes even if the category is visible to everyone" do
       attributes = { name: "new_name" }
-      old_permission = category.permissions_params
+      old_permission = { "everyone" => 1 }
       category.update!(attributes)
 
       logger.log_category_settings_change(
         category,
-        attributes.merge(permissions: { "everyone" => 1 }),
+        attributes.merge(permissions: { "trust_level_3" => 1 }),
         old_permissions: old_permission,
       )
 
-      expect(UserHistory.count).to eq(1)
+      expect(UserHistory.count).to eq(2)
       expect(UserHistory.find_by_subject("name").category).to eq(category)
     end