Serialize assignment assignee (#320)

This commit is contained in:
Isaac Janzen 2022-04-26 10:12:05 -05:00 committed by GitHub
parent 21d89179ea
commit de36236dbc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 10 deletions

View File

@ -2,7 +2,7 @@
# name: discourse-assign # name: discourse-assign
# about: Assign users to topics # about: Assign users to topics
# version: 1.0.0 # version: 1.0.1
# authors: Sam Saffron # authors: Sam Saffron
# url: https://github.com/discourse/discourse-assign # url: https://github.com/discourse/discourse-assign
# transpile_js: true # transpile_js: true
@ -583,7 +583,7 @@ after_initialize do
# UserBookmarkSerializer # UserBookmarkSerializer
add_to_serializer(:user_bookmark, :assigned_to_user, false) do 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 end
add_to_serializer(:basic_user, :assign_icon) do add_to_serializer(:basic_user, :assign_icon) do
@ -607,7 +607,7 @@ after_initialize do
end end
add_to_serializer(:user_bookmark, :assigned_to_group, false) do 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 end
add_to_serializer(:user_bookmark, 'include_assigned_to_group?') do add_to_serializer(:user_bookmark, 'include_assigned_to_group?') do
@ -616,7 +616,7 @@ after_initialize do
# PostSerializer # PostSerializer
add_to_serializer(:post, :assigned_to_user) do 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 end
add_to_serializer(:post, 'include_assigned_to_user?') do add_to_serializer(:post, 'include_assigned_to_user?') do
@ -624,7 +624,7 @@ after_initialize do
end end
add_to_serializer(:post, :assigned_to_group, false) do 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 end
add_to_serializer(:post, 'include_assigned_to_group?') do add_to_serializer(:post, 'include_assigned_to_group?') do

View File

@ -3,7 +3,7 @@
require 'rails_helper' require 'rails_helper'
require_relative '../support/assign_allowed_group' require_relative '../support/assign_allowed_group'
RSpec.describe PostSerializer do describe PostSerializer do
fab!(:user) { Fabricate(:user) } fab!(:user) { Fabricate(:user) }
fab!(:topic) { Fabricate(:topic) } fab!(:topic) { Fabricate(:topic) }
fab!(:post) { Fabricate(:post, topic: topic) } fab!(:post) { Fabricate(:post, topic: topic) }
@ -19,14 +19,18 @@ RSpec.describe PostSerializer do
it "includes assigned user in serializer" do it "includes assigned user in serializer" do
Assigner.new(post, user).assign(user) Assigner.new(post, user).assign(user)
serializer = PostSerializer.new(post, scope: guardian) serializer = PostSerializer.new(post, scope: guardian)
expect(serializer.as_json[:post][:assigned_to_user].id).to eq(user.id) post = serializer.as_json[:post]
expect(serializer.as_json[:post][:assigned_to_group]).to be nil 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 end
it "includes assigned group in serializer" do it "includes assigned group in serializer" do
Assigner.new(post, user).assign(assign_allowed_group) Assigner.new(post, user).assign(assign_allowed_group)
serializer = PostSerializer.new(post, scope: guardian) serializer = PostSerializer.new(post, scope: guardian)
expect(serializer.as_json[:post][:assigned_to_group].id).to eq(assign_allowed_group.id) post = serializer.as_json[:post]
expect(serializer.as_json[:post][:assigned_to_user]).to be nil 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
end end

View File

@ -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