Module:Annotated link/testcases

-- Unit tests for Module:Annotated link. Run all tests on the talk page.

-- Due to the changable nature of short descriptions; some of these tests may need to be updated before running them.

local p = require('Module:UnitTests')

-- empty params

function p:test__no_name_param()

self:preprocess_equals('{{#invoke:Annotated link|main}}', 'Module:Annotated link requires a page name (including namespace).Category:Pages displaying alarming messages about Module:Annotated link', { nowiki = 1 })

end

function p:test__no_name_value()

self:preprocess_equals('{{#invoke:Annotated link|main|name=}}', 'Module:Annotated link requires a page name (including namespace).Category:Pages displaying alarming messages about Module:Annotated link', { nowiki = 1 })

end

function p:test__no_display_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|display=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_quote_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|quote=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_abbr_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|abbr=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_abbr_value__abbr_title()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|abbr=|abbr_title=Abbreviation}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_abbr__no_abbr_title_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|abbr=|abbr_title=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_aka_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|aka=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_wedge_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|wedge=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_dash_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|dash=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_desc_first_letter_case_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|desc_first_letter_case=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_link_lang_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|link_lang=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

-- tests for empty |link_lang_italic= |link_lang_nocat= |link_lang_size= |link_lang_cat= |link_lang_rtl= ?

function p:test__no_aka_lang_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|aka_lang=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

-- tests for empty |aka_lang_italic= |aka_lang_nocat= |aka_lang_size= |aka_lang_cat= |aka_lang_rtl= ?

function p:test__no_wedge_lang_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|wedge_lang=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

-- tests for empty |wedge_lang_italic= |wedge_lang_nocat= |wedge_lang_size= |wedge_lang_cat= |wedge_lang_rtl= ?

function p:test__no_only_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|only=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_prefer_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|prefer=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__no_fallback_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|fallback=}}', "Template:GetShortDescription/no explicit short description")

end

-- nonexistent page name

function p:test__nonexistent_page_name()

self:preprocess_equals('{{#invoke:Annotated link|main|name=Intentionally permanent red link}}', 'Intentionally permanent red link')

end

-- unknown param

function p:test__no_unknown_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|unknown=}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__unknown_value()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|unknown=unknown}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

-- none but name

function p:test__short_description_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__short_description_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description}}', "Template:GetShortDescription/no explicit short description")

end

-- template links

function p:test__template_link__only_explicit()

self:preprocess_equals('{{#invoke:Annotated link|main|name=Template:Annotated link|only=explicit}}', "{{Annotated link}}")

end

function p:test__template_link_code__only_explicit()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=code|name=Template:annotated link|only=explicit}}', "{{annotated link}}", {combine = 1})

end

function p:test__template_link_no__only_explicit()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:Annotated link|only=explicit}}', "Template:Annotated link")

end

function p:test__template_link_no__display__only_explicit()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:Annotated link|display=Annotated link|only=explicit}}', "Annotated link")

end

-- name and display

function p:test__display__short_description_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|display=Test page}}', "Test page – Explicit short description")

end

function p:test__display__short_description_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|display=Test page}}', "Test page")

end

-- name and quote

function p:test__quote__short_description_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|quote=yes}}', '"Template:GetShortDescription/explicit short description" – Explicit short description')

end

function p:test__quote__short_description_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|quote=yes}}', '"Template:GetShortDescription/no explicit short description"')

end

-- name and abbr

function p:test__abbr__short_description_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|abbr=ESD}}', 'Template:GetShortDescription/explicit short description (ESD) – Explicit short description', { combined = 1 })

end

function p:test__abbr__short_description_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|abbr=NESD}}', 'Template:GetShortDescription/no explicit short description (NESD)', { combined = 1 })

end

-- name, abbr and abbr_title

function p:test__abbr__abbr_title__short_description_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|abbr=ESD|abbr_title=Explicit Short Description}}', 'Template:GetShortDescription/explicit short description (ESD) – Explicit short description', { combined = 1 })

end

