56 lines
1.7 KiB
Ruby
56 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe WorkItem do
|
|
describe 'associations' do
|
|
it { is_expected.to have_one(:work_item_parent).class_name('WorkItem') }
|
|
|
|
it 'has one `parent_link`' do
|
|
is_expected.to have_one(:parent_link)
|
|
.class_name('::WorkItems::ParentLink')
|
|
.with_foreign_key('work_item_id')
|
|
end
|
|
|
|
it 'has many `work_item_children`' do
|
|
is_expected.to have_many(:work_item_children)
|
|
.class_name('WorkItem')
|
|
.with_foreign_key('work_item_id')
|
|
end
|
|
|
|
it 'has many `child_links`' do
|
|
is_expected.to have_many(:child_links)
|
|
.class_name('::WorkItems::ParentLink')
|
|
.with_foreign_key('work_item_parent_id')
|
|
end
|
|
end
|
|
|
|
describe '#noteable_target_type_name' do
|
|
it 'returns `issue` as the target name' do
|
|
work_item = build(:work_item)
|
|
|
|
expect(work_item.noteable_target_type_name).to eq('issue')
|
|
end
|
|
end
|
|
|
|
describe '#widgets' do
|
|
subject { build(:work_item).widgets }
|
|
|
|
it 'returns instances of supported widgets' do
|
|
is_expected.to match_array([instance_of(WorkItems::Widgets::Description),
|
|
instance_of(WorkItems::Widgets::Hierarchy)])
|
|
end
|
|
end
|
|
|
|
describe 'callbacks' do
|
|
describe 'record_create_action' do
|
|
it 'records the creation action after saving' do
|
|
expect(Gitlab::UsageDataCounters::WorkItemActivityUniqueCounter).to receive(:track_work_item_created_action)
|
|
# During the work item transition we also want to track work items as issues
|
|
expect(Gitlab::UsageDataCounters::IssueActivityUniqueCounter).to receive(:track_issue_created_action)
|
|
|
|
create(:work_item)
|
|
end
|
|
end
|
|
end
|
|
end
|