Module:Core/testcases

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Lua

CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

✓[OK] All tests passed.

Name Expected Actual
✓[OK] test_getLabel
✓[OK] test_langSwitch
✓[OK] test_langWrapper
✓[OK] test_parseStatement
✓[OK] test_yesno

Code

local TUT  = mw.title.new(mw.getCurrentFrame():getTitle()).basePageTitle -- the title under test
local core = require(TUT.prefixedText) -- the module to be tested
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

function suite:test_getLabel()
	local getLabel2 = require('Module:Wikidata label')._getLabel
	self:assertEquals( getLabel2('Q1', 'fa'), core.getLabel('Q1', 'fa'))
	self:assertEquals( getLabel2('Q1', 'xx'), core.getLabel('Q1', 'xx'))
end

function suite:test_langSwitch()
	local getLabel1 = core.langSwitch -- the module to be tested
	local data1 = {en = 'English', co = 'Corsu'}
	local data2 = {en = 'English', de = 'German'}
	local data3 = {en = 'English', gsw= 'Alemanic'}
	self:assertEquals('English', core.langSwitch(data1, 'en'))
	self:assertEquals('English', core.langSwitch(data1, 'fr'))
	self:assertEquals('Corsu',   core.langSwitch(data1, 'co'))
	self:assertEquals('English', core.langSwitch(data2, 'en'))
	self:assertEquals('German',  core.langSwitch(data2, 'de'))
	self:assertEquals('German',  core.langSwitch(data2, 'gsw'))
	self:assertEquals('English', core.langSwitch(data3, 'en'))
	self:assertEquals('English', core.langSwitch(data3, 'de'))
	self:assertEquals('Alemanic',core.langSwitch(data3, 'gsw'))
end

function suite:test_yesno()
	local default = 'default'
	self:assertEquals(true, core.yesno(true,   default))
	self:assertEquals(true, core.yesno(1,      default))
	self:assertEquals(true, core.yesno('yes',  default))
	self:assertEquals(true, core.yesno('y',    default))
	self:assertEquals(true, core.yesno('true', default))
	self:assertEquals(true, core.yesno('1',    default))
	
	self:assertEquals(false, core.yesno(false,   default))
	self:assertEquals(false, core.yesno(0,       default))
	self:assertEquals(false, core.yesno('no',    default))
	self:assertEquals(false, core.yesno('n',     default))
	self:assertEquals(false, core.yesno('false', default))
	self:assertEquals(false, core.yesno('0',     default))

	self:assertEquals('default', core.yesno(2,       default))
	self:assertEquals('default', core.yesno('hello', default))
end

function suite:test_parseStatement()
	local statements = mw.wikibase.getBestStatements( 'Q1', 'P31' )
	self:assertEquals('Q36906466', core.parseStatements(statements)[1])
	self:assertEquals(core.getLabel('Q36906466', 'pl'), core.parseStatements(statements, 'pl')[1])
	local statements = mw.wikibase.getBestStatements( 'Q1', 'P2386' )
	self:assertEquals(8.8e+23, core.parseStatements(statements)[1])
end

function suite:test_langWrapper()
	local txt = '<div class="description mw-content-ltr en" dir="ltr" lang="en">'..
		'<span class="language en" title="angielski"><b>English&#58; </b></span> Hello</div>'

    self:assertEquals(txt, core.langWrapper('en', 'Hello', {user_lang='pl'}))
end

return suite