Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/work_item_spec.rb')
-rw-r--r--spec/models/work_item_spec.rb81
1 files changed, 57 insertions, 24 deletions
diff --git a/spec/models/work_item_spec.rb b/spec/models/work_item_spec.rb
index e0ec54fd5ff..7963c0898b3 100644
--- a/spec/models/work_item_spec.rb
+++ b/spec/models/work_item_spec.rb
@@ -87,6 +87,14 @@ RSpec.describe WorkItem, feature_category: :portfolio_management do
end
end
+ describe '#todoable_target_type_name' do
+ it 'returns correct target name' do
+ work_item = build(:work_item)
+
+ expect(work_item.todoable_target_type_name).to contain_exactly('Issue', 'WorkItem')
+ end
+ end
+
describe '#widgets' do
subject { build(:work_item).widgets }
@@ -176,17 +184,32 @@ RSpec.describe WorkItem, feature_category: :portfolio_management do
is_expected.not_to include(:due, :remove_due_date)
end
end
+
+ context 'when work item supports the current user todos widget' do
+ it 'returns todos related quick action commands' do
+ is_expected.to include(:todo, :done)
+ end
+ end
+
+ context 'when work item does not support current user todos widget' do
+ let(:work_item) { build(:work_item, :task) }
+
+ before do
+ WorkItems::Type.default_by_type(:task).widget_definitions
+ .find_by_widget_type(:current_user_todos).update!(disabled: true)
+ end
+
+ it 'omits todos related quick action commands' do
+ is_expected.not_to include(:todo, :done)
+ end
+ end
end
describe 'transform_quick_action_params' do
+ let(:command_params) { { title: 'bar', assignee_ids: ['foo'] } }
let(:work_item) { build(:work_item, :task) }
- subject(:transformed_params) do
- work_item.transform_quick_action_params({
- title: 'bar',
- assignee_ids: ['foo']
- })
- end
+ subject(:transformed_params) { work_item.transform_quick_action_params(command_params) }
it 'correctly separates widget params from regular params' do
expect(transformed_params).to eq({
@@ -200,6 +223,30 @@ RSpec.describe WorkItem, feature_category: :portfolio_management do
}
})
end
+
+ context 'with current user todos widget' do
+ let(:command_params) { { title: 'bar', todo_event: param } }
+
+ where(:param, :expected) do
+ 'done' | 'mark_as_done'
+ 'add' | 'add'
+ end
+
+ with_them do
+ it 'correctly transform todo_event param' do
+ expect(transformed_params).to eq({
+ common: {
+ title: 'bar'
+ },
+ widgets: {
+ current_user_todos_widget: {
+ action: expected
+ }
+ }
+ })
+ end
+ end
+ end
end
describe 'callbacks' do
@@ -212,11 +259,13 @@ RSpec.describe WorkItem, feature_category: :portfolio_management do
create(:work_item)
end
- it_behaves_like 'issue_edit snowplow tracking' do
+ it_behaves_like 'internal event tracking' do
let(:work_item) { create(:work_item) }
- let(:property) { Gitlab::UsageDataCounters::IssueActivityUniqueCounter::ISSUE_CREATED }
+ let(:action) { Gitlab::UsageDataCounters::IssueActivityUniqueCounter::ISSUE_CREATED }
let(:project) { work_item.project }
let(:user) { work_item.author }
+ let(:namespace) { project.namespace }
+
subject(:service_action) { work_item }
end
end
@@ -255,22 +304,6 @@ RSpec.describe WorkItem, feature_category: :portfolio_management do
describe 'validations' do
subject { work_item.valid? }
- describe 'issue_type' do
- let(:work_item) { build(:work_item, issue_type: issue_type) }
-
- context 'when a valid type' do
- let(:issue_type) { :issue }
-
- it { is_expected.to eq(true) }
- end
-
- context 'empty type' do
- let(:issue_type) { nil }
-
- it { is_expected.to eq(false) }
- end
- end
-
describe 'confidentiality' do
let_it_be(:project) { create(:project) }