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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-07-22 12:11:01 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-07-22 12:11:01 +0300
commit2763994b8f9e44c8ee9bd7197622e6bcba00a4db (patch)
tree3af5f9c78673031982f7b3b4baf5df2054e40926 /spec/helpers
parentc17064b66b122d3f0b05560ea65a66df76537083 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/helpers')
-rw-r--r--spec/helpers/issuables_description_templates_helper_spec.rb115
1 files changed, 86 insertions, 29 deletions
diff --git a/spec/helpers/issuables_description_templates_helper_spec.rb b/spec/helpers/issuables_description_templates_helper_spec.rb
index 768ce5975c1..bd8af384d40 100644
--- a/spec/helpers/issuables_description_templates_helper_spec.rb
+++ b/spec/helpers/issuables_description_templates_helper_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
RSpec.describe IssuablesDescriptionTemplatesHelper, :clean_gitlab_redis_cache do
- include_context 'project issuable templates context'
-
describe '#issuable_templates' do
+ include_context 'project issuable templates context'
+
let_it_be(:inherited_from) { nil }
let_it_be(:user) { create(:user) }
let_it_be(:parent_group, reload: true) { create(:group) }
@@ -44,7 +44,7 @@ RSpec.describe IssuablesDescriptionTemplatesHelper, :clean_gitlab_redis_cache do
end
end
- describe '#selected_template' do
+ describe '#available_service_desk_templates_for' do
let_it_be(:project) { build(:project) }
before do
@@ -72,46 +72,103 @@ RSpec.describe IssuablesDescriptionTemplatesHelper, :clean_gitlab_redis_cache do
].to_json
expect(helper.available_service_desk_templates_for(@project)).to eq(value)
end
+ end
- context 'when no issuable_template parameter or default template is present' do
- it 'does not select a template' do
- expect(helper.selected_template(project)).to be(nil)
- end
+ context 'when there are no templates in the project' do
+ let(:templates) { {} }
+
+ it 'returns empty array' do
+ value = [].to_json
+ expect(helper.available_service_desk_templates_for(@project)).to eq(value)
end
+ end
+ end
- context 'when an issuable_template parameter has been provided' do
- before do
- allow(helper).to receive(:params).and_return({ issuable_template: 'another_issue_template' })
- end
+ describe '#selected_template_name' do
+ let(:template_names) { %w(another_issue_template custom_issue_template) }
- it 'selects the issuable template' do
- expect(helper.selected_template(project)).to eq('another_issue_template')
- end
+ context 'when no issuable_template parameter is provided' do
+ it 'does not select a template' do
+ expect(helper.selected_template_name(template_names)).to be_nil
end
+ end
- context 'when there is a default template' do
- let(:templates) do
- {
- "" => [
- { name: "another_issue_template", id: "another_issue_template", project_id: project.id },
- { name: "default", id: "default", project_id: project.id }
- ]
- }
+ context 'when an issuable_template parameter has been provided' do
+ before do
+ allow(helper).to receive(:params).and_return({ issuable_template: template_param_value })
+ end
+
+ context 'when param matches existing templates' do
+ let(:template_param_value) { 'another_issue_template' }
+
+ it 'returns the matching issuable template' do
+ expect(helper.selected_template_name(template_names)).to eq('another_issue_template')
end
+ end
- it 'selects the default template' do
- expect(helper.selected_template(project)).to eq('default')
+ context 'when param does not match any templates' do
+ let(:template_param_value) { 'non_matching_issue_template' }
+
+ it 'returns nil' do
+ expect(helper.selected_template_name(template_names)).to be_nil
end
end
end
+ end
- context 'when there are not templates in the project' do
- let(:templates) { {} }
+ describe '#default_template_name' do
+ context 'when a default template is available' do
+ let(:template_names) { %w(another_issue_template deFault) }
- it 'returns empty array' do
- value = [].to_json
- expect(helper.available_service_desk_templates_for(@project)).to eq(value)
+ it 'returns the default template' do
+ issue = build(:issue)
+
+ expect(helper.default_template_name(template_names, issue)).to be('deFault')
+ end
+
+ it 'returns nil when issuable has a description set' do
+ issue = build(:issue, description: 'from template in project settings')
+
+ expect(helper.default_template_name(template_names, issue)).to be_nil
+ end
+
+ it 'returns nil when issuable is persisted' do
+ issue = create(:issue)
+
+ expect(helper.default_template_name(template_names, issue)).to be_nil
+ end
+ end
+
+ context 'when there is no default template' do
+ let(:template_names) { %w(another_issue_template) }
+
+ it 'returns nil' do
+ expect(helper.default_template_name(template_names, build(:issue))).to be_nil
end
end
end
+
+ describe '#template_names' do
+ let(:project) { build(:project) }
+ let(:templates) do
+ {
+ "Project templates" => [
+ { name: "another_issue_template", id: "another_issue_template", project_id: project.id },
+ { name: "custom_issue_template", id: "custom_issue_template", project_id: project.id }
+ ],
+ "Group templates" => [
+ { name: "another_issue_template", id: "another_issue_template", project_id: project.id }
+ ]
+ }
+ end
+
+ before do
+ allow(helper).to receive(:ref_project).and_return(project)
+ allow(helper).to receive(:issuable_templates).and_return(templates)
+ end
+
+ it 'returns unique list of template names' do
+ expect(helper.template_names(build(:issue))).to contain_exactly('another_issue_template', 'custom_issue_template')
+ end
+ end
end