Difference between revisions of "Module:Hatnote/testcases"

From blackwiki
Jump to navigation Jump to search
blackwiki>Mr. Stradivarius
(make the section-only-link test names consistent)
m (2 revisions imported)
Line 1: Line 1:
−
local mHatnote = require('Module:Hatnote/sandbox') -- the module to be tested
+
{{template test cases}}
−
local ScribuntoUnit = require('Module:ScribuntoUnit')
 
−
local suite = ScribuntoUnit:new()
 
  
−
function suite:assertError(func, ...)
+
== Testing sandbox ==
−
local success, result = pcall(func, ...)
 
−
self:assertFalse(success)
 
−
end
 
  
−
function suite:assertNotEquals(expected, actual)
+
* <code><nowiki>{{hatnote/sandbox|category=no}}</nowiki></code>
−
self:assertTrue(expected ~= actual)
 
−
end
 
  
−
function suite:assertParentFrameCallEquals(expected, func, args)
+
{{hatnote/sandbox|category=no}}
−
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
 
  
−
-------------------------------------------------------------------------------
+
* <code><nowiki>{{hatnote/sandbox|Foo}}</nowiki></code>
−
-- findNamespaceId tests
 
−
-------------------------------------------------------------------------------
 
  
−
function suite:testFindNamespaceIdInputErrors()
+
{{hatnote/sandbox|Foo}}
−
    self:assertError(mHatnote.findNamespaceId, 9)
 
−
    self:assertError(mHatnote.findNamespaceId)
 
−
    self:assertError(mHatnote.findNamespaceId, 'A page', 9)
 
−
end
 
  
−
function suite:testFindNamespaceIdNamespaces()
+
* <code><nowiki>{{hatnote/sandbox|Foo|extraclasses=seealso}}</nowiki></code>
−
self:assertEquals(0, mHatnote.findNamespaceId('Foo'))
 
−
self:assertEquals(2, mHatnote.findNamespaceId('User:Example'))
 
−
self:assertEquals(14, mHatnote.findNamespaceId('Category:Example'))
 
−
end
 
  
−
function suite:testFindNamespaceIdColonRemoval()
+
{{hatnote/sandbox|Foo|extraclasses=seealso}}
−
self:assertEquals(14, mHatnote.findNamespaceId(':Category:Example'))
 
−
end
 
  
−
function suite:testFindNamespaceIdSkipColonRemoval()
+
* <code><nowiki>{{hatnote/sandbox|Foo|selfref=yes}}</nowiki></code>
−
self:assertNotEquals(14, mHatnote.findNamespaceId(':Category:Example', false))
 
−
end
 
  
−
-------------------------------------------------------------------------------
+
{{hatnote/sandbox|Foo|selfref=yes}}
−
-- formatPages tests
 
−
-------------------------------------------------------------------------------
 
  
−
function suite:testFormatPages()
+
== Testing main template ==
−
self:assertDeepEquals({'[[:Foo]]', '[[:Bar]]'}, mHatnote.formatPages('Foo', 'Bar'))
 
−
end
 
  
−
-------------------------------------------------------------------------------
+
* <code><nowiki>{{hatnote|category=no}}</nowiki></code>
−
-- formatPageTables tests
 
−
-------------------------------------------------------------------------------
 
  
−
function suite:testFormatPageTables()
+
{{hatnote|category=no}}
−
self:assertDeepEquals(
 
−
{'[[:Foo|foo]]', '[[:Bar|bar]]'},
 
−
mHatnote.formatPageTables({'Foo', 'foo'}, {'Bar', 'bar'})
 
−
)
 
−
end
 
  
−
-------------------------------------------------------------------------------
+
* <code><nowiki>{{hatnote|Foo}}</nowiki></code>
−
-- makeWikitextError tests
 
−
-------------------------------------------------------------------------------
 
  
−
function suite:testMakeWikitextError()
+
{{hatnote|Foo}}
−
self:assertEquals(
 
−
'<strong class="error">Error: Foo.</strong>[[Category:Hatnote templates with errors]]',
 
−
mHatnote.makeWikitextError('Foo', nil, nil, mw.title.new('Example'))
 
−
)
 
