Module:Reply to/testcases: Difference between revisions
Appearance
Content deleted Content added
expand the test cases |
add special format tests |
||
Line 2: | Line 2: | ||
local ScribuntoUnit = require('Module:ScribuntoUnit') |
local ScribuntoUnit = require('Module:ScribuntoUnit') |
||
local suite = ScribuntoUnit:new() |
local suite = ScribuntoUnit:new() |
||
local frame = mw.getCurrentFrame() |
local frame = mw.getCurrentFrame() |
||
Line 31: | Line 30: | ||
pattern = '^<strong class="error">Error in %[%[Template:Reply to%]%]: ' .. pattern .. '.</strong>$' |
pattern = '^<strong class="error">Error in %[%[Template:Reply to%]%]: ' .. pattern .. '.</strong>$' |
||
self:assertStringContains(pattern, output) |
self:assertStringContains(pattern, output) |
||
end |
|||
function suite:assertContentEquals(expected, actual) |
|||
expected = '<span class="template-ping">' .. expected .. '</span>' |
|||
self:assertEquals(expected, actual) |
|||
end |
end |
||
Line 57: | Line 61: | ||
function suite:testOneUsername() |
function suite:testOneUsername() |
||
self: |
self:assertContentEquals( |
||
' |
'@[[:User:Example|Example]]:', |
||
replyTo{'Example'} |
replyTo{'Example'} |
||
) |
) |
||
Line 64: | Line 68: | ||
function suite:testTwoUsernames() |
function suite:testTwoUsernames() |
||
self: |
self:assertContentEquals( |
||
' |
'@[[:User:Example|Example]] and [[:User:Example2|Example2]]:', |
||
replyTo{'Example', 'Example2'} |
replyTo{'Example', 'Example2'} |
||
) |
) |
||
Line 71: | Line 75: | ||
function suite:testThreeUsernames() |
function suite:testThreeUsernames() |
||
self: |
self:assertContentEquals( |
||
' |
'@[[:User:Example|Example]], [[:User:Example2|Example2]], and [[:User:Example3|Example3]]:', |
||
replyTo{'Example', 'Example2', 'Example3'} |
replyTo{'Example', 'Example2', 'Example3'} |
||
) |
) |
||
Line 78: | Line 82: | ||
function suite:testFourUsernames() |
function suite:testFourUsernames() |
||
self: |
self:assertContentEquals( |
||
' |
'@[[:User:Example|Example]], [[:User:Example2|Example2]], [[:User:Example3|Example3]], and [[:User:Example4|Example4]]:', |
||
replyTo{'Example', 'Example2', 'Example3', 'Example4'} |
replyTo{'Example', 'Example2', 'Example3', 'Example4'} |
||
) |
|||
end |
|||
-------------------------------------------------------------------------------- |
|||
-- Test special formatting |
|||
-------------------------------------------------------------------------------- |
|||
function suite:testPrefix() |
|||
self:assertContentEquals( |
|||
'foo[[:User:Example|Example]]:', |
|||
replyTo{'Example', prefix = 'foo'} |
|||
) |
|||
end |
|||
function suite:testBlankPrefix() |
|||
self:assertContentEquals( |
|||
'[[:User:Example|Example]]:', |
|||
replyTo{'Example', prefix = ''} |
|||
) |
|||
end |
|||
function suite:testConjunction() |
|||
self:assertContentEquals( |
|||
'@[[:User:Example|Example]], [[:User:Example2|Example2]], foo [[:User:Example3|Example3]]:', |
|||
replyTo{'Example', 'Example2', 'Example3', c = 'foo'} |
|||
) |
|||
end |
|||
function suite:testBlankConjunction() |
|||
self:assertContentEquals( |
|||
'@[[:User:Example|Example]], [[:User:Example2|Example2]], [[:User:Example3|Example3]]:', -- FIXME - too many spaces |
|||
replyTo{'Example', 'Example2', 'Example3', c = ''} |
|||
) |
|||
end |
|||
function suite:testPunctuation() |
|||
self:assertContentEquals( |
|||
'@[[:User:Example|Example]]foo', |
|||
replyTo{'Example', p = 'foo'} |
|||
) |
|||
end |
|||
function suite:testBlankPunctuation() |
|||
self:assertContentEquals( |
|||
'@[[:User:Example|Example]]', |
|||
replyTo{'Example', p = ''} |
|||
) |
) |
||
end |
end |
Revision as of 02:41, 29 November 2016
![]() | This is the test cases page for the module Module:Reply to. Results of the test cases. |
local mReplyTo = require('Module:Reply to') -- the module to be tested
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local frame = mw.getCurrentFrame()
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function makeFrameWithParentArgs(args)
local parent = frame:newChild{title = 'Template:Reply to', args = args}
local child = parent:newChild{title = 'Module:Reply to'}
return child
end
local function replyTo(args)
return mReplyTo.replyto(makeFrameWithParentArgs(args))
end
-- Returns an array of n unique strings.
local function makeNUniqueStrings(n)
local ret = {}
for i = 1, n do
ret[i] = tostring(i)
end
return ret
end
function suite:assertHtmlError(pattern, output)
pattern = '^<strong class="error">Error in %[%[Template:Reply to%]%]: ' .. pattern .. '.</strong>$'
self:assertStringContains(pattern, output)
end
function suite:assertContentEquals(expected, actual)
expected = '<span class="template-ping">' .. expected .. '</span>'
self:assertEquals(expected, actual)
end
--------------------------------------------------------------------------------
-- Error tests
--------------------------------------------------------------------------------
function suite:testNoUsernamesError()
self:assertHtmlError('Username not given', replyTo{})
end
function suite:testInvalidUsernameError()
self:assertHtmlError('Input contains forbidden characters', replyTo{'Examp|le'})
end
function suite:testTooManyUsernamesError()
self:assertHtmlError(
'More than %d+ names specified',
replyTo(makeNUniqueStrings(1000)) -- The limit is probably always going to be lower than 1000
)
end
--------------------------------------------------------------------------------
-- Test defaults
--------------------------------------------------------------------------------
function suite:testOneUsername()
self:assertContentEquals(
'@[[:User:Example|Example]]:',
replyTo{'Example'}
)
end
function suite:testTwoUsernames()
self:assertContentEquals(
'@[[:User:Example|Example]] and [[:User:Example2|Example2]]:',
replyTo{'Example', 'Example2'}
)
end
function suite:testThreeUsernames()
self:assertContentEquals(
'@[[:User:Example|Example]], [[:User:Example2|Example2]], and [[:User:Example3|Example3]]:',
replyTo{'Example', 'Example2', 'Example3'}
)
end
function suite:testFourUsernames()
self:assertContentEquals(
'@[[:User:Example|Example]], [[:User:Example2|Example2]], [[:User:Example3|Example3]], and [[:User:Example4|Example4]]:',
replyTo{'Example', 'Example2', 'Example3', 'Example4'}
)
end
--------------------------------------------------------------------------------
-- Test special formatting
--------------------------------------------------------------------------------
function suite:testPrefix()
self:assertContentEquals(
'foo[[:User:Example|Example]]:',
replyTo{'Example', prefix = 'foo'}
)
end
function suite:testBlankPrefix()
self:assertContentEquals(
'[[:User:Example|Example]]:',
replyTo{'Example', prefix = ''}
)
end
function suite:testConjunction()
self:assertContentEquals(
'@[[:User:Example|Example]], [[:User:Example2|Example2]], foo [[:User:Example3|Example3]]:',
replyTo{'Example', 'Example2', 'Example3', c = 'foo'}
)
end
function suite:testBlankConjunction()
self:assertContentEquals(
'@[[:User:Example|Example]], [[:User:Example2|Example2]], [[:User:Example3|Example3]]:', -- FIXME - too many spaces
replyTo{'Example', 'Example2', 'Example3', c = ''}
)
end
function suite:testPunctuation()
self:assertContentEquals(
'@[[:User:Example|Example]]foo',
replyTo{'Example', p = 'foo'}
)
end
function suite:testBlankPunctuation()
self:assertContentEquals(
'@[[:User:Example|Example]]',
replyTo{'Example', p = ''}
)
end
return suite