From 3e436e2dafef4e93e7b2d9d4db1549b51a8ebe5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Tue, 21 Aug 2018 12:56:56 +0200 Subject: [PATCH] FIX: doesn't translate group permission keys --- app/serializers/tag_group_serializer.rb | 12 ++++++----- spec/serializers/tag_group_serializer_spec.rb | 21 +++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 spec/serializers/tag_group_serializer_spec.rb 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