Module:Icon/testcases: Difference between revisions

Content deleted Content added
define a data table locally to make the tests more stable, and add a test for link suppression
use descriptive sentences for test cases, and generate the test data table every time, just in case the main module does something funny with it
 
(One intermediate revision by the same user not shown)
Line 3:
local suite = ScribuntoUnit:new()
 
-- Use a shortcut function to call mIcon._main using thecustom icon data we define.
local ICON_DATA = {
local function icon(args)
fa = {
local ICON_DATAdata = {
image = "Featured article star.svg",
fa = {
tooltip = "Featured article",
image = "Featured article star.svg",
link = true,
tooltip = "Featured article",
},
link = true,
ga = {
},
image = "Symbol support vote.svg",
ga = {
tooltip = "Good article",
image = "Symbol support vote.svg",
link = false,
tooltip = "Good article",
},
link = false,
_DEFAULT = {
},
image = "Symbol question.svg",
linkwikipedia = false,{
image = "Wikipedia-logo.svg",
tooltip = "Wikipedia page",
},
_DEFAULT = {
image = "Symbol question.svg",
link = false,
}
}
return mIcon._main(args, ICON_DATAdata)
}
 
-- Use a shortcut function to call mIcon._main using the icon data we define
-- above.
local function icon(args)
return mIcon._main(args, ICON_DATA)
end
 
Line 31 ⟶ 33:
end
 
local linkPattern = '|link=[|%]]'
function suite:testIsFileLink()
 
function suite:testIsFileLinkassertLinkIsSuppressed(s)
self:assertStringContains(linkPattern, icon{'ga'}s)
end
 
function suite:assertLinkIsNotSuppressed(s)
self:assertNotStringContains(linkPattern, s)
end
 
suite["test _main: when no icon code is specified, a file link is output"] = function(self)
self:assertIsFileLink(icon{})
end
 
suite["test _main: when an existing icon code is specified, a file link is output"] = function(self)
self:assertIsFileLink(icon{'fa'})
self:assertIsFileLink(icon{'qwertyuiop'})
end
 
suite["test _main: when an nonexistent icon code is specified, a file link is output"] = function(self)
function suite:testGA()
self:assertIsFileLink(icon{'qwertyuiopnonexistentcode'})
end
 
suite["test _main: when an existing code is specified, the relevant image is displayed"] = function(self)
self:assertStringContains('Symbol support vote.svg', icon{'ga'}, true)
end
 
suite["test _main: when an existing code is specified, the relevant tooltip is displayed"] = function(self)
self:assertStringContains('Good article', icon{'ga'}, true)
end
 
suite["test _main: when no dimensions are specified, the image is output as 16x16 pixels"] = function(self)
function suite:testDefaultSize()
self:assertStringContains('16x16px', icon{})
end
 
suite["test _main: when custom dimensions are specified, the image is output with those dimensions"] = function(self)
function suite:testCustomSize()
self:assertStringContains('320px', icon{size = '320px'})
end
 
suite["test _main: codes can have surrounding whitespace"] = function(self)
function suite:testCodeWhitespace()
self:assertStringContains('Featured article', icon{' fa '})
end
 
suite["test _main: codes can be upper case"] = function(self)
function suite:testCodeCapitalization()
self:assertStringContains('Featured article', icon{'FA'})
end
 
suite["test _main: codes can be specified with the 'class' parameter"] = function(self)
function suite:testClassParameter()
self:assertStringContains('Featured article', icon{class = 'fa'})
end
 
suite["test _main: the class parameter has precedence over the first positional parameter"] = function(self)
function suite:testClassParameterOverride()
self:assertNotStringContains('Featured article', icon{'fa', class = 'ga'})
end
 
suite["test _main: the class parameter has precedence over the first positional parameter, even if the class parameter is the empty string"] = function(self)
self:assertNotStringContains('Featured article', icon{'fa', class = ''})
end
 
suite["test _main: links are suppressed when the entry in the data table has 'link' set to false"] = function(self)
function suite:testLinkSuppression()
self:assertLinkIsSuppressed(icon{'ga'})
local linkPattern = '|link=[|%]]'
end
self:assertStringContains(linkPattern, icon{'ga'})
 
suite["test _main: links are not suppressed when the entry in the data table has 'link' set to true"] = function(self)
self:assertNotStringContains(linkPattern, icon{'fa'})
end
 
suite["test _main: links are not suppressed when the entry in the data table has no value for 'link'"] = function(self)
-- Functions that test the original data
self:assertNotStringContains(linkPattern, icon{'wikipedia'})
end
 
suite["test Module:Icon/data: codes can be specified as aliases"] = function(self)
function suite:testAlias()
self:assertStringContains('Former featured article', mIcon._main{'dfa'})
end