Koha Test Wiki MW Canasta on Koha Portainer

Test major Koha Wiki changes or bug fixes here without fear of breaking the production wiki.

For the current Koha Wiki, visit https://wiki.koha-community.org .

Module:Category handler/testcases

From Koha Test Wiki MW Canasta on Koha Portainer
Jump to navigation Jump to search

Documentation for this module may be created at Module:Category handler/testcases/doc

-- 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_messages_basepage()
    self:assertEquals(d.category, chmain{
		other = d.category,
		page = 'Wikipedia:Template messages',
	})
end

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

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

function suite:test_blacklist_template_messages_subpage()
    self:assertEquals(d.absent, chmain{
		other = d.category,
		page = 'Wikipedia:Template messages/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_book()
    self:assertEquals(d.category, chmain{
		book = d.category,
		page = 'Book:Example',
	})
end

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

function suite:test_education_program()
    self:assertEquals(d.category, chmain{
		['education program'] = d.category,
		page = 'Education Program: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