From 60983d0d939da5d49e32f4d6c2ac8feefe482eb6 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Sun, 29 Oct 2023 17:36:33 +0800 Subject: [PATCH] Add spec tests for GitLab link inline macro --- spec/gitlab_link_inline_macro_spec.rb | 113 ++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 spec/gitlab_link_inline_macro_spec.rb diff --git a/spec/gitlab_link_inline_macro_spec.rb b/spec/gitlab_link_inline_macro_spec.rb new file mode 100644 index 0000000..b2893ef --- /dev/null +++ b/spec/gitlab_link_inline_macro_spec.rb @@ -0,0 +1,113 @@ +# frozen_string_literal: true + +describe GitLabLinkInlineMacro do + it 'should link to the GitLab page for GitLab project' do + input = 'gitlab:gitlab-org/gitlab[]' + + expected = <<~RESULT + gitlab-org/gitlab + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it 'should link to the GitLab page for GitLab project with only the repo part as caption' do + input = 'gitlab:gitlab-org/gitlab[opts=repo]' + + expected = <<~RESULT + gitlab + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it 'should link to the GitLab page for GitLab project with replaced captions' do + input = 'gitlab:gitlab-org/gitlab[GitLab project]' + + expected = <<~RESULT + GitLab project + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it 'should link to the README of the GitLab project in a certain revision' do + input = 'gitlab:gitlab-org/gitlab[rev=0c9f77389424b6c5fd8e96b227e9125a13a07cb3, path=README.md]' + + expected = <<~RESULT + gitlab-org/gitlab@0c9f77389424b6c5fd8e96b227e9125a13a07cb3 + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it 'should link to the Meson buildspec for GNOME Mutter project on their GitLab instance' do + input = 'gitlab:GNOME/mutter[domain=gitlab.gnome.org, rev=df653b95adf6462fc731998eb53b0860baa7253c, path=meson.build]' + + expected = <<~RESULT + GNOME/mutter@df653b95adf6462fc731998eb53b0860baa7253c + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it 'should link to the Meson buildspec for GNOME Mutter project on their GitLab instance with replaced captions' do + input = %(gitlab:GNOME/mutter[Mutter's meson.build, domain=gitlab.gnome.org, rev=df653b95adf6462fc731998eb53b0860baa7253c, path=meson.build]) + + expected = <<~RESULT + Mutter’s meson.build + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it %(should link to one of GitLab's issue from the default instance) do + input = 'gitlab:gitlab-org/gitlab[issue=1234]' + + expected = <<~RESULT + gitlab-org/gitlab#1234 + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it %(should link to one of GNOME Mutter's issue from the GNOME GitLab instance) do + input = 'gitlab:GNOME/mutter[domain=gitlab.gnome.org, issue=1234]' + + expected = <<~RESULT + GNOME/mutter#1234 + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it %(should link to one of GNOME Mutter's issue from the GNOME GitLab instance with replaced caption) do + input = %(gitlab:GNOME/mutter[this issue describing Mutter's behavior of resetting scale factor occassionally, domain=gitlab.gnome.org, issue=1234]) + + expected = <<~RESULT + this issue describing Mutter’s behavior of resetting scale factor occassionally + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end + + it %(should still link to issue if both issue and path are given since issues have more precedence) do + input = %(gitlab:GNOME/mutter[path=README.md, domain=gitlab.gnome.org, issue=1234]) + + expected = <<~RESULT + GNOME/mutter#1234 + RESULT + + actual = (Asciidoctor.convert input).tr_s '\n', '\n' + (expect actual).to include expected.chomp + end +end