Toggle menu
15
236
70
27.5K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
Refer to
Module:Category handler



-- Unit tests for [[Module:Category handler]]. Click talk page to run tests.
local m_category_handler = require('Module:Category handler/sandbox')
local chmain = m_category_handler._main
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

-- Define table of defaults
local d = {}

-- Values
d.absent = nil
d.blank = ''
d.negation = '¬'
d.yes = 'yes'
d.no = 'no'
d.subpageOnly = 'only'
d.subpageNo = 'no'

-- Categories
d.category = 'Category:Somecat'
d.category1 = 'Category:Somecat1'
d.category2 = 'Category:Somecat2'

-- Pages
d.article = 'Somearticle'
d.file = 'File:Example.png'
d.talk = 'Talk:Foo'
d.archive = 'User talk:Example/Archive 5'
d.subpage = 'User:Example/test'
d.basepage = 'User:Example'

-- Params
d.archiveParam = 'talk'

--------------------------------------------------------------------------------
-- Test nil
--------------------------------------------------------------------------------

function suite:test_nil()
    self:assertEquals(d.absent, chmain{nil})
end

--------------------------------------------------------------------------------
-- Test defaults
--------------------------------------------------------------------------------

function suite:test_default_current_page()
	-- Will test either module or module talk space, neither of which are categorised by default.
    self:assertEquals(d.absent, chmain{d.category})
end

function suite:test_default_main()
    self:assertEquals(d.category, chmain{d.category, page = d.article})
end

function suite:test_default_file()
    self:assertEquals(d.category, chmain{d.category, page = d.file})
end

--------------------------------------------------------------------------------
-- Test numbered parameters
--------------------------------------------------------------------------------

function suite:test_numbered_main()
    self:assertEquals(d.category, chmain{
		[1] = d.category,
		main = 1,
		page = d.article
	})
end

function suite:test_numbered_two_params()
    self:assertEquals(d.category2, chmain{
		[1] = d.category1,
		[2] = d.category2,
		main = 1,
		file = 2,
		page = d.file
	})
end

--------------------------------------------------------------------------------
-- Test overriding defaults
--------------------------------------------------------------------------------

function suite:test_numbered_main()
    self:assertEquals(d.absent, chmain{
		main = d.category,
		page = d.file
	})
end

--------------------------------------------------------------------------------
-- Test blank namespace parameters
--------------------------------------------------------------------------------

function suite:test_blank_namespace_talk()
    self:assertEquals(d.blank, chmain{
		talk = d.blank,
		other = d.category,
		page = d.talk
	})
end

--------------------------------------------------------------------------------
-- Test other parameter
--------------------------------------------------------------------------------

function suite:test_other_only()
    self:assertEquals(d.category, chmain{
		other = d.category,
	})
end

--------------------------------------------------------------------------------
-- Test nocat parameter
--------------------------------------------------------------------------------

function suite:test_nocat_true()
    self:assertEquals(d.absent, chmain{d.category, page = d.file, nocat = true})
end

function suite:test_nocat_blank()
    self:assertEquals(d.category, chmain{d.category, page = d.file, nocat = ''})
end

function suite:test_nocat_yes()
    self:assertEquals(d.absent, chmain{d.category, page = d.file, nocat = d.yes})
end

function suite:test_nocat_false()
    self:assertEquals(d.category, chmain{
		[d.archiveParam] = d.category,
		page = d.archive,
		nocat = false
	})
end

function suite:test_nocat_no()
    self:assertEquals(d.category, chmain{
		[d.archiveParam] = d.category,
		page = d.archive,
		nocat = d.no
	})
end

--------------------------------------------------------------------------------
-- Test categories parameter
--------------------------------------------------------------------------------

function suite:test_categories_true()
    self:assertEquals(d.category, chmain{
		[d.archiveParam] = d.category,
		page = d.archive,
		categories = true
	})
end

function suite:test_categories_blank()
    self:assertEquals(d.category, chmain{d.category, page = d.file, categories = ''})
end

function suite:test_categories_yes()
    self:assertEquals(d.category, chmain{
		[d.archiveParam] = d.category,
		page = d.archive,
		categories = d.yes
	})
end

function suite:test_categories_false()
    self:assertEquals(d.absent, chmain{
		file = d.category,
		page = d.file,
		categories = false
	})
end

function suite:test_categories_no()
    self:assertEquals(d.absent, chmain{
		file = d.category,
		page = d.file,
		categories = d.no
	})
end

--------------------------------------------------------------------------------
-- Test category2 parameter
--------------------------------------------------------------------------------

function suite:test_category2_no()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		category2 = d.no
	})
end

function suite:test_category2_blank()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		category2 = d.blank
	})
end

function suite:test_category2_negation()
    self:assertEquals(d.category, chmain{
		other = d.category,
		category2 = d.negation
	})
end

function suite:test_category2_blacklist()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = d.archive,
		categories = d.yes
	})
end

--------------------------------------------------------------------------------
-- Test subpage parameter
--------------------------------------------------------------------------------

function suite:test_subpage_no_basepage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = d.basepage,
		subpage = d.subpageNo
	})
end

function suite:test_subpage_no_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = d.subpage,
		subpage = d.subpageNo
	})
end

function suite:test_subpage_only_basepage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = d.basepage,
		subpage = d.subpageOnly
	})