−
end
 
  
−
function suite:testMakeWikitextErrorHelpLink()
+
* <code><nowiki>{{hatnote|Foo|extraclasses=seealso}}</nowiki></code>
−
self:assertEquals(
 
−
'<strong class="error">Error: Foo ([[Bar|help]]).</strong>[[Category:Hatnote templates with errors]]',
 
−
mHatnote.makeWikitextError('Foo', 'Bar', nil, mw.title.new('Example'))
 
−
)
 
−
end
 
  
−
function suite:testMakeWikitextErrorManualCategorySuppression()
+
{{hatnote|Foo|extraclasses=seealso}}
−
self:assertEquals(
 
−
'<strong class="error">Error: Foo.</strong>',
 
−
mHatnote.makeWikitextError('Foo', nil, false, mw.title.new('Example'))
 
−
)
 
−
end
 
  
−
function suite:testMakeWikitextErrorTalkPageCategorySuppression()
+
* <code><nowiki>{{hatnote|Foo|selfref=yes}}</nowiki></code>
−
self:assertEquals(
 
−
'<strong class="error">Error: Foo.</strong>',
 
−
mHatnote.makeWikitextError('Foo', nil, nil, mw.title.new('Talk:Example'))
 
−
)
 
−
end
 
  
−
-------------------------------------------------------------------------------
+
{{hatnote|Foo|selfref=yes}}
−
-- formatLink tests
 
−
-------------------------------------------------------------------------------
 
−
 
 
−
function suite:testFormatLink()
 
−
self:assertEquals('[[:Foo]]', mHatnote._formatLink{link = 'Foo'})
 
−
end
 
−
 
 
−
function suite:testFormatLinkColonHandling()
 