function p:test__abbr__abbr_title__short_description_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|abbr=NESD|abbr_title=No Explicit Short Description}}', 'Template:GetShortDescription/no explicit short description (NESD)', { combined = 1 })

end

-- name and aka

function p:test__aka__short_description_exists()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|aka=Fred's test page}}", "Template:GetShortDescription/explicit short description, also known as Fred's test page – Explicit short description")

end

function p:test__aka__short_description_does_not_exist()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|aka=Fred's test page}}", "Template:GetShortDescription/no explicit short description, also known as Fred's test page")

end

-- name and wedge

function p:test__wedge__short_description_exists()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|wedge=Tight Fit}}", "Template:GetShortDescription/explicit short description, Tight Fit – Explicit short description")

end

function p:test__wedge__short_description_does_not_exist()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|wedge=Tight Fit}}", "Template:GetShortDescription/no explicit short description, Tight Fit")

end

-- name, abbr and aka

function p:test__abbr__aka__short_description_exists()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|abbr=ESD|aka=Fred's test page}}", "Template:GetShortDescription/explicit short description (ESD), also known as Fred's test page – Explicit short description", { combined = 1 })

end

function p:test__abbr__aka__short_description_does_not_exist()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|abbr=NESD|aka=Fred's test page}}", "Template:GetShortDescription/no explicit short description (NESD), also known as Fred's test page", { combined = 1 })

end

-- name, abbr and wedge

function p:test__abbr__wedge__short_description_exists()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|abbr=ESD|wedge=Tight Fit}}", "Template:GetShortDescription/explicit short description (ESD), Tight Fit – Explicit short description", { combined = 1 })

end

function p:test__abbr__wedge__short_description_does_not_exist()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|abbr=NESD|wedge=Tight Fit}}", "Template:GetShortDescription/no explicit short description (NESD), Tight Fit", { combined = 1 })

end

-- name, abbr, aka and wedge

function p:test__abbr__aka__wedge__short_description_exists()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|abbr=ESD|aka=Fred's test page|wedge=Tight Fit}}", "Template:GetShortDescription/explicit short description (ESD), also known as Fred's test page, Tight Fit – Explicit short description", { combined = 1 })

end

function p:test__abbr__aka__wedge__short_description_does_not_exist()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|abbr=NESD|aka=Fred's test page|wedge=Tight Fit}}", "Template:GetShortDescription/no explicit short description (NESD), also known as Fred's test page, Tight Fit", { combined = 1 })

end

-- name, aka and wedge

function p:test__aka__wedge__short_description_exists()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|aka=Fred's test page|wedge=Tight Fit}}", "Template:GetShortDescription/explicit short description, also known as Fred's test page, Tight Fit – Explicit short description")

end

function p:test__aka__wedge__short_description_does_not_exist()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|aka=Fred's test page|wedge=Tight Fit}}", "Template:GetShortDescription/no explicit short description, also known as Fred's test page, Tight Fit")

end

-- name and link_lang en

function p:test__link_lang_en()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|link_lang=en}}', "Template:GetShortDescription/no explicit short description")

end

-- name, display and link_lang fr

function p:test__display__link_lang_fr()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|display=La page de test de Fred|link_lang=fr}}', 'La page de test de Fred', { combined = 1 })

end

-- name, display, quote and link_lang fr

function p:test__display__quote__link_lang_fr()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|display=La page de test de Fred|quote=yes|link_lang=fr}}', '"La page de test de Fred"', { combined = 1 })

end

-- name, aka and aka_lang ja

function p:test__aka__aka_lang_ja()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|aka=フレッドのテストページ|aka_lang=ja}}", 'Template:GetShortDescription/no explicit short description, also known as フレッドのテストページ', { combined = 1 })

end

-- name, wedge and wedge_lang ga

function p:test__wedge__wedge_lang_ga()

self:preprocess_equals("{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|wedge=Leathanach tástála Fred|wedge_lang=ga}}", 'Template:GetShortDescription/no explicit short description, Leathanach tástála Fred', { combined = 1 })

