diff options
Diffstat (limited to 'spec/lib/banzai/filter')
-rw-r--r-- | spec/lib/banzai/filter/group_reference_filter_spec.rb | 59 | ||||
-rw-r--r-- | spec/lib/banzai/filter/user_reference_filter_spec.rb | 25 |
2 files changed, 61 insertions, 23 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 diff --git a/spec/lib/banzai/filter/user_reference_filter_spec.rb b/spec/lib/banzai/filter/user_reference_filter_spec.rb index 3e1ac9fb2b2..ac0ca7e2c64 100644 --- a/spec/lib/banzai/filter/user_reference_filter_spec.rb +++ b/spec/lib/banzai/filter/user_reference_filter_spec.rb @@ -92,26 +92,6 @@ describe Banzai::Filter::UserReferenceFilter, lib: true do end end - 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 - it 'links with adjacent text' do doc = reference_filter("Mention me (#{reference}.)") expect(doc.to_html).to match(/\(<a.+>#{reference}<\/a>\.\)/) @@ -176,13 +156,12 @@ describe Banzai::Filter::UserReferenceFilter, lib: true do end end - describe '#namespaces' do + describe '#users' do it 'returns a Hash containing all Namespaces' do document = Nokogiri::HTML.fragment("<p>#{user.to_reference}</p>") filter = described_class.new(document, project: project) - ns = user.namespace - expect(filter.namespaces).to eq({ ns.path => ns }) + expect(filter.users).to eq({ user.username => user }) end end |