From 3151bea1dacca58bbaab6678047240b25ac29845 Mon Sep 17 00:00:00 2001 From: Natalie Tay Date: Sat, 30 Apr 2022 03:10:08 +0800 Subject: [PATCH] DEV: Backfill tests (#324) --- spec/lib/assigner_spec.rb | 27 ++++++++++++++++ .../serializers/topic_view_serializer_spec.rb | 32 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 spec/serializers/topic_view_serializer_spec.rb diff --git a/spec/lib/assigner_spec.rb b/spec/lib/assigner_spec.rb index 4db6669..c1a11cd 100644 --- a/spec/lib/assigner_spec.rb +++ b/spec/lib/assigner_spec.rb @@ -43,6 +43,33 @@ RSpec.describe Assigner do .to eq(TopicUser.notification_levels[:tracking]) end + it "publishes topic assignment after assign and unassign" do + messages = MessageBus.track_publish('/staff/topic-assignment') do + assigner = described_class.new(topic, moderator_2) + assigner.assign(moderator) + assigner.unassign + end + + expect(messages[0].channel).to eq "/staff/topic-assignment" + expect(messages[0].data).to include({ + type: "assigned", + topic_id: topic.id, + post_id: false, + post_number: false, + assigned_type: "User", + assigned_to: BasicUserSerializer.new(moderator, scope: Guardian.new, root: false).as_json, + }) + + expect(messages[1].channel).to eq "/staff/topic-assignment" + expect(messages[1].data).to include({ + type: "unassigned", + topic_id: topic.id, + post_id: false, + post_number: false, + assigned_type: "User", + }) + end + it 'does not update notification level if already watching' do TopicUser.change(moderator.id, topic.id, notification_level: TopicUser.notification_levels[:watching] diff --git a/spec/serializers/topic_view_serializer_spec.rb b/spec/serializers/topic_view_serializer_spec.rb new file mode 100644 index 0000000..50cbbc7 --- /dev/null +++ b/spec/serializers/topic_view_serializer_spec.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +require 'rails_helper' +require_relative '../support/assign_allowed_group' + +RSpec.describe TopicViewSerializer do + fab!(:user) { Fabricate(:user) } + fab!(:topic) { Fabricate(:topic) } + fab!(:post) { Fabricate(:post, topic: topic) } + 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 = TopicViewSerializer.new(TopicView.new(topic), scope: guardian) + expect(serializer.as_json[:topic_view][:assigned_to_user][:username]).to eq(user.username) + expect(serializer.as_json[:topic_view][:assigned_to_group]).to be nil + end + + it "includes assigned group in serializer" do + Assigner.new(topic, user).assign(assign_allowed_group) + serializer = TopicViewSerializer.new(TopicView.new(topic), scope: guardian) + expect(serializer.as_json[:topic_view][:assigned_to_group][:name]).to eq(assign_allowed_group.name) + expect(serializer.as_json[:topic_view][:assigned_to_user]).to be nil + end +end