Module:Lingua Libre record/testcases
Lua
Documentation for this module may be created at Module:Lingua Libre record/testcases/doc
Code
local ScribuntoUnit = require( 'Module:ScribuntoUnit' )
local record = require( 'Module:Lingua Libre record' )
local suite = ScribuntoUnit:new()
-- Create a fake frame.
-- The args should include __self = self,
-- so we can access a real frame’s expandTemplate function;
-- the rest of args becomes the fake frame’s args,
-- and pargs its fake parent’s args (defaults to empty).
local function frame( args, pargs )
local real = args.__self.frame
args.__self = nil
local ret = { args = args }
function ret.getParent()
return { args = pargs or {} }
end
function ret:expandTemplate( ... )
return real:expandTemplate( unpack( arg ) )
end
function ret:callParserFunction( ... )
return real:callParserFunction( unpack( arg ) )
end
return ret
end
function suite:testDefaultsortTranscriptionNoQualifier()
self:assertEquals( 'some word', record.defaultsort( frame{
transcription = 'some word',
__self = self,
} ) )
end
function suite:testDefaultsortTranscriptionQualifier()
self:assertEquals( 'some word some qualifier', record.defaultsort( frame{
transcription = 'some word',
qualifier = 'some qualifier',
__self = self,
} ) )
end
function suite:testDefaultsortMid()
self:assertEquals( 'Ei', record.defaultsort( frame{
mid = 'M69809485', -- [[File:LL-Q188 (deu)-Lucas Werkmeister-Ei.wav]], hopefully stable
__self = self,
} ) )
end
function suite:testNoCategoriesByDefault()
self:assertNotStringContains( '[[Category:', record.main( frame{
languageId = 'Q188',
-- no includeonly
__self = self,
} ), true )
end
function suite:testCategoriesLanguageCodeFromLanguageId()
self:assertStringContains( '[[Category:Lingua Libre pronunciation-deu]]', record.main( frame{
languageId = 'Q188',
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testCategoriesLanguageCodeFromMid()
self:assertStringContains( '[[Category:Lingua Libre pronunciation-deu]]', record.main( frame{
mid = 'M69809485', -- [[File:LL-Q188 (deu)-Lucas Werkmeister-Ei.wav]], hopefully stable
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testCategoriesLanguageIdFromLanguageId()
self:assertStringContains( '[[Category:Lingua Libre pronunciation-other (Q1)]]', record.main( frame{
languageId = 'Q1', -- not a language
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testCategoriesLanguageMissing()
self:assertStringContains( '[[Category:Lingua Libre pronunciation with incomplete parameters]]', record.main( frame{
-- no languageId
author = 'author',
speaker = 'speaker',
date = 'date',
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testCategoriesAuthorCategoryExists()
self:assertStringContains( '[[Category:Lingua Libre pronunciation by Lucas Werkmeister]]', record.main( frame{
author = '[[User:Lucas Werkmeister|Lucas Werkmeister]]',
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testCategoriesAuthorCategoryMissing()
self:assertNotStringContains( '[[Category:Lingua Libre pronunciation by', record.main( frame{
author = 'random user who does not exist (chaQueegahl0queo)',
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testCategoriesAuthorMissing()
self:assertStringContains( '[[Category:Lingua Libre pronunciation with incomplete parameters]]', record.main( frame{
languageId = 'Q188',
speaker = 'speaker',
date = 'date',
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testCategoriesSpeakerMissing()
self:assertStringContains( '[[Category:Lingua Libre pronunciation with incomplete parameters]]', record.main( frame{
languageId = 'Q188',
author = 'author',
date = 'date',
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testCategoriesDateMissing()
self:assertStringContains( '[[Category:Lingua Libre pronunciation with incomplete parameters]]', record.main( frame{
languageId = 'Q188',
author = 'author',
speaker = 'speaker',
includeonly = 'y',
__self = self,
} ), true )
end
function suite:testInformationLanguageFromLanguageId()
local res = record.main( frame{
languageId = 'Q188',
__self = self,
} )
self:assertStringContains( '[[w:en:German language|', res, true ) -- sitelink hopefully stable
self:assertStringContains( '[[File:Crystal Clear app download manager.svg|12px|link=lingualibre:Help:Download datasets]]', res, true )
end
function suite:testInformationLanguageMissing()
self:assertNotStringContains(
'[[File:Crystal Clear app download manager.svg|12px|link=https://lingualibre.org/datasets/]]',
record.main( frame{
__self = self,
} ),
true
)
end
function suite:testInformationTranscriptionFromTranscriptionArg()
self:assertStringContains( 'Ei', record.main( frame{
transcription = 'Ei',
__self = self,
} ), true )
end
function suite:testInformationTranscriptionFromMid()
self:assertStringContains( '<span lang="de" dir="ltr">Ei</span>', record.main( frame{
mid = 'M69809485', -- [[File:LL-Q188 (deu)-Lucas Werkmeister-Ei.wav]], hopefully stable
__self = self,
} ), true )
end
function suite:testInformationQualifier()
self:assertStringContains( 'some qualifier', record.main( frame{
qualifier = 'some qualifier',
__self = self,
} ), true )
end
function suite:testInformationSpeakerFromSpeakerArgs()
self:assertStringContains( '[[lingualibre:Q1687|Lucas Werkmeister]]', record.main( frame{
speaker = 'Lucas Werkmeister',
speakerId = 'Q1687',
__self = self,
} ), true )
end
function suite:testInformationSpeakerFromLocutorArgs()
self:assertStringContains( '[[lingualibre:Q1687|Lucas Werkmeister]]', record.main( frame{
locutor = 'Lucas Werkmeister',
locutorId = 'Q1687',
__self = self,
} ), true )
end
function suite:testInformationSpeakerFromMid()
self:assertStringContains( '[[lingualibre:Q1687|Lucas Werkmeister]]', record.main( frame{
mid = 'M69809485', -- [[File:LL-Q188 (deu)-Lucas Werkmeister-Ei.wav]], hopefully stable
__self = self,
} ), true )
end
function suite:testInformationSpeakerWithoutId()
self:assertStringContains( 'Lucas Werkmeister', record.main( frame{
speaker = 'Lucas Werkmeister',
-- no speakerId
__self = self,
} ), true )
end
function suite:testInformationSpeakerWithoutName()
self:assertStringContains( '[[lingualibre:Q1687|Q1687]]', record.main( frame{
-- no speaker
speakerId = 'Q1687',
__self = self,
} ), true )
end
function suite:testInformationRecorderFromAuthorArg()
self:assertStringContains( '[[User:Lucas Werkmeister|Lucas Werkmeister]]', record.main( frame{
author = '[[User:Lucas Werkmeister|Lucas Werkmeister]]',
__self = self,
} ), true )
end
function suite:testInformationRecorderFromMid()
self:assertStringContains( '[[User:Lucas Werkmeister|Lucas Werkmeister]]', record.main( frame{
mid = 'M69809485', -- [[File:LL-Q188 (deu)-Lucas Werkmeister-Ei.wav]], hopefully stable
__self = self,
} ), true )
end
function suite:testInformationSourceOwn()
self:assertStringContains( '<span class="int-own-work"', record.main( frame{
__self = self,
} ), true )
end
function suite:testInformationSourceLinguaLibreIdFromMid()
self:assertStringContains( '[[lingualibre:Q2957|', record.main( frame{
mid = 'M69809485', -- [[File:LL-Q188 (deu)-Lucas Werkmeister-Ei.wav]], hopefully stable
__self = self,
} ), true )
end
function suite:testInformationDateFromDateArg()
self:assertStringContains( 'id="fileinfotpl_date"', record.main( frame{
date = '2022-03-11',
__self = self,
} ), true )
end
function suite:testInformationDateFromMid()
self:assertStringContains( 'id="fileinfotpl_date"', record.main( frame{
mid = 'M69809485', -- [[File:LL-Q188 (deu)-Lucas Werkmeister-Ei.wav]], hopefully stable
__self = self,
} ), true )
end
function suite:testInformationOtherVersions()
self:assertStringContains( 'somewhere', record.main( frame{
[ 'other versions' ] = 'somewhere',
__self = self,
} ), true )
end
function suite:testInformationFromParentArgs()
self:assertStringContains( '[[lingualibre:Q1687|Lucas Werkmeister]]', record.main( frame(
{ __self = self },
{
speaker = 'Lucas Werkmeister',
speakerId = 'Q1687',
}
) ), true )
end
return suite