Module:GetShortDescription/testcases

-- Unit tests for [[Module:GetShortDescription]]. 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:GetShortDescription|main|stringify=yes}}', '<span style="color:#d33">[[Module:GetShortDescription]] requires a page name (including namespace).</span>[[Category:Pages displaying alarming messages about Module:GetShortDescription]]', {nowiki = 1})
end

function p:test__no_name_value()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=}}', '<span style="color:#d33">[[Module:GetShortDescription]] requires a page name (including namespace).</span>[[Category:Pages displaying alarming messages about Module:GetShortDescription]]', {nowiki = 1})
end

function p:test__no_only_value()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|only=}}', "Explicit short description")
end

function p:test__no_prefer_value()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|prefer=}}', "Explicit short description")
end

function p:test__no_objectify_alarm_value()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|objectify_alarm=}}', '<span style="color:#d33">[[Module:GetShortDescription]] requires a page name (including namespace).</span>[[Category:Pages displaying alarming messages about Module:GetShortDescription]]', {nowiki = 1})
end

--[[ nonexistent page name ]]

function p:test__nonexistent_page_name()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Intentionally permanent red link}}', '')
end

--[[ unknown param offered ]]

function p:test__unknown_param_with_no_value_offered()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|unknown=}}', "Explicit short description")
end

function p:test__unknown_param_with_value_offered()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|unknown=unknown}}', "Explicit short description")
end

--[[ unknown param found ]]

function p:test__unknown_param_found()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description with unknown params}}', "Explicit short description with unknown params")
end

function p:test__complex_unknown_params_found()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description with complex unknown params}}', "Explicit short description with complex unknown params")
end

--[[ multiple short descriptions ]]

--[[ temporarily disabled re other solution required

function p:test__two_short_descriptions_numbered_after()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/two explicit short descriptions numbered after}}', "Explicit short description numbered second (used)")
end

function p:test__two_short_descriptions_numbered_before()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/two explicit short descriptions numbered before}}', "Explicit short description unnumbered second (used)")
end

]]

function p:test__two_short_description_templates()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/two explicit short description templates}}', "Explicit short description second (used)")
end

function p:test__two_short_description_templates__first_noreplace()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/two explicit short description templates first noreplace}}', "Explicit short description second (used)")
end

function p:test__two_short_description_templates__second_noreplace()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/two explicit short description templates second noreplace}}', "Explicit short description first (used)")
end

function p:test__three_short_description_templates__second_noreplace()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/three explicit short description templates second noreplace}}', "Explicit short description third (used)")
end

function p:test__three_short_description_templates__second_none__third_noreplace()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/three explicit short description templates second none third noreplace}}', "Explicit short description first (used)")
end

--[[ none but name ]]

function p:test__explicit_exists__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description}}', "Explicit short description")
end

function p:test__explicit_does_not_exist__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/no explicit short description}}', "")
end

function p:test__explicit_exists__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Wikipedia}}', "Free online crowdsourced encyclopedia")
end

function p:test__explicit_does_not_exist__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Example}}', "Wikimedia disambiguation page")
end

--[[ name and only ]]

function p:test__only_explicit__explicit_exists__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|only=explicit}}', "Explicit short description")
end

function p:test__only_wikidata__explicit_exists__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|only=wikidata}}', "")
end

function p:test__only_explicit__explicit_does_not_exist__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/no explicit short description|only=explicit}}', "")
end

function p:test__only_wikidata__explicit_does_not_exist__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/no explicit short description|only=wikidata}}', "")
end

function p:test__only_explicit__explicit_exists__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Wikipedia|only=explicit}}', "Free online crowdsourced encyclopedia")
end

function p:test__only_wikidata__explicit_exists__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Wikipedia|only=wikidata}}', "free multilingual online encyclopedia")
end

function p:test__only_explicit__explicit_does_not_exist__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Example|only=explicit}}', "")
end

function p:test__only_wikidata__explicit_does_not_exist__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Example|only=wikidata}}', "Wikimedia disambiguation page")
end

--[[ name and prefer ]]

function p:test__prefer_explicit__explicit_exists__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|prefer=explicit}}', "Explicit short description")
end

