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
function p:test__nonexistent_page_name()
self:preprocess_equals('{{#invoke:Annotated link|main|name=Intentionally permanent red link}}', 'Intentionally permanent red link')
end
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
-- 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