Модуль:Wikidata/P512/tests

Материал из Тептар — свободной энциклопедии
Перейти к навигации Перейти к поиску

Юнит-тесты для модуля Wikidata. Для запуска тестов перейдите на эту страницу (очистить кэш).


local p = require('Module:UnitTests')
local t = require('Module:Wikidata/P512')

function p:test_getPreviousDegrees()
	self:getPreviousDegreesAndAssert({}, {})
	self:getPreviousDegreesAndAssert({1}, {})
	self:getPreviousDegreesAndAssert({1, 16698078, 19610224}, {[19610224]=true})
	self:getPreviousDegreesAndAssert({17281125, 17281125}, {[18071588]=true})
end

function p:test_formatAcademicDegree()
	local mockContext = {
		['selectClaims'] = 
			function( a, b ) 
	    		return {{
	    			['id'] = 'Q4115189$2fb0ce43-4ffe-9e6e-6dab-0d101b0ceac0', 
					['mainsnak'] = {['datavalue'] = {
						['value'] = { ['numeric-id'] = 17281087 }}},
                    ['references'] = {
                    	['hash'] = 'd103e3541cc531fa54adcaffebde6bef28d87d32'}}}
			end,
		['formatStatement'] = 
			function( a, b ) 
				return 'доктор филологических наук'
			end
	}
	
	local mockOptions = {['entity']={}, ['property']='P512'}

	local expectedValue = '<span class="wikidata-claim" ' .. 
		'data-wikidata-property-id="P512" ' ..
		'data-wikidata-claim-id="Q4115189$2fb0ce43-4ffe-9e6e-6dab-0d101b0ceac0"' ..
		'>доктор филологических наук</span>' ..
		'[[Категория:Доктора филологических наук]]'
	
	self:equals('demo', t.formatAcademicDegree(mockContext, mockOptions), 
		expectedValue, {['nowiki']=true})
end

function p:test_formatCorrespondingCategory()
	self:formatCorrespondingCategoryAndAssert(   752297, true, '[[Категория:Доктора философии]]' )
	self:formatCorrespondingCategoryAndAssert(   849697, true, '' )
	self:formatCorrespondingCategoryAndAssert(   913404, true, '[[Категория:Доктора медицины]]' )
	self:formatCorrespondingCategoryAndAssert(   959320, true, '[[Категория:Доктора права]]' )
	self:formatCorrespondingCategoryAndAssert(  5978719, true, '' )
	self:formatCorrespondingCategoryAndAssert( 17281180, true, '[[Категория:Доктора искусствоведения]]' )
	self:formatCorrespondingCategoryAndAssert( 19603972, true, '[[Категория:Кандидаты философских наук]]' )
end

function p:test_formatQualifier()
	self:formatQualifierAndAssert({}, '')
	self:formatQualifierAndAssert({1987}, ' (1987)')
	self:formatQualifierAndAssert({2017, 2024}, ' (2017)')
end

function p:getPreviousDegreesAndAssert( degrees, previous )
	local claims = {}
	for _, id in ipairs(degrees) do
		table.insert(claims, {['mainsnak'] = {['datavalue'] = {['value'] = { ['numeric-id'] = id }}}})
	end
	self:equals_deep('{' .. table.concat(degrees, ', ') .. '}',  
					  t.getPreviousDegrees(claims), 
					  previous)
end

function p:formatCorrespondingCategoryAndAssert( numericId, needRef, expectedValue )
	local ref=''
	local claim = {['mainsnak'] = {['datavalue'] = {['value'] = { ['numeric-id'] = numericId }}}}
	if (needRef) then 
		claim['references'] =''
		ref='<sup>[1]</sup>'
	end;
	local actualValue = t.formatCorrespondingCategory (claim);

	self:equals('[[d:Q' .. numericId .. ']]'..ref, 
				string.gsub(actualValue, "Категория", ":Категория"),
				string.gsub(expectedValue, "Категория", ":Категория"),
				nil)
end

function p:formatQualifierAndAssert(snaks, expectedValue )
	self:equals_deep('{' .. table.concat(snaks, ', ') .. '}',  
					  t.formatQualifier({['formatSnak'] = 
					  function( a, b ) 
					  	return b
					  end; }, {}, snaks), 
					  expectedValue)
end

return p