function p:test__prefer_wikidata__explicit_exists__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|prefer=wikidata}}', "Explicit short description")
end

function p:test__prefer_explicit__explicit_does_not_exist__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/no explicit short description|prefer=explicit}}', "")
end

function p:test__prefer_wikidata__explicit_does_not_exist__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/no explicit short description|prefer=wikidata}}', "")
end

function p:test__prefer_explicit__explicit_exists__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Wikipedia|prefer=explicit}}', "Free online crowdsourced encyclopedia")
end

function p:test__prefer_wikidata__explicit_exists__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Wikipedia|prefer=wikidata}}', "free multilingual online encyclopedia")
end

function p:test__prefer_explicit__explicit_does_not_exist__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Example|prefer=explicit}}', "Wikimedia disambiguation page")
end

function p:test__prefer_wikidata__explicit_does_not_exist__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Example|prefer=wikidata}}', "Wikimedia disambiguation page")
end

--[[ conflicting params ]]
--[[ only=explicit and prefer=wikidata ]]

function p:test__conflicting__only_explicit__prefer_wikidata__explicit_exists__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|only=explicit|prefer=wikidata}}', "Explicit short description")
end

function p:test__conflicting__only_explicit__prefer_wikidata__explicit_does_not_exist__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/no explicit short description|only=explicit|prefer=wikidata}}', "")
end

function p:test__conflicting__only_explicit__prefer_wikidata__explicit_exists__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Wikipedia|only=explicit|prefer=wikidata}}', "Free online crowdsourced encyclopedia")
end

function p:test__conflicting__only_explicit__prefer_wikidata__explicit_does_not_exist__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Example|only=explicit|prefer=wikidata}}', "")
end

--[[ only=wikidata and prefer=explicit ]]

function p:test__conflicting__only_wikidata__prefer_explicit__explicit_exists__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description|only=wikidata|prefer=explicit}}', "")
end

function p:test__conflicting__only_wikidata__prefer_explicit__explicit_does_not_exist__wikidata_does_not_exist()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/no explicit short description|only=wikidata|prefer=explicit}}', "")
end

function p:test__conflicting__only_wikidata__prefer_explicit__explicit_exists__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Wikipedia|only=wikidata|prefer=explicit}}', "free multilingual online encyclopedia")
end

function p:test__conflicting__only_wikidata__prefer_explicit__explicit_does_not_exist__wikidata_exists()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Example|only=wikidata|prefer=explicit}}', "Wikimedia disambiguation page")
end

--[[ unusual explicit descriptions ]]

function p:test__only_explicit__undefined()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description undefined|only=explicit}}', "")
end

function p:test__only_explicit__empty()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description empty|only=explicit}}', "")
end

function p:test__only_explicit__none()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description none|only=explicit}}', "none")
end

function p:test__only_explicit__numbered()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description numbered|only=explicit}}', "Explicit short description numbered")
end

function p:test__only_explicit__complex()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description complex|only=explicit}}', "Explicit short description complex")
end

function p:test__only_explicit__complex__numbered()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description complex numbered|only=explicit}}', "Explicit short description complex numbered")
end

function p:test__only_explicit__numbered__empty()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description numbered empty|only=explicit}}', "")
end

function p:test__only_explicit__numbered__none()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description numbered none|only=explicit}}', "none")
end

function p:test__only_explicit__complex__empty()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description complex empty|only=explicit}}', "")
end

function p:test__only_explicit__complex__none()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description complex none|only=explicit}}', "none")
end

function p:test__only_explicit__complex__numbered__empty()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description complex numbered empty|only=explicit}}', "")
end

function p:test__only_explicit__complex__numbered__none()
	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Template:GetShortDescription/explicit short description complex numbered none|only=explicit}}', "none")
end

--[[ test the test; sanity check; should fail ]]

--function p:test__the_test()
--	self:preprocess_equals('{{#invoke:GetShortDescription|main|stringify=yes|name=Example}}', "test the test")
--end

--[[ foreign language wikidata ]]

-- Testing |lang_italic= |lang_nocat= |lang_size= |lang_cat= |lang_rtl= |lang_no= will require a wikidata description in a language other than English to be returned

return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.