Jump to content

Module:Icon/testcases: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
define a data table locally to make the tests more stable, and add a test for link suppression
test leaving link data out of the data table
Line 13: Line 13:
tooltip = "Good article",
tooltip = "Good article",
link = false,
link = false,
},
wikipedia = {
image = "Wikipedia-logo.svg",
tooltip = "Wikipedia page",
},
},
_DEFAULT = {
_DEFAULT = {
Line 71: Line 75:
self:assertStringContains(linkPattern, icon{'ga'})
self:assertStringContains(linkPattern, icon{'ga'})
self:assertNotStringContains(linkPattern, icon{'fa'})
self:assertNotStringContains(linkPattern, icon{'fa'})
self:assertNotStringContains(linkPattern, icon{'wikipedia'})
end
end



Revision as of 05:51, 29 August 2021

local mIcon = require('Module:Icon/sandbox')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

local ICON_DATA = {
	fa = {
		image = "Featured article star.svg",
		tooltip = "Featured article",
		link = true,
	},
	ga = {
		image = "Symbol support vote.svg",
		tooltip = "Good article",
		link = false,
	},
	wikipedia = {
		image = "Wikipedia-logo.svg",
		tooltip = "Wikipedia page",
	},
	_DEFAULT = {
		image = "Symbol question.svg",
		link = false,
	}
}

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

function suite:assertIsFileLink(s)
	self:assertStringContains('^%[%[File:[^%]]+%]%]$', s)
	self:assertStringContains('|class=noviewer', s, true)
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: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

function suite:testLinkSuppression()
	local linkPattern = '|link=[|%]]'
	self:assertStringContains(linkPattern, icon{'ga'})
	self:assertNotStringContains(linkPattern, icon{'fa'})
	self:assertNotStringContains(linkPattern, icon{'wikipedia'})
end

-- Functions that test the original data

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

return suite