Module:Documentation/testcases
Appearance
From Wikipedia, the free encyclopedia
-- Test cases page for [[Module:Documentation]]. See talk page to run tests. localdoc=require('Module:Documentation/sandbox') localScribuntoUnit=require('Module:ScribuntoUnit') localsuite=ScribuntoUnit:new() -------------------------------------------------------------------------------------------- -- Test case helper functions -------------------------------------------------------------------------------------------- localfunctiongetEnv(page) -- Gets an env table using the specified page. returndoc.getEnvironment{page=page} end -------------------------------------------------------------------------------------------- -- Test helper functions -------------------------------------------------------------------------------------------- functionsuite:testMessage() self:assertEquals('sandbox',doc.message('sandbox-subpage')) self:assertEquals('Subpages of this foobar',doc.message('subpages-link-display',{'foobar'})) self:assertEquals(true,doc.message('display-strange-usage-category',nil,'boolean')) end functionsuite:testMakeToolbar() self:assertEquals(nil,doc.makeToolbar()) self:assertEquals('<span class="documentation-toolbar">(Foo)</span>',doc.makeToolbar('Foo')) self:assertEquals('<span class="documentation-toolbar">(Foo | Bar)</span>',doc.makeToolbar('Foo','Bar')) end functionsuite:testMakeWikilink() self:assertEquals('[[Foo]]',doc.makeWikilink('Foo')) self:assertEquals('[[Foo|Bar]]',doc.makeWikilink('Foo','Bar')) end functionsuite:testMakeCategoryLink() self:assertEquals('[[Category:Foo]]',doc.makeCategoryLink('Foo')) self:assertEquals('[[Category:Foo|Bar]]',doc.makeCategoryLink('Foo','Bar')) end functionsuite:testMakeUrlLink() self:assertEquals('[Foo Bar]',doc.makeUrlLink('Foo','Bar')) end -------------------------------------------------------------------------------------------- -- Test env table -------------------------------------------------------------------------------------------- functionsuite:assertEnvFieldEquals(expected,page,field) localenv=getEnv(page) self:assertEquals(expected,env[field]) end functionsuite:assertEnvTitleEquals(expected,page,titleField) localenv=getEnv(page) localtitle=env[titleField] self:assertEquals(expected,title.prefixedText) end functionsuite:testEnvTitle() self:assertEnvTitleEquals('Wikipedia:Sandbox','Wikipedia:Sandbox','title') self:assertEnvTitleEquals('Template:Example/sandbox','Template:Example/sandbox','title') end functionsuite:testEnvBadTitle() localenv=doc.getEnvironment{page='Bad[]Title'} localtitle=env.title self:assertEquals(nil,title) end functionsuite:testEnvTemplateTitle() self:assertEnvTitleEquals('Template:Example','Template:Example','templateTitle') self:assertEnvTitleEquals('Template:Example','Template talk:Example','templateTitle') self:assertEnvTitleEquals('Template:Example','Template:Example/sandbox','templateTitle') self:assertEnvTitleEquals('Template:Example','Template talk:Example/sandbox','templateTitle') self:assertEnvTitleEquals('Template:Example','Template:Example/testcases','templateTitle') self:assertEnvTitleEquals('Template:Example/foo','Template:Example/foo','templateTitle') self:assertEnvTitleEquals('File:Example','File talk:Example','templateTitle') self:assertEnvTitleEquals('File:Example','File talk:Example/sandbox','templateTitle') end functionsuite:testEnvDocTitle() self:assertEnvTitleEquals('Template:Example/doc','Template:Example','docTitle') self:assertEnvTitleEquals('Template:Example/doc','Template talk:Example','docTitle') self:assertEnvTitleEquals('Template:Example/doc','Template:Example/sandbox','docTitle') self:assertEnvTitleEquals('Talk:Example/doc','Example','docTitle') self:assertEnvTitleEquals('File talk:Example.png/doc','File:Example.png','docTitle') self:assertEnvTitleEquals('File talk:Example.png/doc','File talk:Example.png/sandbox','docTitle') end functionsuite:testEnvSandboxTitle() self:assertEnvTitleEquals('Template:Example/sandbox','Template:Example','sandboxTitle') self:assertEnvTitleEquals('Template:Example/sandbox','Template talk:Example','sandboxTitle') self:assertEnvTitleEquals('Template:Example/sandbox','Template:Example/sandbox','sandboxTitle') self:assertEnvTitleEquals('Talk:Example/sandbox','Example','sandboxTitle') self:assertEnvTitleEquals('File talk:Example.png/sandbox','File:Example.png','sandboxTitle') end functionsuite:testEnvTestcasesTitle() self:assertEnvTitleEquals('Template:Example/testcases','Template:Example','testcasesTitle') self:assertEnvTitleEquals('Template:Example/testcases','Template talk:Example','testcasesTitle') self:assertEnvTitleEquals('Template:Example/testcases','Template:Example/testcases','testcasesTitle') self:assertEnvTitleEquals('Talk:Example/testcases','Example','testcasesTitle') self:assertEnvTitleEquals('File talk:Example.png/testcases','File:Example.png','testcasesTitle') end functionsuite:testEnvProtectionLevels() localpipeEnv=getEnv('Template:?') self:assertEquals('autoconfirmed',pipeEnv.protectionLevels.edit[1]) localsandboxEnv=getEnv('Wikipedia:Sandbox') localsandboxEditLevels=sandboxEnv.protectionLevels.edit ifsandboxEditLevelsthen-- sandboxEditLevels may also be nil if the page is unprotected self:assertEquals(nil,sandboxEditLevels[1]) else self:assertEquals(nil,sandboxEditLevels) end end functionsuite:testEnvSubjectSpace() self:assertEnvFieldEquals(10,'Template:Sandbox','subjectSpace') self:assertEnvFieldEquals(10,'Template talk:Sandbox','subjectSpace') self:assertEnvFieldEquals(0,'Foo','subjectSpace') self:assertEnvFieldEquals(0,'Talk:Foo','subjectSpace') end functionsuite:testEnvDocSpace() self:assertEnvFieldEquals(10,'Template:Sandbox','docSpace') self:assertEnvFieldEquals(828,'Module:Sandbox','docSpace') self:assertEnvFieldEquals(1,'Foo','docSpace') self:assertEnvFieldEquals(7,'File:Example.png','docSpace') self:assertEnvFieldEquals(9,'MediaWiki:Watchlist-details','docSpace') self:assertEnvFieldEquals(15,'Category:Wikipedians','docSpace') end functionsuite:testEnvDocpageBase() self:assertEnvFieldEquals('Template:Example','Template:Example','docpageBase') self:assertEnvFieldEquals('Template:Example','Template:Example/sandbox','docpageBase') self:assertEnvFieldEquals('Template:Example','Template talk:Example','docpageBase') self:assertEnvFieldEquals('File talk:Example.png','File:Example.png','docpageBase') self:assertEnvFieldEquals('File talk:Example.png','File talk:Example.png','docpageBase') self:assertEnvFieldEquals('File talk:Example.png','File talk:Example.png/sandbox','docpageBase') end functionsuite:testEnvCompareUrl() -- We use "Template:Edit protected" rather than "Template:Example" here as it has a space in the title. localexpected='https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&page1=Template%3AEdit+protected&page2=Template%3AEdit+protected%2Fsandbox' self:assertEnvFieldEquals(expected,'Template:Edit protected','compareUrl') self:assertEnvFieldEquals(expected,'Template:Edit protected/sandbox','compareUrl') self:assertEnvFieldEquals(nil,'Template:Non-existent template adsfasdg','compareUrl') self:assertEnvFieldEquals(nil,'Template:Fact','compareUrl')-- Exists but doesn't have a sandbox. end -------------------------------------------------------------------------------------------- -- Test sandbox notice -------------------------------------------------------------------------------------------- functionsuite.getSandboxNoticeTestData(page) localenv=getEnv(page) localtemplatePage=page:match('^(.*)/sandbox$') localimage='[[File:Sandbox.svg|50px|alt=|link=]]' localtemplateBlurb='This is the [[Wikipedia:Template test cases|template sandbox]] page for [['..templatePage..']]' localmoduleBlurb='This is the [[Wikipedia:Template test cases|module sandbox]] page for [['..templatePage..']]' localotherBlurb='This is the sandbox page for [['..templatePage..']]' localdiff='[https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&page1='..mw.uri.encode(templatePage)..'&page2='..mw.uri.encode(page)..' diff]' localtestcasesBlurb='See also the companion subpage for [['..templatePage..'/testcases|test cases]].' localcategory='[[Category:Template sandboxes]]' localclear='<div class="documentation-clear"></div>' returnenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category,clear end functionsuite:testSandboxNoticeNotSandbox() localenv=getEnv('Template:Example') localnotice=doc.sandboxNotice({},env) self:assertEquals(nil,notice) end functionsuite:testSandboxNoticeStaticVals() localenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category,clear=suite.getSandboxNoticeTestData('Template:Example/sandbox') localnotice=doc.sandboxNotice({},env) -- Escape metacharacters (mainly '-') clear=clear:gsub('%p','%%%0') self:assertStringContains('^'..clear,notice,false) self:assertStringContains(image,notice,true) self:assertStringContains(category,notice,true) end functionsuite:testSandboxNoticeTemplateBlurb() localenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category=suite.getSandboxNoticeTestData('Template:Example/sandbox') localnotice=doc.sandboxNotice({},env) self:assertStringContains(templateBlurb,notice,true) end functionsuite:testSandboxNoticeModuleBlurb() localenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category=suite.getSandboxNoticeTestData('Module:Math/sandbox') localnotice=doc.sandboxNotice({},env) self:assertStringContains(moduleBlurb,notice,true) end functionsuite:testSandboxNoticeOtherBlurb() localenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category=suite.getSandboxNoticeTestData('User:Mr. Stradivarius/sandbox') localnotice=doc.sandboxNotice({},env) self:assertStringContains(otherBlurb,notice,true) end functionsuite:testSandboxNoticeBlurbDiff() localenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category=suite.getSandboxNoticeTestData('Template:Example/sandbox') localnotice=doc.sandboxNotice({},env) ifmw.title.getCurrentTitle().isTalkthen -- This test doesn't work in the debug console due to the use of frame:preprocess({{REVISIONID}}). -- The frame test doesn't seem to be working for now, so adding a namespace hack. self:assertStringContains(diff,notice,true) end end functionsuite:testSandboxNoticeBlurbDiffNoBasePage() localenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category=suite.getSandboxNoticeTestData('Module:User:Mr. Stradivarius/sandbox') localnotice=doc.sandboxNotice({},env) ifmw.title.getCurrentTitle().isTalkthen -- This test doesn't work in the debug console due to the use of frame:preprocess({{REVISIONID}}). -- The frame test doesn't seem to be working for now, so adding a namespace hack. self:assertNotStringContains(diff,notice,true) end end functionsuite:testSandboxNoticeTestcases() localenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category=suite.getSandboxNoticeTestData('Template:Edit protected/sandbox') localnotice=doc.sandboxNotice({},env) self:assertStringContains(testcasesBlurb,notice,true) end functionsuite:testSandboxNoticeNoTestcases() localenv,image,templateBlurb,moduleBlurb,otherBlurb,diff,testcasesBlurb,category=suite.getSandboxNoticeTestData('Template:Example/sandbox') localnotice=doc.sandboxNotice({},env) self:assertNotStringContains(testcasesBlurb,notice,true) end -------------------------------------------------------------------------------------------- -- Test protection template -- -- There's not much we can do with this until {{pp-meta}} gets rewritten in Lua. At the -- moment the protection detection only works for the current page, and the testcases pages -- will be unprotected. -------------------------------------------------------------------------------------------- functionsuite:testProtectionTemplateUnprotectedTemplate() localenv=getEnv('Template:Example') self:assertEquals(nil,doc.protectionTemplate(env)) end functionsuite:testProtectionTemplateProtectedTemplate() localenv=getEnv('Template:Navbox') -- Test whether there is some content. We don't care what the content is, as the protection level -- detected will be for the current page, not the template. self:assertTrue(doc.protectionTemplate(env)) end functionsuite:testProtectionTemplateUnprotectedModule() localenv=getEnv('Module:Example') self:assertEquals(nil,doc.protectionTemplate(env)) end functionsuite:testProtectionTemplateProtectedModule() localenv=getEnv('Module:Yesno') -- Test whether there is some content. We don't care what the content is, as the protection level -- detected will be for the current page, not the template. self:assertTrue(doc.protectionTemplate(env)) end -------------------------------------------------------------------------------------------- -- Test _startBox -------------------------------------------------------------------------------------------- functionsuite:testStartBoxContentArg() localpattern='<div class="documentation%-startbox">\n<span class="documentation%-heading" id="documentation%-heading">.-</span></div>' localstartBox=doc._startBox({content='some documentation'},getEnv('Template:Example')) self:assertStringContains(pattern,startBox) end functionsuite:testStartBoxHtml() self:assertStringContains( '<div class="documentation%-startbox">\n<span class="documentation%-heading" id="documentation%-heading">.-</span><span class="mw%-editsection%-like plainlinks">.-</span></div>', doc._startBox({},getEnv('Template:Example')) ) end -------------------------------------------------------------------------------------------- -- Test makeStartBoxLinksData -------------------------------------------------------------------------------------------- functionsuite:testMakeStartBoxLinksData() localenv=getEnv('Template:Example') localdata=doc.makeStartBoxLinksData({},env) self:assertEquals('Template:Example',data.title.prefixedText) self:assertEquals('Template:Example/doc',data.docTitle.prefixedText) self:assertEquals('view',data.viewLinkDisplay) self:assertEquals('edit',data.editLinkDisplay) self:assertEquals('history',data.historyLinkDisplay) self:assertEquals('purge',data.purgeLinkDisplay) self:assertEquals('create',data.createLinkDisplay) end functionsuite:testMakeStartBoxLinksDataTemplatePreload() localenv=getEnv('Template:Example') localdata=doc.makeStartBoxLinksData({},env) self:assertEquals('Template:Documentation/preload',data.preload) end functionsuite:testMakeStartBoxLinksDataArgsPreload() localenv=getEnv('Template:Example') localdata=doc.makeStartBoxLinksData({preload='My custom preload'},env) self:assertEquals('My custom preload',data.preload) end -------------------------------------------------------------------------------------------- -- Test renderStartBoxLinks -------------------------------------------------------------------------------------------- functionsuite.makeExampleStartBoxLinksData(exists) -- Makes a data table to be used with testRenderStartBoxLinksExists and testRenderStartBoxLinksDoesntExist. localdata={} ifexiststhen data.title=mw.title.new('Template:Example') data.docTitle=mw.title.new('Template:Example/doc') else data.title=mw.title.new('Template:NonExistentTemplate') data.docTitle=mw.title.new('Template:NonExistentTemplate/doc') end data.viewLinkDisplay='view' data.editLinkDisplay='edit' data.historyLinkDisplay='history' data.purgeLinkDisplay='purge' data.createLinkDisplay='create' data.preload='Template:MyPreload' returndata end functionsuite:testRenderStartBoxLinksExists() localdata=suite.makeExampleStartBoxLinksData(true) localexpected='[[[Template:Example/doc|view]]] [[[Special:EditPage/Template:Example/doc|edit]]] [[[Special:PageHistory/Template:Example/doc|history]]] [[[Special:Purge/Template:Example|purge]]]' self:assertEquals(expected,doc.renderStartBoxLinks(data)) end functionsuite:testRenderStartBoxLinksDoesntExist() localdata=suite.makeExampleStartBoxLinksData(false) localexpected='[[https://en.wikipedia.org/w/index.php?title=Template:NonExistentTemplate/doc&action=edit&preload=Template%3AMyPreload create]] [[[Special:Purge/Template:NonExistentTemplate|purge]]]' self:assertEquals(expected,doc.renderStartBoxLinks(data)) end -------------------------------------------------------------------------------------------- -- Test makeStartBoxData -------------------------------------------------------------------------------------------- functionsuite:testStartBoxDataBlankHeading() localdata=doc.makeStartBoxData({heading=''},{}) self:assertEquals(nil,data) end functionsuite:testStartBoxDataHeadingTemplate() localenv=getEnv('Template:Example') localdata=doc.makeStartBoxData({},env) localexpected='[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]] Template documentation' self:assertEquals(expected,data.heading) end functionsuite:testStartBoxDataHeadingModule() localenv=getEnv('Module:Example') localdata=doc.makeStartBoxData({},env) localexpected='[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]] Module documentation' self:assertEquals(expected,data.heading) end functionsuite:testStartBoxDataHeadingFile() localenv=getEnv('File:Example.png') localdata=doc.makeStartBoxData({},env) localexpected='Summary' self:assertEquals(expected,data.heading) end functionsuite:testStartBoxDataHeadingOther() localenv=getEnv('User:Example') localdata=doc.makeStartBoxData({},env) localexpected='Documentation' self:assertEquals(expected,data.heading) end functionsuite:testStartBoxDataHeadingStyle() localdata=doc.makeStartBoxData({['heading-style']='foo:bar'},{}) self:assertEquals('foo:bar',data.headingStyleText) end functionsuite:testStartBoxDataHeadingStyleTemplate() localenv=getEnv('Template:Example') localdata=doc.makeStartBoxData({},env) self:assertEquals(nil,data.headingStyleText) end functionsuite:testStartBoxDataHeadingStyleOther() localenv=getEnv('User:Example') localdata=doc.makeStartBoxData({},env) self:assertEquals(nil,data.headingStyleText) end functionsuite:testStartBoxDataLinks() localenv=getEnv('Template:Example') localdata=doc.makeStartBoxData({},env,'some links') self:assertEquals('some links',data.links) self:assertEquals('mw-editsection-like plainlinks',data.linksClass) end functionsuite:testStartBoxDataNoLinks() localenv=getEnv('Template:Example') localdata=doc.makeStartBoxData({},env) self:assertEquals(nil,data.links) self:assertEquals(nil,data.linksClass) self:assertEquals(nil,data.linksId) end -------------------------------------------------------------------------------------------- -- Test renderStartBox -------------------------------------------------------------------------------------------- functionsuite:testRenderStartBox() localexpected='<div class="documentation-startbox">\n<span id="documentation-heading"></span></div>' self:assertEquals(expected,doc.renderStartBox{}) end functionsuite:testRenderStartBoxHeadingStyleText() self:assertStringContains('\n<span id="documentation-heading" style="foo:bar">',doc.renderStartBox{headingStyleText='foo:bar'},true) end functionsuite:testRenderStartBoxHeading() self:assertStringContains('\n<span id="documentation-heading">Foobar</span>',doc.renderStartBox{heading='Foobar'},true) end functionsuite:testRenderStartBoxLinks() self:assertStringContains('<span>list of links</span>',doc.renderStartBox{links='list of links'},true) end functionsuite:testRenderStartBoxLinksClass() self:assertStringContains('<span class="linksclass">list of links</span>',doc.renderStartBox{linksClass='linksclass',links='list of links'},true) self:assertNotStringContains('linksclass',doc.renderStartBox{linksClass='linksclass'},true) end functionsuite:testRenderStartBoxLinksId() self:assertStringContains('<span id="linksid">list of links</span>',doc.renderStartBox{linksId='linksid',links='list of links'},true) self:assertNotStringContains('linksid',doc.renderStartBox{linksId='linksid'},true) end -------------------------------------------------------------------------------------------- -- Test _content -------------------------------------------------------------------------------------------- functionsuite:testContentArg() self:assertEquals('\nsome documentation\n',doc._content({content='some documentation'},{})) end functionsuite:testContentNoContent() localenv=getEnv('Template:This is a non-existent template agauchvaiu') self:assertEquals('\n\n',doc._content({},env)) end functionsuite:testContentExists() localenv=doc.getEnvironment{'Template:Documentation/testcases/test3'} localdocs=mw.getCurrentFrame():preprocess('{{Template:Documentation/testcases/test3}}') localexpected='\n'..docs..'\n' self:assertEquals(expected,doc._content({},env)) end -------------------------------------------------------------------------------------------- -- Test _endBox -------------------------------------------------------------------------------------------- functionsuite:testEndBoxLinkBoxOff() localenv=getEnv() self:assertEquals(nil,doc._endBox({['link box']='off'},env)) end functionsuite:testEndBoxNoDocsOtherNs() localenv={ subjectSpace=4, docTitle={ exists=false } } self:assertEquals(nil,doc._endBox({},env)) end functionsuite:testEndBoxAlwaysShowNs() self:assertTrue(doc._endBox({},getEnv('Template:Non-existent template asdfalsdhaw'))) self:assertTrue(doc._endBox({},getEnv('Module:Non-existent module asdhewbydcyg'))) self:assertTrue(doc._endBox({},getEnv('User:Non-existent user ahfliwebalisyday'))) end functionsuite:testEndBoxStyles() localenv=getEnv('Template:Example') localendBox=doc._endBox({},env) self:assertStringContains('class="documentation-metadata plainlinks"',endBox,true) end functionsuite:testEndBoxLinkBoxArg() localenv=getEnv() self:assertStringContains('Custom link box',doc._endBox({['link box']='Custom link box'},env)) end functionsuite:testEndBoxExperimentBlurbValidNs() localexpected='Editors can experiment in this.-<br />' self:assertStringContains(expected,doc._endBox({},getEnv('Template:Example'))) self:assertStringContains(expected,doc._endBox({},getEnv('Module:Example'))) self:assertStringContains(expected,doc._endBox({},getEnv('User:Example'))) end functionsuite:testEndBoxExperimentBlurbInvalidNs() localexpected='Editors can experiment in this.-<br />' self:assertNotStringContains(expected,doc._endBox({},getEnv('Wikipedia:Twinkle')))-- Wikipedia:Twinkle has an existing /doc subpage end functionsuite:testEndBoxCategoriesBlurb() localexpected='Add categories to the %[%[.-|/doc%]%] subpage%.' self:assertStringContains(expected,doc._endBox({},getEnv('Template:Example'))) self:assertStringContains(expected,doc._endBox({},getEnv('Module:Example'))) self:assertStringContains(expected,doc._endBox({},getEnv('User:Example'))) self:assertNotStringContains(expected,doc._endBox({[1]='Foo'},getEnv('Template:Example'))) self:assertNotStringContains(expected,doc._endBox({content='Bar'},getEnv('Template:Example'))) self:assertNotStringContains(expected,doc._endBox({},getEnv('Wikipedia:Twinkle'))) end -------------------------------------------------------------------------------------------- -- Test makeDocPageBlurb -------------------------------------------------------------------------------------------- functionsuite:testDocPageBlurbError() self:assertEquals(nil,doc.makeDocPageBlurb({},{})) end functionsuite:testDocPageBlurbTemplateDocExists() localenv=getEnv('Template:Documentation') localexpected='The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from [[Template:Documentation/doc]]. <span class="documentation-toolbar">([[Special:EditPage/Template:Documentation/doc|edit]] | [[Special:PageHistory/Template:Documentation/doc|history]])</span><br />' self:assertEquals(expected,doc.makeDocPageBlurb({},env)) end functionsuite:testDocPageBlurbTemplateDocDoesntExist() localenv=getEnv('Template:Non-existent template ajlkfdsa') self:assertEquals(nil,doc.makeDocPageBlurb({},env)) end functionsuite:testDocPageBlurbModuleDocExists() localenv=getEnv('Module:Example') localexpected='The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from [[Module:Example/doc]]. <span class="documentation-toolbar">([[Special:EditPage/Module:Example/doc|edit]] | [[Special:PageHistory/Module:Example/doc|history]])</span><br />' self:assertEquals(expected,doc.makeDocPageBlurb({},env)) end functionsuite:testDocPageBlurbModuleDocDoesntExist() localenv=getEnv('Module:Non-existent module ajlkfdsa') localexpected='You might want to [https://en.wikipedia.org/w/index.php?title=Module:Non-existent_module_ajlkfdsa/doc&action=edit&preload=Template%3ADocumentation%2Fpreload-module-doc create] a documentation page for this [[Wikipedia:Lua|Scribunto module]].<br />' self:assertEquals(expected,doc.makeDocPageBlurb({},env)) end -------------------------------------------------------------------------------------------- -- Test makeExperimentBlurb -------------------------------------------------------------------------------------------- functionsuite:testExperimentBlurbTemplate() localenv=getEnv('Template:Example') self:assertStringContains("Editors can experiment in this template's .- and .- pages.",doc.makeExperimentBlurb({},env),false) end functionsuite:testExperimentBlurbModule() localenv=getEnv('Module:Example') self:assertStringContains("Editors can experiment in this module's .- and .- pages.",doc.makeExperimentBlurb({},env),false) end functionsuite:testExperimentBlurbSandboxExists() localenv=getEnv('Template:Edit protected') localpattern='[[Template:Edit protected/sandbox|sandbox]] <span class="documentation-toolbar">([[Special:EditPage/Template:Edit protected/sandbox|edit]] | [https://en.wikipedia.org/w/index.php?title=Special%3AComparePages&page1=Template%3AEdit+protected&page2=Template%3AEdit+protected%2Fsandbox diff])</span>' self:assertStringContains(pattern,doc.makeExperimentBlurb({},env),true) end functionsuite:testExperimentBlurbSandboxDoesntExist() localenv=getEnv('Template:Non-existent template sajdfasd') localpattern='sandbox <span class="documentation-toolbar">([https://en.wikipedia.org/w/index.php?title=Template:Non-existent_template_sajdfasd/sandbox&action=edit&preload=Template%3ADocumentation%2Fpreload-sandbox create] | [https://en.wikipedia.org/w/index.php?title=Template:Non-existent_template_sajdfasd/sandbox&preload=Template%3ADocumentation%2Fmirror&action=edit&summary=Create+sandbox+version+of+%5B%5BTemplate%3ANon-existent+template+sajdfasd%5D%5D mirror])</span>' self:assertStringContains(pattern,doc.makeExperimentBlurb({},env),true) end functionsuite:testExperimentBlurbTestcasesExist() localenv=getEnv('Template:Edit protected') localpattern='[[Template:Edit protected/testcases|testcases]] <span class="documentation-toolbar">([[Special:EditPage/Template:Edit protected/testcases|edit]])</span>' self:assertStringContains(pattern,doc.makeExperimentBlurb({},env),true) end functionsuite:testExperimentBlurbTestcasesDontExist() localenv=getEnv('Template:Non-existent template sajdfasd') localpattern='testcases <span class="documentation-toolbar">([https://en.wikipedia.org/w/index.php?title=Template:Non-existent_template_sajdfasd/testcases&action=edit&preload=Template%3ADocumentation%2Fpreload-testcases create])</span>' self:assertStringContains(pattern,doc.makeExperimentBlurb({},env),true) end -------------------------------------------------------------------------------------------- -- Test makeCategoriesBlurb -------------------------------------------------------------------------------------------- functionsuite:testMakeCategoriesBlurb() localenv=getEnv('Template:Example') self:assertEquals('Add categories to the [[Template:Example/doc|/doc]] subpage.',doc.makeCategoriesBlurb({},env)) end -------------------------------------------------------------------------------------------- -- Test makeSubpagesBlurb -------------------------------------------------------------------------------------------- functionsuite:testMakeSubpagesBlurbTemplate() localenv=getEnv('Template:Example') self:assertEquals('[[Special:PrefixIndex/Template:Example/|Subpages of this template]].',doc.makeSubpagesBlurb({},env)) end functionsuite:testMakeSubpagesBlurbModule() localenv=getEnv('Module:Example') self:assertEquals('[[Special:PrefixIndex/Module:Example/|Subpages of this module]].',doc.makeSubpagesBlurb({},env)) end functionsuite:testMakeSubpagesBlurbOther() localenv=getEnv('File:Example.png') self:assertEquals('[[Special:PrefixIndex/File:Example.png/|Subpages of this page]].',doc.makeSubpagesBlurb({},env)) end -------------------------------------------------------------------------------------------- -- Test addTrackingCategories -------------------------------------------------------------------------------------------- functionsuite.getStrangeUsageCat() return'[[Category:Wikipedia pages with strange ((documentation)) usage]]' end functionsuite:testAddTrackingCategoriesTemplatePage() localenv=getEnv('Template:Example') self:assertEquals('',doc.addTrackingCategories(env)) end functionsuite:testAddTrackingCategoriesDocPage() localenv=getEnv('Template:Example/doc') self:assertEquals(self.getStrangeUsageCat(),doc.addTrackingCategories(env)) end functionsuite:testAddTrackingCategoriesTestcasesPage() localenv=getEnv('Template:Example/testcases') self:assertEquals(self.getStrangeUsageCat(),doc.addTrackingCategories(env)) end functionsuite:testAddTrackingCategoriesModuleDoc() localenv=getEnv('Module:Math/doc') self:assertEquals(self.getStrangeUsageCat(),doc.addTrackingCategories(env)) end functionsuite:testAddTrackingCategoriesModuleTestcases() localenv=getEnv('Module:Math/testcases') self:assertEquals('',doc.addTrackingCategories(env)) end functionsuite:testAddTrackingCategoriesInvalidTitle() localenv=getEnv('Template:Foo[]Bar') self:assertEquals(nil,doc.addTrackingCategories(env)) end -------------------------------------------------------------------------------------------- -- Whitespace tests -------------------------------------------------------------------------------------------- functionsuite:testNoTrailingWhitespace() self:assertStringContains('of this template%]%].</div></div>$',doc._main{page='Template:Example'}) end returnsuite