Модуль:Wikidata/P512/tests
Поделись знанием:
< Модуль:Wikidata | P512
Для документации этого модуля может быть создана страница Модуль:Wikidata/P512/tests/doc
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( 752297, false, '' ) 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