Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Class mask/testcases

From Wikipedia, the free encyclopedia
local mClassMask = require('Module:Class mask/sandbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit.new()

-------------------------------------------------------------------------------
-- Helper functions
-------------------------------------------------------------------------------
local function classMask(args, page)
	local title = page and mw.title.new(page).talkPageTitle
	return mClassMask._main(args, title)
end

local function copyTable(t1, t2)
	for k, v in pairs(t2) do
		t1[k] = v
	end
end

local function unity(t1, t2)
	local ret = {}
	copyTable(ret, t1)
	copyTable(ret, t2)
	return ret
end

-------------------------------------------------------------------------------
-- Custom assert methods
-------------------------------------------------------------------------------
function suite:assertGradeEquals(expected, grade, args, page)
	self:assertEquals(expected, classMask(unity(args, {grade}), page), nil, 1)
	self:assertEquals(expected, classMask(unity(args, {grade:upper()}), page), nil, 1)
	self:assertEquals(expected, classMask(unity(args, {grade:lower()}), page), nil, 1)
end

-------------------------------------------------------------------------------
-- Default scale tests
-------------------------------------------------------------------------------
local function makeDefaultScaleTests(t)
	suite['test_' .. t.name] = function (self)
		self:assertGradeEquals(t.expected, t.trigger, {}, t.page)
	end
	suite['test_' .. t.name .. '_no'] = function (self)
		self:assertGradeEquals('', t.trigger, {[t.param] = 'no'}, t.page)
	end
	suite['test_' .. t.name .. '_on_redirect'] = function (self)
		self:assertGradeEquals('Redirect', t.trigger, {FQS = 'yes'}, 'Abdul, Paula')
	end

end
makeDefaultScaleTests{name = 'FA', expected = 'FA', trigger = 'FA', param = 'fa', page = 'Manta ray'}
makeDefaultScaleTests{name = 'FL', expected = 'FL', trigger = 'FL', param = 'fl', page = 'List of pinnipeds'}
makeDefaultScaleTests{name = 'A', expected = 'A', trigger = 'A', param = 'a', page = 'Financial regulation in India'}
makeDefaultScaleTests{name = 'GA', expected = 'GA', trigger = 'GA', param = 'ga', page = 'Risk parity'}
makeDefaultScaleTests{name = 'B', expected = 'B', trigger = 'B', param = 'b', page = 'Economic history of Canada'}
makeDefaultScaleTests{name = 'C', expected = 'C', trigger = 'C', param = 'c', page = '3 Inches of Blood'}
makeDefaultScaleTests{name = 'start', expected = 'Start', trigger = 'Start', param = 'start', page = 'A Black Moon Broods Over Lemuria'}
makeDefaultScaleTests{name = 'stub', expected = 'Stub', trigger = 'Stub', param = 'stub', page = '3 & 3 Quarters'}
makeDefaultScaleTests{name = 'list', expected = 'List', trigger = 'List', param = 'list', page = 'Hit Machine'}

-------------------------------------------------------------------------------
-- Full quality scale grade tests
-------------------------------------------------------------------------------
local function makeFQSTests(t)
	suite['test_' .. t.name .. '_default'] = function (self)
		self:assertGradeEquals('NA', t.trigger, {}, t.page)
	end
	suite['test_' .. t.name .. '_activated'] = function (self)
		self:assertGradeEquals(t.expected, t.trigger, {[t.param] = 'yes'}, t.page)
	end
	if t.aliases then
		suite['test_' .. t.name .. '_aliases'] = function (self)
			for _, alias in ipairs(t.aliases) do
				self:assertGradeEquals(t.expected, alias, {[t.param] = 'yes'}, t.page)
			end
		end
	end
	suite['test_' .. t.name .. '_FQS'] = function (self)
		self:assertGradeEquals(t.expected, t.trigger, {FQS = 'yes'}, t.page)
	end
end

makeFQSTests{name = 'file', expected = 'File', param = 'file', trigger = 'File', aliases = {'Image', 'Img'}, page = 'File:19 Tom Lynch.png'}
makeFQSTests{name = 'category', expected = 'Category', param = 'category', trigger = 'Category', aliases = {'Cat', 'Categ'}, page = 'Category talk:20th-century Australian male musicians'}
makeFQSTests{name = 'disambig', expected = 'Disambig', param = 'disambig', trigger = 'Disambig', aliases = {'Disambiguation', 'Disamb', 'Dab'}, page = 'Barossa'}
makeFQSTests{name = 'portal', expected = 'Portal', param = 'portal', trigger = 'Portal', page = 'Portal:Oceania'}
makeFQSTests{name = 'template', expected = 'Template', param = 'template', trigger = 'Template', aliases = {'Temp', 'Tpl', 'Templ'}, page = 'Template:User from Tuvalu'}
makeFQSTests{name = 'project', expected = 'Project', param = 'project', trigger = 'Project', page = 'Wikipedia:WikiProject Tonga'}
makeFQSTests{name = 'draft', expected = 'Draft', param = 'draft', trigger = 'Draft', page = 'Draft:Hulbert F. Fairchild'}
makeFQSTests{name = 'redirect', expected = 'Redirect', param = 'redirect', trigger = 'Redirect', aliases = {'Red', 'Redir'}, page = 'Akilisi Pohiva'}

-------------------------------------------------------------------------------
-- Help tests
-------------------------------------------------------------------------------
function suite:test_help_default()
	self:assertGradeEquals('NA', 'Help', {}, 'Help:Footnotes')
end

function suite:test_help_activated()
	self:assertGradeEquals('Help', 'Help', {help = 'yes'}, 'Help:Footnotes')
end

function suite:test_help_FQS()
	self:assertGradeEquals('NA', 'Help', {FQS = 'yes'}, 'Help:Footnotes')
end

-------------------------------------------------------------------------------
-- FM tests
-------------------------------------------------------------------------------
function suite:test_FM_default()
	self:assertGradeEquals('NA', 'FM', {}, 'File:Alamo pano.jpg')
end
function suite:test_FM_activated()
	self:assertGradeEquals('FM', 'FM', {fm = 'yes'}, 'File:Alamo pano.jpg')
end
function suite:test_FM_file_activated()
	self:assertGradeEquals('File', 'FM', {file = 'yes'}, 'File:Alamo pano.jpg')
end
function suite:test_FM_file_FQS()
	self:assertGradeEquals('FM', 'FM', {FQS = 'yes'}, 'File:Alamo pano.jpg')
end
function suite:test_FM_file_overridden()
	self:assertGradeEquals('FM', 'FM', {file = '', FQS = 'yes'}, 'File:Alamo pano.jpg')
end

-------------------------------------------------------------------------------
-- SIA tests
-------------------------------------------------------------------------------
function suite:test_sia_default()
	self:assertGradeEquals('List', 'gg', {}, 'Talk:Erminio')
end


-------------------------------------------------------------------------------
-- Module tests
-------------------------------------------------------------------------------
function suite:test_module_default()
	self:assertGradeEquals('NA', 'module', {})
end
function suite:test_module_activated()
	self:assertGradeEquals('NA', 'module', {module = 'yes'})
end
function suite:test_module_template_activated()
	self:assertGradeEquals('Template', 'Module', {template = 'yes'})
end
function suite:test_module_template_FQS()
	self:assertGradeEquals('Template', 'Module', {FQS = 'yes'})
end
function suite:test_module_template_overridden()
	self:assertGradeEquals('NA', 'module', {template = '', FQS = 'yes'})
end

-------------------------------------------------------------------------------
-- Undefined tests
-------------------------------------------------------------------------------
function suite:test_undefined()
	self:assertEquals('¬', classMask{})
end
function suite:test_undefined_explicit()
	self:assertEquals('¬', classMask{'¬'})
end

-------------------------------------------------------------------------------
-- Default grade tests
-------------------------------------------------------------------------------
local function makeDefaultTests(t)
	suite['test_default_' .. t.name .. '_inactive'] = function (self)
		self:assertGradeEquals('NA', 'Foo', {}, t.page)
	end
	suite['test_default_' .. t.name .. '_active'] = function (self)
		self:assertGradeEquals(t.expected, 'Foo', {[t.param] = 'yes'}, t.page)
	end
	suite['test_default_' .. t.name .. '_FQS'] = function (self)
		self:assertGradeEquals(t.FQSexpected or t.expected, 'Foo', {FQS = 'yes'}, t.page)
	end
	suite['test_default_' .. t.name .. '_FQS_overridden'] = function (self)
		self:assertGradeEquals(t.FQSexpected or 'NA', 'Foo', {[t.param] = '', FQS = 'yes'}, t.page)
	end
end

makeDefaultTests{name = 'user', expected = 'User', param = 'user', page = 'User talk:Footwarrior', FQSexpected = 'NA'}
makeDefaultTests{name = 'mediawiki', expected = 'NA', param = 'mediawiki', page = 'MediaWiki talk:Foo'}
makeDefaultTests{name = 'timedtext', expected = 'File', param = 'file', page = 'TimedText talk:Fais-les-backs.ogg.fr.srt'}
makeDefaultTests{name = 'module', expected = 'Template', param = 'template', page = 'Module talk:Pagetype'}
makeDefaultTests{name = 'file', expected = 'File', param = 'file', page = 'File talk:Gooseneckbarnacles.jpg'}
makeDefaultTests{name = 'category', expected = 'Category', param = 'category',  page = 'Category talk:Oonopidae'}
makeDefaultTests{name = 'portal', expected = 'Portal',   param = 'portal',    page = 'Portal talk:Senegal'}
makeDefaultTests{name = 'template', expected = 'Template', param = 'template',  page = 'Template talk:Kool & the Gang'}
makeDefaultTests{name = 'project', expected = 'Project',  param = 'project',   page = 'Wikipedia talk:WikiProject Football'}
makeDefaultTests{name = 'draft', expected = 'Draft', param = 'draft', page = 'Draft talk:Pool4Ever'}
makeDefaultTests{name = 'help', expected = 'Help',	param = 'help', page = 'Help talk:Guided tours', FQSexpected = 'NA'}

function suite:test_default_other_namespace()
	self:assertGradeEquals('', 'Foo', {}, 'Talk:Poop deck')
end
function suite:test_default_upper_exists()
	self:assertGradeEquals('Some grade', 'Foo', {FOO = 'Some grade'}, 'Phil Ouellette')
end
function suite:test_default_lower_exists()
	self:assertGradeEquals('Foo', 'foO', {foo = 'yes'}, 'Phil Ouellette')
end
function suite:test_default_lower_overridden()
	self:assertGradeEquals('Some grade', 'Foo', {foo = 'yes', FOO = 'Some grade'}, 'Phil Ouellette')
end
function suite:test_default_empty_exists()
	self:assertGradeEquals('Some grade', '', {[''] = 'Some grade'}, 'Phil Ouellette')
end
function suite:test_default_blank_exists()
	self:assertGradeEquals('Some grade', '  ', {[''] = 'Some grade'}, 'Phil Ouellette')
end
function suite:test_auto_disambig()
	self:assertGradeEquals('Disambig', '', {FQS='yes'}, 'Talk:Resilience')
end
function suite:test_auto_disambig2()
	self:assertGradeEquals('Disambig', '', {disambig='yes'}, 'Talk:0K')
end
function suite:test_auto_disambig3()
	self:assertGradeEquals('NA', '', {}, "Talk:St. Paul's Cathedral (disambiguation)")
end
function suite:test_soft_redirect()
	self:assertGradeEquals('NA', '', {}, "'Murica")
end
function suite:test_sia1() -- manual SIA on SIA-enabled mask
	self:assertGradeEquals('SIA', 'SIA', {SIA = 'SIA'}, "Talk:Characters of the Final Fantasy series")
end
function suite:test_sia2() -- auto SIA with SIA-enabled
	self:assertGradeEquals('SIA', '', {SIA = 'SIA'}, "Talk:Characters of the Final Fantasy series")
end
function suite:test_sia3() -- list with SIA-enabled
	self:assertGradeEquals('SIA', 'List', {SIA = 'SIA'}, "Talk:Characters of the Final Fantasy series")
end
function suite:test_sia4() -- SIA on non-SIA
	self:assertGradeEquals('SIA', 'SIA', {SIA = 'SIA'}, "Talk:List of Nintendo DS games")
end
function suite:test_sia5() -- Unassessed on non-SIA
	self:assertGradeEquals('', '', {SIA = 'SIA'}, "Talk:List of Nintendo DS games")
end
function suite:test_sia6() -- list on non-SIA
	self:assertGradeEquals('List', 'List', {SIA = 'SIA'}, "Talk:List of Nintendo DS games")
end


-------------------------------------------------------------------------------
-- Other tests
-------------------------------------------------------------------------------
function suite:test_whitespace()
	self:assertEquals('FA', classMask({'  FA  '}, 'Phil Ouellette'))
end

return suite