From de36236dbc26744f5b21b7b59a5f7be093b3186c Mon Sep 17 00:00:00 2001 From: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com> Date: Tue, 26 Apr 2022 10:12:05 -0500 Subject: [PATCH] Serialize assignment assignee (#320) --- plugin.rb | 10 ++--- spec/serializers/post_serializer_spec.rb | 14 ++++--- .../user_bookmark_serializer_spec.rb | 39 +++++++++++++++++++ 3 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 spec/serializers/user_bookmark_serializer_spec.rb diff --git a/plugin.rb b/plugin.rb index 6ae51e0..0e1c18a 100644 --- a/plugin.rb +++ b/plugin.rb @@ -2,7 +2,7 @@ # name: discourse-assign # about: Assign users to topics -# version: 1.0.0 +# version: 1.0.1 # authors: Sam Saffron # url: https://github.com/discourse/discourse-assign # transpile_js: true @@ -583,7 +583,7 @@ after_initialize do # UserBookmarkSerializer add_to_serializer(:user_bookmark, :assigned_to_user, false) do - topic.assigned_to + BasicUserSerializer.new(topic.assigned_to, scope: scope, root: false).as_json end add_to_serializer(:basic_user, :assign_icon) do @@ -607,7 +607,7 @@ after_initialize do end add_to_serializer(:user_bookmark, :assigned_to_group, false) do - topic.assigned_to + BasicGroupSerializer.new(topic.assigned_to, scope: scope, root: false).as_json end add_to_serializer(:user_bookmark, 'include_assigned_to_group?') do @@ -616,7 +616,7 @@ after_initialize do # PostSerializer add_to_serializer(:post, :assigned_to_user) do - object.assignment&.assigned_to + BasicUserSerializer.new(object.assignment.assigned_to, scope: scope, root: false).as_json end add_to_serializer(:post, 'include_assigned_to_user?') do @@ -624,7 +624,7 @@ after_initialize do end add_to_serializer(:post, :assigned_to_group, false) do - object.assignment&.assigned_to + BasicGroupSerializer.new(object.assignment.assigned_to, scope: scope, root: false).as_json end add_to_serializer(:post, 'include_assigned_to_group?') do diff --git a/spec/serializers/post_serializer_spec.rb b/spec/serializers/post_serializer_spec.rb index 80742fd..4fa6e19 100644 --- a/spec/serializers/post_serializer_spec.rb +++ b/spec/serializers/post_serializer_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' require_relative '../support/assign_allowed_group' -RSpec.describe PostSerializer do +describe PostSerializer do fab!(:user) { Fabricate(:user) } fab!(:topic) { Fabricate(:topic) } fab!(:post) { Fabricate(:post, topic: topic) } @@ -19,14 +19,18 @@ RSpec.describe PostSerializer do it "includes assigned user in serializer" do Assigner.new(post, user).assign(user) serializer = PostSerializer.new(post, scope: guardian) - expect(serializer.as_json[:post][:assigned_to_user].id).to eq(user.id) - expect(serializer.as_json[:post][:assigned_to_group]).to be nil + post = serializer.as_json[:post] + expect(post[:assigned_to_user][:id]).to eq(user.id) + expect(post[:assigned_to_user][:assign_icon]).to eq("user-plus") + expect(post[:assigned_to_group]).to be(nil) end it "includes assigned group in serializer" do Assigner.new(post, user).assign(assign_allowed_group) serializer = PostSerializer.new(post, scope: guardian) - expect(serializer.as_json[:post][:assigned_to_group].id).to eq(assign_allowed_group.id) - expect(serializer.as_json[:post][:assigned_to_user]).to be nil + post = serializer.as_json[:post] + expect(post[:assigned_to_group][:id]).to eq(assign_allowed_group.id) + expect(post[:assigned_to_group][:assign_icon]).to eq("group-plus") + expect(post[:assigned_to_user]).to be(nil) end end diff --git a/spec/serializers/user_bookmark_serializer_spec.rb b/spec/serializers/user_bookmark_serializer_spec.rb new file mode 100644 index 0000000..6981272 --- /dev/null +++ b/spec/serializers/user_bookmark_serializer_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'rails_helper' +require_relative '../support/assign_allowed_group' + +describe UserBookmarkSerializer do + fab!(:user) { Fabricate(:user) } + fab!(:topic) { Fabricate(:topic) } + fab!(:post) { Fabricate(:post, topic: topic) } + fab!(:bookmark) { Fabricate(:bookmark, user: user, post: post) } + let(:guardian) { Guardian.new(user) } + + include_context 'A group that is allowed to assign' + + before do + SiteSetting.assign_enabled = true + add_to_assign_allowed_group(user) + end + + it "includes assigned user in serializer" do + Assigner.new(topic, user).assign(user) + serializer = UserBookmarkSerializer.new(bookmark, scope: guardian) + bookmark = serializer.as_json[:user_bookmark] + + expect(bookmark[:assigned_to_user][:id]).to eq(user.id) + expect(bookmark[:assigned_to_user][:assign_icon]).to eq("user-plus") + expect(bookmark[:assigned_to_group]).to be(nil) + end + + it "includes assigned group in serializer" do + Assigner.new(topic, user).assign(assign_allowed_group) + serializer = UserBookmarkSerializer.new(bookmark, scope: guardian) + bookmark = serializer.as_json[:user_bookmark] + + expect(bookmark[:assigned_to_group][:id]).to eq(assign_allowed_group.id) + expect(bookmark[:assigned_to_group][:assign_icon]).to eq("group-plus") + expect(bookmark[:assigned_to_user]).to be(nil) + end +end