# frozen_string_literal: true RSpec.describe FoundUserSerializer do fab!(:user) let(:serializer) { described_class.new(user, root: false) } describe "#id" do it "returns user id" do json = serializer.as_json expect(json.keys).to include :id expect(json[:id]).to eq(user.id) end end describe "#name" do it "returns name if enabled in site settings" do SiteSetting.enable_names = true json = serializer.as_json expect(json.keys).to include :name expect(json[:name]).to eq(user.name) end it "doesn't return name if disabled in site settings" do SiteSetting.enable_names = false json = serializer.as_json expect(json.keys).not_to include :name end end describe "#status" do fab!(:user_status) before { user.user_status = user_status } context "when status is enabled in site settings" do before { SiteSetting.enable_user_status = true } it "doesn't add user status by default" do serializer = FoundUserSerializer.new(user, root: false) json = serializer.as_json expect(json.keys).not_to include :status end context "when including user status" do let(:serializer) { FoundUserSerializer.new(user, root: false, include_status: true) } it "adds user status when enabled" do json = serializer.as_json expect(json[:status]).to_not be_nil do |status| expect(status.description).to eq(user_status.description) expect(status.emoji).to eq(user_status.emoji) end end it "doesn't add expired user status" do user.user_status.ends_at = 1.minutes.ago serializer = described_class.new(user, scope: Guardian.new(user), root: false) json = serializer.as_json expect(json.keys).not_to include :status end it "doesn't return status if user doesn't have it" do user.clear_status! user.reload json = serializer.as_json expect(json.keys).not_to include :status end end end context "when status is disabled in site settings" do before { SiteSetting.enable_user_status = false } let(:serializer) { FoundUserSerializer.new(user, root: false, include_status: true) } it "doesn't add user status" do json = serializer.as_json expect(json.keys).not_to include :status end end end end