diff options
Diffstat (limited to 'spec/models/members/member_task_spec.rb')
-rw-r--r-- | spec/models/members/member_task_spec.rb | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/spec/models/members/member_task_spec.rb b/spec/models/members/member_task_spec.rb deleted file mode 100644 index b06aa05c255..00000000000 --- a/spec/models/members/member_task_spec.rb +++ /dev/null @@ -1,124 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe MemberTask do - describe 'Associations' do - it { is_expected.to belong_to(:member) } - it { is_expected.to belong_to(:project) } - end - - describe 'Validations' do - it { is_expected.to validate_presence_of(:member) } - it { is_expected.to validate_presence_of(:project) } - it { is_expected.to validate_inclusion_of(:tasks).in_array(MemberTask::TASKS.values) } - - describe 'unique tasks validation' do - subject do - build(:member_task, tasks: [0, 0]) - end - - it 'expects the task values to be unique' do - expect(subject).to be_invalid - expect(subject.errors[:tasks]).to include('are not unique') - end - end - - describe 'project validations' do - let_it_be(:project) { create(:project) } - - subject do - build(:member_task, member: member, project: project, tasks_to_be_done: [:ci, :code]) - end - - context 'when the member source is a group' do - let_it_be(:member) { create(:group_member) } - - it "expects the project to be part of the member's group projects" do - expect(subject).to be_invalid - expect(subject.errors[:project]).to include('is not in the member group') - end - - context "when the project is part of the member's group projects" do - let_it_be(:project) { create(:project, namespace: member.source) } - - it { is_expected.to be_valid } - end - end - - context 'when the member source is a project' do - let_it_be(:member) { create(:project_member) } - - it "expects the project to be the member's project" do - expect(subject).to be_invalid - expect(subject.errors[:project]).to include('is not the member project') - end - - context "when the project is the member's project" do - let_it_be(:project) { member.source } - - it { is_expected.to be_valid } - end - end - end - end - - describe '.for_members' do - it 'returns the member_tasks for multiple members' do - member1 = create(:group_member) - member_task1 = create(:member_task, member: member1) - create(:member_task) - expect(described_class.for_members([member1])).to match_array([member_task1]) - end - end - - describe '#tasks_to_be_done' do - subject { member_task.tasks_to_be_done } - - let_it_be(:member_task) { build(:member_task) } - - before do - member_task[:tasks] = [0, 1] - end - - it 'returns an array of symbols for the corresponding integers' do - expect(subject).to match_array([:ci, :code]) - end - end - - describe '#tasks_to_be_done=' do - let_it_be(:member_task) { build(:member_task) } - - context 'when passing valid values' do - subject { member_task[:tasks] } - - before do - member_task.tasks_to_be_done = tasks - end - - context 'when passing tasks as strings' do - let_it_be(:tasks) { %w(ci code) } - - it 'sets an array of integers for the corresponding tasks' do - expect(subject).to match_array([0, 1]) - end - end - - context 'when passing a single task' do - let_it_be(:tasks) { :ci } - - it 'sets an array of integers for the corresponding tasks' do - expect(subject).to match_array([1]) - end - end - - context 'when passing a task twice' do - let_it_be(:tasks) { %w(ci ci) } - - it 'is set only once' do - expect(subject).to match_array([1]) - end - end - end - end -end |