This is the test cases page for the module Module:Redirect. Results of the test cases. |
-- Unit tests for [[Module:Redirect]]. Click talk page to run tests.local mRedirect = require('Module:Redirect') -- the module to be testedlocal ScribuntoUnit = require('Module:ScribuntoUnit')local suite = ScribuntoUnit:new()---------------------------------------------------------------------------------- Helper functions--------------------------------------------------------------------------------function suite:makeFrameWithArgs(args)local frame = mw.getCurrentFrame()return frame:newChild{title = 'Frame', args = args}end---------------------------------------------------------------------------------- Mock mw.title.new--------------------------------------------------------------------------------dolocal oldNewTitle = mw.title.newfunction suite:mockNewTitle(options)mw.title.new = function (page)local titleObj = oldNewTitle(page)if options[page] thenif options[page].content thenlocal content = options[page].contentrawset(titleObj, 'getContent', function ()return contentend)options[page].content = nilendfor k, v in pairs(options[page]) dorawset(titleObj, k, v)endendreturn titleObjendendfunction suite:resetTitleMock()mw.title.new = oldNewTitleendend-- Shortcut method for typical pages used in testsfunction suite:mockAFCShortcut()local content = [=[#REDIRECT [[Wikipedia:Articles for creation]]{{R to Wikipedia namespace}}{{R from shortcut}}]=]local pageOptions = {content = content,isRedirect = true,}self:mockNewTitle{['WP:AFC'] = pageOptions,['Wikipedia:AFC'] = pageOptions,}endfunction suite:mockMothersDayPage()self:mockNewTitle{["Mother's Day"] = {content = 'Lorem ipsum',isRedirect = false,}}end---------------------------------------------------------------------------------- Test Main--------------------------------------------------------------------------------function suite:testMain()self:mockAFCShortcut()self:assertEquals('Wikipedia:Articles for creation',mRedirect.main(self:makeFrameWithArgs{'WP:AFC'}))self:resetTitleMock()endfunction suite:testMainWithPadding()self:mockAFCShortcut()self:assertEquals('Wikipedia:Articles for creation',mRedirect.main(self:makeFrameWithArgs{' WP:AFC '}))self:resetTitleMock()endfunction suite:testMainWithBlankArgument()self:mockAFCShortcut()self:assertEquals('',mRedirect.main(self:makeFrameWithArgs{' '}))self:resetTitleMock()endfunction suite:testMainWithInputBrackets()self:mockAFCShortcut()self:assertEquals('Wikipedia:Articles for creation',mRedirect.main(self:makeFrameWithArgs{'[[WP:AFC]]'}))self:resetTitleMock()endfunction suite:testMainWithOutputBrackets()self:mockAFCShortcut()self:assertEquals('[[Wikipedia:Articles for creation]]',mRedirect.main(self:makeFrameWithArgs{'WP:AFC', bracket = 'yes'}))self:resetTitleMock()endfunction suite:testMainWithInputAndOutputBrackets()self:mockAFCShortcut()self:assertEquals('[[Wikipedia:Articles for creation]]',mRedirect.main(self:makeFrameWithArgs{'[[WP:AFC]]', bracket = 'yes'}))self:resetTitleMock()endfunction suite:testMainWithInputBracketsAndPadding()self:mockAFCShortcut()self:assertEquals('Wikipedia:Articles for creation',mRedirect.main(self:makeFrameWithArgs{' [[WP:AFC]] '}))self:resetTitleMock()endfunction suite:testMainWithRealInvalidRedirect()self:assertEquals('User:John Vandenberg/testcases/Redirect/1',mRedirect.main(self:makeFrameWithArgs{'User:John Vandenberg/testcases/Redirect/1'}))endfunction suite:testMainWithRealValidRedirect()self:assertEquals('Blah',mRedirect.main(self:makeFrameWithArgs{'User:John Vandenberg/testcases/Redirect/2'}))end---------------------------------------------------------------------------------- Test Canonicalisation--------------------------------------------------------------------------------function suite:testContentAmpersandCanonicalisation()self:mockNewTitle{['Module talk:Redirect/sandbox'] = {content = '#REDIRECT [[Module talk:Redirect]]',isRedirect = true,}}self:assertEquals('Module talk:Redirect',mRedirect.main(self:makeFrameWithArgs{'Module talk:Redirect/sandbox'}))self:resetTitleMock()endfunction suite:testContentPercentCanonicalisation()self:mockNewTitle{['Module talk:Redirect/sandbox'] = {content = '#REDIRECT [[Module talk%3ARedirect]]',isRedirect = true,}}self:assertEquals('Module talk:Redirect',mRedirect.main(self:makeFrameWithArgs{'Module talk:Redirect/sandbox'}))self:resetTitleMock()endfunction suite:testContentAmpersandInsidePercentCanonicalisation()self:mockNewTitle{['Module talk:Redirect/sandbox'] = {content = '#REDIRECT [[Module talk%26#58;Redirect]]',isRedirect = true,}}self:assertEquals('Module talk:Redirect',mRedirect.main(self:makeFrameWithArgs{'Module talk:Redirect/sandbox'}))self:resetTitleMock()endfunction suite:testContentPercentInsideAmpersandCanonicalisation()self:mockNewTitle{['Module talk:Redirect/sandbox'] = {content = '#REDIRECT [[Module talk%3ARedirect]]',isRedirect = true, -- not actually considered a redirect, but we want to exercise the code paths anyway}}self:assertEquals('Module talk:Redirect/sandbox',mRedirect.main(self:makeFrameWithArgs{'Module talk:Redirect/sandbox'}))self:resetTitleMock()endfunction suite:testTitleCanonicalisation()self:mockMothersDayPage()self:assertEquals("Mother's Day",mRedirect.main(self:makeFrameWithArgs{"Mother's Day"}))self:resetTitleMock()endfunction suite:testTitleInitialCapitalCanonicalisation()self:mockMothersDayPage()self:assertEquals("Mother's Day",mRedirect.main(self:makeFrameWithArgs{"mother's Day"}))self:resetTitleMock()end---------------------------------------------------------------------------------- Test isRedirect--------------------------------------------------------------------------------function suite:testIsRedirect()self:mockAFCShortcut()self:assertEquals('yes',mRedirect.isRedirect(self:makeFrameWithArgs{'WP:AFC'}))self:resetTitleMock()endfunction suite:testIsRedirect()self:mockMothersDayPage()self:assertEquals('',mRedirect.isRedirect(self:makeFrameWithArgs{"Mother's Day"}))self:resetTitleMock()endreturn suite
đ„ Top keywords: Akademia e Shkencave e RPS te ShqiperiseAlexandria Ocasio-CortezBilderberg GroupCristiano RonaldoDong XiaowanMinecraftOperation GladioPrimal cutRiot FestStrictly Come Dancing (series 7)Main PageSpecial:SearchWikipedia:Featured picturesList of European Cup and UEFA Champions League finalsCarlo AncelottiUEFA Champions League2024 Indian general electionJude BellinghamBorussia DortmundToni KroosReal Madrid CF2019 Indian general election2024 ICC Men's T20 World CupCleopatraRobert PicktonDonald TrumpDeaths in 20242024 South African general electionEdin TerziÄ (footballer)UFC 302Karim AdeyemiResults of the 2019 Indian general electionFuriosa: A Mad Max SagaYouTubeEminemDani Carvajal2024 UEFA Champions League finalMarco ReusVinĂcius JĂșniorCivil War (film)The First OmenGodzilla Minus OneICC Men's T20 World CupEmre CanKepler's SupernovaEric (miniseries)Jennifer LopezLenny KravitzNeatsville, Kentucky