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/lib/banzai/pipeline/gfm_pipeline_spec.rb')
-rw-r--r--spec/lib/banzai/pipeline/gfm_pipeline_spec.rb53
1 files changed, 52 insertions, 1 deletions
diff --git a/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb b/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb
index 448422b15e3..beb760637b0 100644
--- a/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb
+++ b/spec/lib/banzai/pipeline/gfm_pipeline_spec.rb
@@ -2,12 +2,63 @@
require 'spec_helper'
-describe Banzai::Pipeline::GfmPipeline do
+RSpec.describe Banzai::Pipeline::GfmPipeline do
describe 'integration between parsing regular and external issue references' do
let(:project) { create(:redmine_project, :public) }
context 'when internal issue tracker is enabled' do
context 'when shorthand pattern #ISSUE_ID is used' do
+ it 'links an internal issues and keep updated nodes in result[:reference_filter_nodes]', :aggregate_failures do
+ issue = create(:issue, project: project)
+ markdown = "text #{issue.to_reference(project, full: true)}"
+
+ result = described_class.call(markdown, project: project)
+ link = result[:output].css('a').first
+ text = result[:output].children.first
+
+ expect(link['href']).to eq(Gitlab::Routing.url_helpers.project_issue_path(project, issue))
+ expect(result[:reference_filter_nodes]).to eq([text])
+ end
+ end
+
+ it 'executes :each_node only once for first reference filter', :aggregate_failures do
+ issue = create(:issue, project: project)
+ markdown = "text #{issue.to_reference(project, full: true)}"
+
+ expect_any_instance_of(Banzai::Filter::ReferenceFilter).to receive(:each_node).once
+
+ described_class.call(markdown, project: project)
+ end
+
+ context "with update_nodes_for_banzai_reference_filter feature flag disabled" do
+ before do
+ stub_feature_flags(update_nodes_for_banzai_reference_filter: false)
+ end
+
+ context 'when shorthand pattern #ISSUE_ID is used' do
+ it 'links an internal issues and doesnt store nodes in result[:reference_filter_nodes]', :aggregate_failures do
+ issue = create(:issue, project: project)
+ markdown = "text #{issue.to_reference(project, full: true)}"
+ result = described_class.call(markdown, project: project)
+ link = result[:output].css('a').first
+
+ expect(link['href']).to eq(Gitlab::Routing.url_helpers.project_issue_path(project, issue))
+ expect(result[:reference_filter_nodes]).to eq nil
+ end
+ end
+
+ it 'execute :each_node for each reference_filter', :aggregate_failures do
+ issue = create(:issue, project: project)
+ markdown = "text #{issue.to_reference(project, full: true)}"
+ described_class.reference_filters do |reference_filter|
+ expect_any_instance_of(reference_filter).to receive(:each_node).once
+ end
+
+ described_class.call(markdown, project: project)
+ end
+ end
+
+ context 'when shorthand pattern #ISSUE_ID is used' do
it 'links an internal issue if it exists' do
issue = create(:issue, project: project)
markdown = issue.to_reference(project, full: true)