From 07d8189edd81f5e1972db6cd402418830acda17f Mon Sep 17 00:00:00 2001
From: Bianca Nenciu <nenciu.bianca@gmail.com>
Date: Thu, 7 Apr 2022 12:21:29 +0300
Subject: [PATCH] FIX: Serialize permissions for everyone group

The permissions for the 'everyone' group were not serialized because
the list of groups a user can view did not include it. This bug was
introduced in commit dfaf9831f7e6f545b25b7ce00db5e0816a1414fb.
---
 app/serializers/category_serializer.rb       |  2 +-
 spec/serializers/category_serializer_spec.rb | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/app/serializers/category_serializer.rb b/app/serializers/category_serializer.rb
index 856ecf44ee6..7ff76772d4c 100644
--- a/app/serializers/category_serializer.rb
+++ b/app/serializers/category_serializer.rb
@@ -37,7 +37,7 @@ class CategorySerializer < SiteCategorySerializer
         .category_groups
         .joins(:group)
         .includes(:group)
-        .merge(Group.visible_groups(scope&.user, "groups.name ASC"))
+        .merge(Group.visible_groups(scope&.user, "groups.name ASC", include_everyone: true))
         .map do |cg|
           {
             permission_type: cg.permission_type,
diff --git a/spec/serializers/category_serializer_spec.rb b/spec/serializers/category_serializer_spec.rb
index aad5b4885a6..9d34d31f2cf 100644
--- a/spec/serializers/category_serializer_spec.rb
+++ b/spec/serializers/category_serializer_spec.rb
@@ -98,7 +98,19 @@ describe CategorySerializer do
         expect(json[:group_permissions]).to eq([
           { permission_type: CategoryGroup.permission_types[:readonly], group_name: group.name },
           { permission_type: CategoryGroup.permission_types[:full], group_name: private_group.name },
-          { permission_type: CategoryGroup.permission_types[:full], group_name: user_group.name }
+          { permission_type: CategoryGroup.permission_types[:full], group_name: user_group.name },
+          { permission_type: CategoryGroup.permission_types[:readonly], group_name: 'everyone' },
+        ])
+      end
+
+      it "returns the group permissions for everyone group too" do
+        category.set_permissions(everyone: :readonly)
+        category.save!
+
+        json = described_class.new(category, scope: Guardian.new(admin), root: false).as_json
+
+        expect(json[:group_permissions]).to eq([
+          { permission_type: CategoryGroup.permission_types[:readonly], group_name: 'everyone' },
         ])
       end
     end