end

-- name and mixed language

function p:test__mixed_language()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|display=La page de test de Fred|link_lang=fr|aka=フレッドのテストページ|aka_lang=ja|wedge=Leathanach tástála Fred|wedge_lang=ga}}', 'La page de test de Fred, also known as フレッドのテストページ, Leathanach tástála Fred', { combined = 1 })

end

function p:test__dash_value_comma()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|dash=,}}', "Template:GetShortDescription/explicit short description, Explicit short description")

end

function p:test__desc_first_letter_case_upper()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|desc_first_letter_case=upper}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

-- categorisation of short descriptions with no spaces being displayed

function p:test__categorise_no_space_descriptions()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description with no spaces}}', 'Template:GetShortDescription/explicit short description with no spaces – SpacelessnessCategory:Pages displaying short descriptions with no spaces via Module:Annotated link', {nowiki = 1})

end

function p:test__categorise_no_space_descriptions__space_cat()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description with no spaces|space_cat=meow}}', "Template:GetShortDescription/explicit short description with no spaces – Spacelessness")

end

-- basic passthrough to Module:GetShortDescription

-- only explicit

function p:test__only_explicit__explicit_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|only=explicit}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

function p:test__only_explicit__explicit_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|only=explicit}}', "Template:GetShortDescription/no explicit short description")

end

-- only wikidata

function p:test__only_wikidata__wikidata_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|name=Wikipedia|only=wikidata}}', "Wikipedia – free multilingual online encyclopedia")

end

function p:test__only_wikidata__wikidata_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|only=wikidata}}', "Template:GetShortDescription/explicit short description")

end

-- prefer explicit

function p:test__only_explicit__explicit_exists__wikidata_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|name=Wikipedia|prefer=explicit}}', "Wikipedia – Free online crowdsourced encyclopedia")

end

function p:test__only_explicit__explicit_does_not_exist__wikidata_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|name=Example|prefer=explicit}}', 'Example – Wikimedia disambiguation pageCategory:Pages displaying wikidata descriptions as a fallback via Module:Annotated link', {nowiki = 1})

end

-- prefer wikidata

function p:test__only_wikidata__wikidata_exists__explicit_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|name=Wikipedia|prefer=wikidata}}', "Wikipedia – free multilingual online encyclopedia")

end

function p:test__only_wikidata__wikidata_does_not_exist__explicit_exists()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|prefer=wikidata}}', "Template:GetShortDescription/explicit short description – Explicit short description")

end

-- fallback

function p:test__only_explicit__fallback__explicit_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/no explicit short description|only=explicit|fallback=this is a fallback}}', "Template:GetShortDescription/no explicit short description – this is a fallback")

end

function p:test__only_wikidata__fallback__wikidata_does_not_exist()

self:preprocess_equals('{{#invoke:Annotated link|main|template_link=no|name=Template:GetShortDescription/explicit short description|only=wikidata|fallback=this is a fallback}}', "Template:GetShortDescription/explicit short description – this is a fallback")

end

-- prefix_parentheses

function p:test__prefix_parentheses()

self:preprocess_equals('{{#invoke:Annotated_link|main|name=Jimmy Wales|dash=,|prefix_parentheses=y|desc_first_letter_case=lower}}', "Jimmy Wales (born 1966), co-founder of Wikipedia")

self:preprocess_equals('{{#invoke:Annotated_link|main|name=Jimmy Wales|dash=,|desc_first_letter_case=lower}}', "Jimmy Wales, co-founder of Wikipedia (born 1966)")

end

-- test the test; sanity check; should fail

--function p:test_the_test()

-- self:preprocess_equals('{{#invoke:Annotated link|main|name=Example}}', "test the test")

--end

-- foreign language wikidata

-- Testing |desc_lang_italic= |desc_lang_nocat= |desc_lang_size= |desc_lang_cat= |desc_lang_rtl= |desc_lang_no= will require a wikidata description in a language other than English to be returned

return p