Module:Hatnote/testcases

local mHatnote = require('Module:Hatnote/sandbox') -- the module to be tested local ScribuntoUnit = require('Module:ScribuntoUnit') local suite = ScribuntoUnit:new

function suite:assertError(func, ...) local success, result = pcall(func, ...) self:assertFalse(success) end

function suite:assertNotEquals(expected, actual) self:assertTrue(expected ~= actual) end

function suite:assertParentFrameCallEquals(expected, func, args) args = args or {} local current = mw.getCurrentFrame local parent = current:newChild{title = 'Parent', args = args} local child = parent:newChild{title = 'Child'} self:assertEquals(expected, func(child)) end

function suite:assertParentFrameCallContains(expected, func, args) args = args or {} local current = mw.getCurrentFrame local parent = current:newChild{title = 'Parent', args = args} local child = parent:newChild{title = 'Child'} self:assertStringContains(expected, func(child)) end

--- -- findNamespaceId tests ---

function suite:testFindNamespaceIdInputErrors self:assertError(mHatnote.findNamespaceId, 9) self:assertError(mHatnote.findNamespaceId) self:assertError(mHatnote.findNamespaceId, 'A page', 9) end

function suite:testFindNamespaceIdNamespaces self:assertEquals(0, mHatnote.findNamespaceId('Foo')) self:assertEquals(2, mHatnote.findNamespaceId('User:Example')) self:assertEquals(14, mHatnote.findNamespaceId('Category:Example')) end

function suite:testFindNamespaceIdColonRemoval self:assertEquals(14, mHatnote.findNamespaceId(':Category:Example')) end

function suite:testFindNamespaceIdSkipColonRemoval self:assertNotEquals(14, mHatnote.findNamespaceId(':Category:Example', false)) end

--- -- makeWikitextError tests ---

function suite:testMakeWikitextError self:assertEquals(		' Error: Foo. ',		mHatnote.makeWikitextError('Foo', nil, nil, mw.title.new('Example'))	) end

function suite:testMakeWikitextErrorHelpLink self:assertEquals(		' Error: Foo (help). ',		mHatnote.makeWikitextError('Foo', 'Bar', nil, mw.title.new('Example'))	) end

function suite:testMakeWikitextErrorManualCategorySuppression self:assertEquals(		' Error: Foo. ',		mHatnote.makeWikitextError('Foo', nil, false, mw.title.new('Example'))	) end

function suite:testMakeWikitextErrorTalkPageCategorySuppression self:assertEquals(		' Error: Foo. ',		mHatnote.makeWikitextError('Foo', nil, nil, mw.title.new('Talk:Example'))	) end

--- -- hatnote tests ---

function suite:testHatnoteInputErrors self:assertError(mHatnote._hatnote, 9) self:assertError(mHatnote._hatnote) self:assertError(mHatnote._hatnote, 'A page', 9) end

function suite:testHatnote self:assertStringContains(		' Foo ',		mHatnote._hatnote('Foo')	) end

function suite:testHatnoteSelfref self:assertStringContains(		' Foo ',		mHatnote._hatnote('Foo', {selfref = true})	) end

function suite:testHatnoteExtraClasses self:assertStringContains(		' Foo ',		mHatnote._hatnote('Foo', {extraclasses = 'extraclass'})	) end

function suite:testHatnoteEntryPoint self:assertParentFrameCallContains(		' Foo ',		mHatnote.hatnote,		{'Foo'}	) end

function suite:testHatnoteEntryPointSelfref self:assertParentFrameCallContains(		' Foo ',		mHatnote.hatnote,		{'Foo', selfref = 'yes'}	) end

function suite:testHatnoteEntryPointExtraClasses self:assertParentFrameCallContains(		' Foo ',		mHatnote.hatnote,		{'Foo', extraclasses = 'extraclass'}	) end

return suite