end

function suite:test_subpage_only_subpage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = d.subpage,
		subpage = d.subpageOnly
	})
end

--------------------------------------------------------------------------------
-- Test blacklist
--------------------------------------------------------------------------------

function suite:test_blacklist_archives()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User talk:Example/Archive 5',
	})
end

function suite:test_blacklist_archives_lowercase()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User talk:Example/archive 5',
	})
end

function suite:test_blacklist_archives_notarchive()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'User talk:Example/Archove 5',
	})
end

function suite:test_blacklist_archives_incident_archive()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = "Wikipedia:Administrators' noticeboard/IncidentArchive 5",
	})
end

function suite:test_blacklist_main_page()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Main Page',
	})
end

function suite:test_blacklist_main_page_talk()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Talk:Main Page',
	})
end

function suite:test_blacklist_cascade()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Cascade-protected items',
	})
end

function suite:test_blacklist_cascade_slash()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Cascade-protected items/',
	})
end

function suite:test_blacklist_cascade_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Cascade-protected items/Foo',
	})
end

function suite:test_blacklist_cascade_not_subpage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia:Cascade-protected itemsFoo',
	})
end

function suite:test_blacklist_cascade_talk()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia talk:Cascade-protected items',
	})
end

function suite:test_blacklist_ubx()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User:UBX',
	})
end

function suite:test_blacklist_ubx_talk()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User talk:UBX',
	})
end

function suite:test_blacklist_ubx_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User:UBX/Userboxes',
	})
end

function suite:test_blacklist_ubx_talk_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'User talk:UBX/Userboxes',
	})
end

function suite:test_blacklist_template_index_basepage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia:Template index',
	})
end

function suite:test_blacklist_template_index_slash()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Template index/',
	})
end

function suite:test_blacklist_template_index_not_subpage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia:Template indexFoo',
	})
end

function suite:test_blacklist_template_index_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Template index/Cleanup',
	})
end

--------------------------------------------------------------------------------
-- Test namespace params
--------------------------------------------------------------------------------

function suite:test_main()
    self:assertEquals(d.category, chmain{
		main = d.category,
		page = 'Some article',
	})
end

function suite:test_talk()
    self:assertEquals(d.category, chmain{
		talk = d.category,
		page = 'Talk:Some article',
	})
end

function suite:test_user()
    self:assertEquals(d.category, chmain{
		user = d.category,
		page = 'User:Example',
	})
end

function suite:test_user_talk()
    self:assertEquals(d.category, chmain{
		talk = d.category,
		page = 'User talk:Example',
	})
    self:assertEquals(d.absent, chmain{
		['user talk'] = d.category,
		page = 'User talk:Example',
	})
    self:assertEquals(d.absent, chmain{
		['user_talk'] = d.category,
		page = 'User talk:Example',
	})
end

function suite:test_wikipedia()
    self:assertEquals(d.category, chmain{
		wikipedia = d.category,
		page = 'Wikipedia:Example',
	})
end

function suite:test_wikipedia()
    self:assertEquals(d.category, chmain{
		wikipedia = d.category,
		page = 'Wikipedia:Example',
	})
end

function suite:test_project()
    self:assertEquals(d.category, chmain{
		project = d.category,
		page = 'Wikipedia:Example',
	})
end

function suite:test_wp()
    self:assertEquals(d.category, chmain{
		wp = d.category,
		page = 'Wikipedia:Example',
	})
end

function suite:test_file()
    self:assertEquals(d.category, chmain{
		file = d.category,
		page = 'File:Example.png',
	})
end

function suite:test_image()
    self:assertEquals(d.category, chmain{
		image = d.category,
		page = 'File:Example.png',
	})
end

function suite:test_mediawiki()
    self:assertEquals(d.category, chmain{
		mediawiki = d.category,
		page = 'MediaWiki:Protectedpagetext',
	})
end

function suite:test_template()
    self:assertEquals(d.category, chmain{
		template = d.category,
		page = 'Template:Example',
	})
end

function suite:test_help()
    self:assertEquals(d.category, chmain{
		help = d.category,
		page = 'Help:Editing',
	})
end

function suite:test_category()
    self:assertEquals(d.category, chmain{
		category = d.category,
		page = 'Category:Wikipedians',
	})
end

function suite:test_category()
    self:assertEquals(d.category, chmain{
		category = d.category,
		page = 'Category:Wikipedians',
	})
end

function suite:test_portal()
    self:assertEquals(d.category, chmain{
		portal = d.category,
		page = 'Portal:France',
	})
end

function suite:test_draft()
    self:assertEquals(d.category, chmain{
		draft = d.category,
		page = 'Draft:Example',
	})
end

function suite:test_timedtext()
    self:assertEquals(d.category, chmain{
		timedtext = d.category,
		page = 'TimedText:Example',
	})
end

function suite:test_module()
    self:assertEquals(d.category, chmain{
		module = d.category,
		page = 'Module:Sandbox',
	})
end

function suite:test_special()
    self:assertEquals(d.category, chmain{
		special = d.category,
		page = 'Special:WhatLinksHere',
	})
end

function suite:test_media()
    self:assertEquals(d.category, chmain{
		media = d.category,
		page = 'Media:Example.png',
	})
end

return suite