Module:Sandbox/Izno/citationTests
Appearance
< Module:Sandbox | Izno
local myModule = require('Module:Citation/CS1') -- the module to be tested
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local function copy(t1, t2)
for k, v in ipairs(t2) do
t1[k] = v
end
end
local function citeref(test_parameters, args)
local merged_args = copy(test_parameters.base_args, args)
local expansion = test_parameters.frame:expandTemplate{
title = test_parameters.template, args = merged_args
}
local _, _, citeref_value = mw.ustring.find(expansion, test_parameters.pattern)
if not citeref_value then
citeref_value = ''
end
return citeref_value
end
function suite:testCounts()
local env = {
frame = mw.getCurrentFrame(),
pattern = '(CITEREF%s)\"',
template = 'cite book/new',
base_args = { title = 'T', year = '2020' }
}
self:assertEquals(citeref(env, {chapter = 'CH'}), '')
self:assertEquals(citeref(env, {author = '_A1_'}), 'CITEREF_A1_2020')
self:assertEquals(citeref(env, {contributor = 'C1'}), '')
self:assertEquals(citeref(env, {contributor = 'C1', contribution = 'CON'}), '')
self:assertEquals(citeref(env, {editor = '_E1_'}), 'CITEREF_E1_2020')
self:assertEquals(citeref(env, {author = '_A1_', contributor = '_C1_'}), 'CITEREF_A1_2020')
self:assertEquals(citeref(env, {author = '_A1_', contributor = '_C1_', contribution = 'CON'}), 'CITEREF_C1_2020')
self:assertEquals(citeref(env, {author = '_A1_', editor = '_E1_'}), 'CITEREF_A1_2020')
self:assertEquals(citeref(env, {editor = '_E1_', contributor = '_C1_'}), 'CITEREF_E1_2020')
self:assertEquals(citeref(env, {editor = '_E1_', contributor = '_C1_', contribution = 'CON'}), 'CITEREF_E1_2020')
self:assertEquals(citeref(env, {author = '_A1_', contributor = '_C1_', editor = '_E1_'}), 'CITEREF_A1_2020')
self:assertEquals(citeref(env, {author = '_A1_', contributor = '_C1_', editor = '_E1_', contribution = 'CON'}), 'CITEREF_C1_2020')
self:assertEquals(citeref(env, {author = '_A1_', author2 = 'A2_', author3 = 'A3_', author4 = 'A4_'}), 'CITEREF_A1_A2_A3_A4_2020')
self:assertEquals(citeref(env, {author = '_A1_', author2 = 'A2_', author3 = 'A3_', author4 = 'A4_', author5 = 'A5_'}), 'CITEREF_A1_A2_A3_A4_2020')
self:assertEquals(citeref(env, {author = '_A1_', contributor = '_C1_', contributor2 = 'C2_', contributor3 = 'C3_', contribution = 'CON'}), 'CITEREF_C1_C2_C3_2020')
self:assertEquals(citeref(env, {editor = '_E1_', editor2 = 'E2_'}), 'CITEREF_E1_E2_2020')
end
-- this function passes but shouldn't.
function suite:testDates()
local env = {
frame = mw.getCurrentFrame(),
pattern = '(CITEREF%s)\"',
template = 'cite book/new',
base_args = { title = 'T', author = '_A1_' }
}
self:assertEquals(citeref(env, {year='2020'}), 'CITEREF_A1_2020')
self:assertEquals(citeref(env, {date='c. 2020'}), 'CITEREF_A1_c._2020')
self:assertEquals(citeref(env, {date='1 January 2020'}), 'CITEREF_A1_2020')
self:assertEquals(citeref(env, {date='1 January 2020a'}), 'CITEREF_A1_2020a') -- UNEXPECTED NO TRIM IN DISPLAY
self:assertEquals(citeref(env, {date='1 January 2020', year='2020'}), 'CITEREF_A1_2020') -- and maint
self:assertEquals(citeref(env, {date='1 January 2020', year='2020a'}), 'CITEREF_A1_2020a') -- UNEXPECTED MAINT
self:assertEquals(citeref(env, {date='2020-01-01', year='2020'}), 'CITEREF_A1_2020') -- and maint
self:assertEquals(citeref(env, {date='2020-01-01', year='2020a'}), 'CITEREF_A1_2020a')
end
function suite:testTrailingAuthorDash()
local env = {
frame = mw.getCurrentFrame(),
pattern = '(CITEREF%s)\"',
template = 'cite book/new',
base_args = { title = 'T', author = '_A1_' }
}
-- should fail: missing trailing underscore in anchor
self:assertEquals(citeref(env, {chapter='CH'}), 'CITEREF_A1_')
end
function suite:testDateExtraNd()
local env = {
frame = mw.getCurrentFrame(),
pattern = '(CITEREF%s)\"',
template = 'cite book/new',
base_args = { title = 'T', author = '_A1_' }
}
-- should fail: extra unexpected nd
self:assertEquals(citeref(env, {date='nd'}), 'CITEREF_A1')
end
function suite:testDateExtraNdPunct()
local env = {
frame = mw.getCurrentFrame(),
pattern = '(CITEREF%s)\"',
template = 'cite book/new',
base_args = { title = 'T', author = '_A1_' }
}
-- should fail: extra unexpected n.d.
self:assertEquals(citeref(env, {date='n.d.'}), 'CITEREF_A1')
end
return suite