Jump to content

Module:Icon/testcases: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
move declarations to the top
simplify file link pattern check
Line 11: Line 11:
end
end


function suite:assertIsFileLink(s)
local fileLinkPattern
self:assertStringContains('^%[%[File:[^%]]+%]%]$', s)
do
local spaces = '[_ \t]*'
local titleChar = '[^|<>%[%]{}]'
local titleCharOrPipe = '[^<>%[%]{}]'
fileLinkPattern = '^%[%[' .. spaces .. '(.-)' .. spaces .. ':' .. spaces ..
titleChar .. '-' .. titleCharOrPipe .. '-|' .. titleChar .. '-|' ..
spaces .. 'link=' .. spaces .. '%]%]$'
end

function suite:assertFileLink(s)
local nsText = s:match(fileLinkPattern)
nsText = nsText and nsText:lower()
self:assertTrue(nsText == 'file' or nsText == 'image')
end
end


function suite:testIsFileLink()
function suite:testIsFileLink()
self:assertFileLink(icon{})
self:assertIsFileLink(icon{})
self:assertFileLink(icon{'fa'})
self:assertIsFileLink(icon{'fa'})
self:assertFileLink(icon{'qwertyuiop'})
self:assertIsFileLink(icon{'qwertyuiop'})
end
end



Revision as of 00:46, 29 August 2021

local mIcon = require('Module:Icon')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local frame = mw.getCurrentFrame()

-- This function is used to run all the instances of Icon, so that we can easily
-- switch between the module and the template.
local function icon(args)
	-- return frame:expandTemplate{title = 'icon/sandbox', args = args}
	return mIcon._main(args)
end

function suite:assertIsFileLink(s)
	self:assertStringContains('^%[%[File:[^%]]+%]%]$', s)
end

function suite:testIsFileLink()
	self:assertIsFileLink(icon{})
	self:assertIsFileLink(icon{'fa'})
	self:assertIsFileLink(icon{'qwertyuiop'})
end

function suite:testGA()
	self:assertStringContains('Symbol support vote.svg', icon{'ga'}, true)
	self:assertStringContains('Good article', icon{'ga'}, true)
end

function suite:testDefaultSize()
	self:assertStringContains('16x16px', icon{})
end

function suite:testCustomSize()
	self:assertStringContains('320px', icon{size = '320px'})
end

function suite:testAlias()
	self:assertStringContains('Former featured article', icon{'dfa'})
end

function suite:testCodeWhitespace()
	self:assertStringContains('Featured article', icon{'  fa  '})
end

function suite:testCodeCapitalization()
	self:assertStringContains('Featured article', icon{'FA'})
end

function suite:testClassParameter()
	self:assertStringContains('Featured article', icon{class = 'fa'})
end

function suite:testClassParameterOverride()
	self:assertNotStringContains('Featured article', icon{'fa', class = 'ga'})
	self:assertNotStringContains('Featured article', icon{'fa', class = ''})
end

return suite