discourse-assign/spec/lib/random_assign_utils_spec.rb

46 lines
1.4 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
require_relative '../support/assign_allowed_group'
require 'random_assign_utils'
describe RandomAssignUtils do
before do
SiteSetting.assign_enabled = true
end
let(:post) { Fabricate(:post) }
describe '.recently_assigned_users_ids' do
context 'no one has been assigned' do
it 'returns an empty array' do
assignees_ids = described_class.recently_assigned_users_ids(post.topic_id, 2.months.ago)
expect(assignees_ids).to eq([])
end
end
context 'users have been assigned' do
let(:admin) { Fabricate(:admin) }
let(:assign_allowed_group) { Group.find_by(name: 'staff') }
let(:user_1) { Fabricate(:user, groups: [assign_allowed_group]) }
let(:user_2) { Fabricate(:user, groups: [assign_allowed_group]) }
let(:user_3) { Fabricate(:user, groups: [assign_allowed_group]) }
it 'returns the recently assigned user ids' do
freeze_time 1.months.ago do
Assigner.new(post.topic, admin).assign(user_1)
Assigner.new(post.topic, admin).assign(user_2)
end
freeze_time 3.months.ago do
Assigner.new(post.topic, admin).assign(user_3)
end
assignees_ids = described_class.recently_assigned_users_ids(post.topic_id, 2.months.ago)
expect(assignees_ids).to contain_exactly(user_1.id, user_2.id)
end
end
end
end