Module:Lingua Libre record/sandbox/testcases

Lua
CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

Documentation for this module may be created at Module:Lingua Libre record/sandbox/testcases/doc

Code

local ScribuntoUnit = require( 'Module:ScribuntoUnit' )
local record = require( 'Module:Lingua Libre record/sandbox' )
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=https://lingualibre.org/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( '[https://lingualibre.org/wiki/Q1687 Lucas Werkmeister]', record.main( frame{
		speaker = 'Lucas Werkmeister',
		speakerId = 'Q1687',
		__self = self,
	} ), true )
end

function suite:testInformationSpeakerFromLocutorArgs()
	self:assertStringContains( '[https://lingualibre.org/wiki/Q1687 Lucas Werkmeister]', record.main( frame{
		locutor = 'Lucas Werkmeister',
		locutorId = 'Q1687',
		__self = self,
	} ), true )
end

function suite:testInformationSpeakerFromMid()
	self:assertStringContains( '[https://lingualibre.org/wiki/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( '[https://lingualibre.org/wiki/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( '[https://lingualibre.org/wiki/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( '[https://lingualibre.org/wiki/Q1687 Lucas Werkmeister]', record.main( frame(
		{ __self = self },
		{
			speaker = 'Lucas Werkmeister',
			speakerId = 'Q1687',
		}
	) ), true )
end

return suite