summaryrefslogtreecommitdiff
path: root/spec/lib/banzai/filter/group_reference_filter_spec.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2017-02-10 16:23:48 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2017-02-13 12:20:08 +0200
commit45177e78b2dd06d60c89093d0d45651631623766 (patch)
treef438b9a46ed38c037c343912c23202c164f764cf /spec/lib/banzai/filter/group_reference_filter_spec.rb
parentde65731631c741db65cf6e6297715c936a7aaf10 (diff)
downloadgitlab-ce-dz-nested-groups-gfm.tar.gz
Add GFM support to nested groupsdz-nested-groups-gfm
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'spec/lib/banzai/filter/group_reference_filter_spec.rb')
-rw-r--r--spec/lib/banzai/filter/group_reference_filter_spec.rb59
1 files changed, 59 insertions, 0 deletions
diff --git a/spec/lib/banzai/filter/group_reference_filter_spec.rb b/spec/lib/banzai/filter/group_reference_filter_spec.rb
new file mode 100644
index 00000000000..52905bc7fd5
--- /dev/null
+++ b/spec/lib/banzai/filter/group_reference_filter_spec.rb
@@ -0,0 +1,59 @@
+require 'spec_helper'
+
+describe Banzai::Filter::GroupReferenceFilter, lib: true do
+ include FilterSpecHelper
+
+ let(:project) { create(:empty_project, :public) }
+ let(:group) { create(:group) }
+ let(:reference) { group.to_reference }
+
+ context 'mentioning a group' do
+ it_behaves_like 'a reference containing an element node'
+
+ let(:group) { create(:group) }
+ let(:reference) { group.to_reference }
+
+ it 'links to the Group' do
+ doc = reference_filter("Hey #{reference}")
+ expect(doc.css('a').first.attr('href')).to eq urls.group_url(group)
+ end
+
+ it 'includes a data-group attribute' do
+ doc = reference_filter("Hey #{reference}")
+ link = doc.css('a').first
+
+ expect(link).to have_attribute('data-group')
+ expect(link.attr('data-group')).to eq group.id.to_s
+ end
+ end
+
+ context 'mentioning a nested group' do
+ it_behaves_like 'a reference containing an element node'
+
+ let(:group) { create(:group, :nested) }
+ let(:reference) { group.to_reference }
+
+ it 'links to the nested group' do
+ doc = reference_filter("Hey #{reference}")
+
+ expect(doc.css('a').first.attr('href')).to eq urls.group_url(group)
+ end
+ end
+
+ it 'supports an :only_path context' do
+ doc = reference_filter("Hey #{reference}", only_path: true)
+ link = doc.css('a').first.attr('href')
+
+ expect(link).not_to match %r(https?://)
+ expect(link).to eq urls.group_path(group)
+ end
+
+ describe '#groups' do
+ it 'returns a Hash containing all groups' do
+ document = Nokogiri::HTML.fragment("<p>#{group.to_reference}</p>")
+ filter = described_class.new(document, project: project)
+
+ expect(filter.groups).to eq({ group.path => group })
+ end
+ end
+end