local mHatnote = require('Module:Hatnote/sandbox') -- the module to be testedlocal 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 local child = parent:newChild self:assertEquals(expected, func(child))end
function suite:assertParentFrameCallContains(expected, func, args) args = args or local current = mw.getCurrentFrame local parent = current:newChild local child = parent:newChild 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',) )end
function suite:testHatnoteExtraClasses self:assertStringContains('
Foo
', mHatnote._hatnote('Foo',) )end
function suite:testHatnoteEntryPoint self:assertParentFrameCallContains('
Foo
', mHatnote.hatnote, )end
function suite:testHatnoteEntryPointSelfref self:assertParentFrameCallContains('
Foo
', mHatnote.hatnote, )end
function suite:testHatnoteEntryPointExtraClasses self:assertParentFrameCallContains('
Foo
', mHatnote.hatnote, )end
return suite