Модуль:Wikidata/P512/tests
< Модуль:Wikidata | P512
Юнит-тесты для модуля 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