local mCatMain = require('Module:Cat main/sandbox') -- the module to be testedlocal ScribuntoUnit = require('Module:ScribuntoUnit')local suite = ScribuntoUnit:new
---------------------------------------------------------------------------------- Helper functions--------------------------------------------------------------------------------
local function patchCurrentTitle(newTitle, func) local oldGetCurrentTitle = mw.title.getCurrentTitle mw.title.getCurrentTitle = function return mw.title.new("Category:Example") end func mw.title.getCurrentTitle = oldGetCurrentTitleend
---------------------------------------------------------------------------------- Custom assert methods--------------------------------------------------------------------------------
function suite:assertHasClass(expectedClass, result) result = mw.text.killMarkers(result) -- remove TemplateStyles marker local classes = result:match('^
]*class="([^"]*)"') classes = mw.text.split(classes, ' ') local hasClass = false for _, actualClass in ipairs(classes) do if actualClass
---------------------------------------------------------------------------------- Tests--------------------------------------------------------------------------------
function suite:testWholeOutput self:assertEquals([=[<div role="note" class="hatnote navigation-not-searchable">The main article for this [[Help:Categories|category]] is .
]=], mw.text.killMarkers(mCatMain._catMain(nil, 'Foo')) )end
function suite:testOneArticle self:assertStringContains("The main article for this category is .", mCatMain._catMain(nil, 'Foo'), true )end
function suite:testTwoArticles self:assertStringContains("The main articles for this category are and .", mCatMain._catMain(nil, 'Foo', 'Bar'), true )end
function suite:testThreeArticles self:assertStringContains("The main articles for this category are , and .", mCatMain._catMain(nil, 'Foo', 'Bar', 'Baz'), true )end
function suite:testNonArticle self:assertStringContains("The main page for this category is .", mCatMain._catMain('Foo'), true )end
function suite:testSelfReference self:assertHasClass("selfref", mCatMain._catMain('Foo'))end
function suite:testNoArticles patchCurrentTitle("Category:Example", function self:assertStringContains("The main article for this category is .", mCatMain._catMain, true ) end )end
return suite