−
self:assertEquals(
 
−
'[[:Category:Foo]]',
 
−
mHatnote._formatLink{link = ':Category:Foo'}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkSectionLinking()
 
−
self:assertEquals(
 
−
'[[:Foo#Bar|Foo §&nbsp;Bar]]',
 
−
mHatnote._formatLink{link = 'Foo#Bar'}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkPipeHandling()
 
−
self:assertEquals('[[:Foo|Bar]]', mHatnote._formatLink{link = 'Foo|Bar'})
 
−
end
 
−
 
 
−
function suite:testFormatLinkDisplay()
 
−
self:assertEquals(
 
−
'[[:Foo|Bar]]',
 
−
mHatnote._formatLink{link = 'Foo', display = 'Bar'}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkDisplayOverwritesManualPiping()
 
−
self:assertEquals(
 
−
'[[:Foo|Baz]]',
 
−
mHatnote._formatLink{link = 'Foo|Bar', display = 'Baz'}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkPageItalicization()
 
−
self:assertEquals(
 
−
"[[:Foo|<i>Foo</i>]]",
 
−
mHatnote._formatLink{link = 'Foo', italicizePage = true}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkPageItalicizationWithSection()
 
−
self:assertEquals(
 
−
"[[:Foo#Bar|<i>Foo</i> §&nbsp;Bar]]",
 
−
mHatnote._formatLink{link = 'Foo#Bar', italicizePage = true}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkSectionItalicization()
 
−
self:assertEquals(
 
−
"[[:Foo#Bar|Foo §&nbsp;<i>Bar</i>]]",
 
−
mHatnote._formatLink{link = 'Foo#Bar', italicizeSection = true}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkPageItalicizationIsOverwrittenByDisplay()
 
−
self:assertEquals(
 
−
"[[:Foo#Bar|Baz]]",
 
−
mHatnote._formatLink{
 
−
link = 'Foo#Bar',
 
−
display = 'Baz',
 
−
italicizePage = true,
 
−
}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkSectionItalicizationIsOverwrittenByDisplay()
 
−
self:assertEquals(
 
−
"[[:Foo#Bar|Baz]]",
 
−
mHatnote._formatLink{
 
−
link = 'Foo#Bar',
 
−
display = 'Baz',
 
−
italicizeSection = true,
 
−
}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkItalicizationIsOverwrittenByManualPiping()
 
−
self:assertEquals(
 
−
"[[:Foo#Bar|Baz]]",
 
−
mHatnote._formatLink{
 
−
link = 'Foo#Bar|Baz',
 
−
italicizePage = true,
 
−
italicizeSection = true,
 
−
}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkWithSectionOnlyLink()
 
−
self:assertEquals(
 
−
"[[:#Section|§&nbsp;Section]]",
 
−
mHatnote._formatLink{
 
−
link = '#Section',
 
−
}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkWithSectionOnlyLinkAndItalicizedSection()
 
−
self:assertEquals(
 
−
"[[:#Section|§&nbsp;<i>Section</i>]]",
 
−
mHatnote._formatLink{
 
−
link = '#Section',
 
−
italicizeSection = true,
 
−
}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkWithSectionOnlyLinkAndItalicizedPage()
 
−
self:assertEquals(
 
−
"[[:#Section|§&nbsp;Section]]",
 
−
mHatnote._formatLink{
 
−
link = '#Section',
 
−
italicizePage=true,
 
−
}
 
−
)
 
−
end
 
−
 
 
−
function suite:testFormatLinkEntryPoint()
 
−
self:assertParentFrameCallEquals('[[:Foo]]', mHatnote.formatLink, {'Foo'})
 
−
self:assertParentFrameCallEquals(
 
−
'[[:Foo|Bar]]',
 
−
mHatnote.formatLink, {'Foo', 'Bar'}
 
−
)
 
−
self:assertParentFrameCallEquals(
 
−
"[[:Foo#Bar|<i>Foo</i> §&nbsp;<i>Bar</i>]]",
 
−
mHatnote.formatLink,
 
−
{'Foo#Bar', italicizepage="yes", italicizesection="yes"}
 
−
)
 
−
self:assertParentFrameCallEquals(
 
−
"[[:Foo#Bar|Foo §&nbsp;Bar]]",
 
−
mHatnote.formatLink,
 
−
{'Foo#Bar', italicizepage="no", italicizesection="no"}
 
−
)
 
−
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:assertEquals('<div role="note" class="hatnote navigation-not-searchable">Foo</div>', mHatnote._hatnote('Foo'))
 
−
end
 
−
 
 
−
function suite:testHatnoteSelfref()
 
−
self:assertEquals(
 
−
'<div role="note" class="hatnote navigation-not-searchable selfref">Foo</div>',
 
−
mHatnote._hatnote('Foo', {selfref = true})
 
−
)
 
−
end
 
−
 
 
−
function suite:testHatnoteExtraClasses()
 
−
self:assertEquals(
 
−
'<div role="note" class="hatnote navigation-not-searchable extraclass">Foo</div>',
 
−
mHatnote._hatnote('Foo', {extraclasses = 'extraclass'})
 
−
)
 
−
end
 
−
 
 
−
function suite:testHatnoteEntryPoint()
 
−
self:assertParentFrameCallEquals(
 
−
'<div role="note" class="hatnote navigation-not-searchable">Foo</div>',
 
−
mHatnote.hatnote,
 
−
{'Foo'}
 
−
)
 
−
end
 
−
 
 
−
function suite:testHatnoteEntryPointSelfref()
 
−
self:assertParentFrameCallEquals(
 
−
'<div role="note" class="hatnote navigation-not-searchable selfref">Foo</div>',
 
−
mHatnote.hatnote,
 
−
{'Foo', selfref = 'yes'}
 
−
)
 
−
end
 
−
 
 
−
function suite:testHatnoteEntryPointExtraClasses()
 
−
self:assertParentFrameCallEquals(
 
−
'<div role="note" class="hatnote navigation-not-searchable extraclass">Foo</div>',
 
−
mHatnote.hatnote,
 
−
{'Foo', extraclasses = 'extraclass'}
 
−
)
 
−
end
 
−
 
 
−
return suite
 

Revision as of 16:10, 6 September 2020

Testing sandbox

  • {{hatnote/sandbox|category=no}}

Script error: No such module "hatnote/sandbox".

  • {{hatnote/sandbox|Foo}}

Script error: No such module "hatnote/sandbox".

  • {{hatnote/sandbox|Foo|extraclasses=seealso}}

Script error: No such module "hatnote/sandbox".

  • {{hatnote/sandbox|Foo|selfref=yes}}

Script error: No such module "hatnote/sandbox".

Testing main template

  • {{hatnote|category=no}}

Error: no text specified (help).

  • {{hatnote|Foo}}
  • {{hatnote|Foo|extraclasses=seealso}}
  • {{hatnote|Foo|selfref=yes}}