diff --git a/app/serializers/tag_group_serializer.rb b/app/serializers/tag_group_serializer.rb index 47db578ce82..cdfec08ef64 100644 --- a/app/serializers/tag_group_serializer.rb +++ b/app/serializers/tag_group_serializer.rb @@ -12,12 +12,14 @@ class TagGroupSerializer < ApplicationSerializer def permissions @permissions ||= begin h = {} - object.tag_group_permissions.joins(:group).includes(:group).order("groups.name").each do |tgp| - h[tgp.group.name] = tgp.permission_type - end - if h.size == 0 - h['everyone'] = TagGroupPermission.permission_types[:full] + + object.tag_group_permissions.joins(:group).includes(:group).find_each do |tgp| + name = Group::AUTO_GROUP_IDS.fetch(tgp.group_id, tgp.group.name).to_s + h[name] = tgp.permission_type end + + h["everyone"] = TagGroupPermission.permission_types[:full] if h.empty? + h end end diff --git a/spec/serializers/tag_group_serializer_spec.rb b/spec/serializers/tag_group_serializer_spec.rb new file mode 100644 index 00000000000..eefdcbc9792 --- /dev/null +++ b/spec/serializers/tag_group_serializer_spec.rb @@ -0,0 +1,21 @@ +require "rails_helper" + +describe TagGroupSerializer do + + it "doesn't translate automatic group names in permissions" do + staff_group = Group.find(Group::AUTO_GROUPS[:staff]) + staff_group.update_columns(name: "custom") + + tag_group = Fabricate(:tag_group) + tag_group.permissions = [[ + Group::AUTO_GROUPS[:staff], + TagGroupPermission.permission_types[:full] + ]] + tag_group.save! + + serialized = TagGroupSerializer.new(tag_group, root: false).as_json + + expect(serialized[:permissions].keys).to contain_exactly("staff") + end + +end