diff --git a/plugin.rb b/plugin.rb index 84eaf87..31f44ac 100644 --- a/plugin.rb +++ b/plugin.rb @@ -34,20 +34,5 @@ def can_create_post_on_topic?(topic) Guardian.class_exec do prepend topic_overrides end - - category_overrides = Module.new do - def category_params - return super if !SiteSetting.restricted_replies_enabled - super.tap do |value| - if params["custom_fields"] && groups = params["custom_fields"]["restrict_replies_bypass_groups"] - value["custom_fields"]["restrict_replies_bypass_groups"] = groups - end - end - end - end - - CategoriesController.class_exec do - prepend category_overrides - end end end diff --git a/spec/requests/categories_controller_spec.rb b/spec/requests/categories_controller_spec.rb new file mode 100644 index 0000000..dca3eeb --- /dev/null +++ b/spec/requests/categories_controller_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +describe CategoriesController do + let(:admin) { Fabricate(:admin) } + let!(:category) { Fabricate(:category, user: admin) } + + context '#update' do + before do + SiteSetting.restricted_replies_enabled = true + sign_in(admin) + end + + it "updates `restrict_replies_bypass_groups` custom field correctly" do + readonly = CategoryGroup.permission_types[:readonly] + create_post = CategoryGroup.permission_types[:create_post] + tag_group = Fabricate(:tag_group) + + put "/categories/#{category.id}.json", params: { + name: "hello", + color: "ff0", + text_color: "fff", + slug: "hello-category", + auto_close_hours: 72, + custom_fields: { + "restrict_replies": true, + "restrict_replies_bypass_groups" => [1, 2] + } + } + + expect(response.status).to eq(200) + category.reload + expect(category.custom_fields).to eq("restrict_replies" => true, "restrict_replies_bypass_groups" => [1, 2]) + end + end +end