From Wikipedia, the free encyclopedia

-- 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