<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://bukvica.org/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWDBackend%2Ftestcases</id>
	<title>Модуль:WDBackend/testcases - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://bukvica.org/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWDBackend%2Ftestcases"/>
	<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:WDBackend/testcases&amp;action=history"/>
	<updated>2026-04-20T23:58:54Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:WDBackend/testcases&amp;diff=238715&amp;oldid=prev</id>
		<title>Karaby: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:WDBackend/testcases&amp;diff=238715&amp;oldid=prev"/>
		<updated>2025-07-27T15:38:07Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 15:38, 27 июля 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki:diff:1.41:old-238714:rev-238715 --&gt;
&lt;/table&gt;</summary>
		<author><name>Karaby</name></author>
	</entry>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:WDBackend/testcases&amp;diff=238714&amp;oldid=prev</id>
		<title>Буквица&gt;D6194c-1cc: Исправление теста</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:WDBackend/testcases&amp;diff=238714&amp;oldid=prev"/>
		<updated>2024-01-13T09:06:50Z</updated>

		<summary type="html">&lt;p&gt;Исправление теста&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local suite = require(&amp;#039;Модуль:ScribuntoUnit&amp;#039;):new()&lt;br /&gt;
local backend = require(&amp;#039;Модуль:WDBackend&amp;#039;)&lt;br /&gt;
local wikidata = require(&amp;#039;Модуль:WDCommon&amp;#039;)&lt;br /&gt;
local base = wikidata.base&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local saganEntity = &amp;#039;Q410&amp;#039;&lt;br /&gt;
local saganBook = &amp;#039;Q2482106&amp;#039;&lt;br /&gt;
local marsEntity = &amp;#039;Q111&amp;#039;&lt;br /&gt;
local kidneyEntity = &amp;#039;Q9377&amp;#039;&lt;br /&gt;
local journalEntity = &amp;#039;Q582728&amp;#039;&lt;br /&gt;
local scholaryArticleEntity = &amp;#039;Q13442814&amp;#039;&lt;br /&gt;
local scientificJournalEntity = &amp;#039;Q5633421&amp;#039;&lt;br /&gt;
local bookWithInscriptions = &amp;#039;Q114831437&amp;#039;&lt;br /&gt;
local influenzaEntity = &amp;#039;Q2840&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local P_SUBCLASS_OF = &amp;#039;P279&amp;#039;&lt;br /&gt;
local P_WORK_LANG = &amp;#039;P407&amp;#039;&lt;br /&gt;
local P_LANG_CODE = &amp;#039;P218&amp;#039;&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_baseTypes()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, saganEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;gender&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P21&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;birthDate&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P569&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;shortName&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P1813&amp;#039;,&lt;br /&gt;
			filter = base.tryFilterStatementsByLang,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;Q6581097&amp;#039;, source.gender.entity)&lt;br /&gt;
	self:assertEquals(&amp;#039;male&amp;#039;, source.gender.value)&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(1934, source.birthDate.value.year)&lt;br /&gt;
	self:assertEquals(11, source.birthDate.value.month)&lt;br /&gt;
	self:assertEquals(9, source.birthDate.value.day)&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;Carl Sagan&amp;#039;, source.shortName.value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_get()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;ru&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, marsEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;parentBody&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P397&amp;#039;,&lt;br /&gt;
			get = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;center&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P397&amp;#039;,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;Q649112&amp;#039;, source.center.entity)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_elseGet_exists()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;ru&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, marsEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;namedAfter&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P138&amp;#039;,&lt;br /&gt;
			elseGet = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;parentBody&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P397&amp;#039;,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(source.namedAfter ~= nil)&lt;br /&gt;
	self:assertEquals(nil, source.parentBody)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_elseGet_notExists()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;ru&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, marsEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;nonExistant&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P1111&amp;#039;,&lt;br /&gt;
			elseGet = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;parentBody&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P397&amp;#039;,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(nil, source.nonExistant)&lt;br /&gt;
	self:assertEquals(&amp;#039;Q525&amp;#039;, source.parentBody.entity)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_qualifiers()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, kidneyEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			property = &amp;#039;P2924&amp;#039;,&lt;br /&gt;
			qualifiers = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;title&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P1810&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;date&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P577&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;Почки&amp;#039;, source.title.value)&lt;br /&gt;
	self:assertEquals(2016, source.date.value.year)&lt;br /&gt;
	self:assertEquals(nil, source.date.value.month)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_getValue()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, journalEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;title&amp;#039;,&lt;br /&gt;
			getValue = wikidata.name,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;The New England Journal of Medicine&amp;#039;, source.title.value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_isArray()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, journalEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;title&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P921&amp;#039;,&lt;br /&gt;
			isArray = true,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(1, table.getn(source.title))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_components()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, saganBook, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;author&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P50&amp;#039;,&lt;br /&gt;
			get = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;familyName&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P734&amp;#039;,&lt;br /&gt;
					isLocal = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(saganEntity, source.author.entity)&lt;br /&gt;
	self:assertTrue(source.author.components ~= nil)&lt;br /&gt;
	self:assertTrue(source.author.components.familyName ~= nil)&lt;br /&gt;
	self:assertEquals(&amp;#039;Q17516282&amp;#039;, source.author.components.familyName.entity)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_noOverwrite()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, saganBook, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;author&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P50&amp;#039;,&lt;br /&gt;
			get = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;author&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P734&amp;#039;,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(saganEntity, source.author.entity)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_overwrite()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, saganBook, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;author&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P50&amp;#039;,&lt;br /&gt;
			get = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;author&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P734&amp;#039;,&lt;br /&gt;
					overwrite = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;Q17516282&amp;#039;, source.author.entity)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_overwriteByQualifier()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, &amp;#039;Q117104121&amp;#039;, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;publisher&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P123&amp;#039;,&lt;br /&gt;
			qualifiers = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;publisher&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P1932&amp;#039;,&lt;br /&gt;
					overwrite = true,&lt;br /&gt;
					max = 1,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;Springer-Verlag&amp;#039;, source.publisher.value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_overwriteValueByQualifier()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, &amp;#039;Q117104121&amp;#039;, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;publisher&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P123&amp;#039;,&lt;br /&gt;
			qualifiers = {&lt;br /&gt;
				{&lt;br /&gt;
					property = &amp;#039;P1932&amp;#039;,&lt;br /&gt;
					overwriteValue = true,&lt;br /&gt;
					max = 1,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;Springer-Verlag&amp;#039;, source.publisher.value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_array()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, saganBook, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;editions&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P747&amp;#039;,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(table.getn(source.editions) &amp;gt; 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_max()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, saganBook, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;author&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P747&amp;#039;,&lt;br /&gt;
			max = 1,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(0, table.getn(source.author))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_defaultUnit()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, saganBook, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;doNotDoSo&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P1476&amp;#039;,&lt;br /&gt;
			defaultUnit = &amp;#039;Q1069725&amp;#039;,&lt;br /&gt;
			max = 1,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(&amp;#039;Q1069725&amp;#039;, source.doNotDoSo.unitEntity)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_map()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, journalEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;isScholaryArticle&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P31&amp;#039;,&lt;br /&gt;
			mapEntity = { [scientificJournalEntity] = scholaryArticleEntity },&lt;br /&gt;
			max = 1,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(scholaryArticleEntity, source.isScholaryArticle.entity)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_has()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, bookWithInscriptions, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;info&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P1684&amp;#039;,&lt;br /&gt;
			has = {&lt;br /&gt;
				{ property=&amp;#039;P2868&amp;#039;, value=&amp;#039;Q116158574&amp;#039; },&lt;br /&gt;
			},&lt;br /&gt;
			isArray = true,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(type(source.info), &amp;#039;table&amp;#039;)&lt;br /&gt;
	self:assertEquals(table.getn(source.info), 1)&lt;br /&gt;
	self:assertEquals(source.info[1].value, &amp;#039;учебное пособие&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_overwriteEntity()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, bookWithInscriptions, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;info&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P1684&amp;#039;,&lt;br /&gt;
			has = {&lt;br /&gt;
				{ property=&amp;#039;P6568&amp;#039;, value=&amp;#039;Q136822&amp;#039; },&lt;br /&gt;
			},&lt;br /&gt;
			qualifiers = {&lt;br /&gt;
				{&lt;br /&gt;
					property = &amp;#039;P6568&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
					overwriteEntity = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			isArray = true,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(type(source.info), &amp;#039;table&amp;#039;)&lt;br /&gt;
	self:assertEquals(table.getn(source.info), 1)&lt;br /&gt;
	self:assertEquals(source.info[1].value, &amp;#039;высшее профессиональное образование&amp;#039;)&lt;br /&gt;
	self:assertEquals(source.info[1].entity, &amp;#039;Q136822&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_overwriteValue()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, bookWithInscriptions, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;info&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P1684&amp;#039;,&lt;br /&gt;
			has = {&lt;br /&gt;
				{ property=&amp;#039;P6568&amp;#039;, value=&amp;#039;Q136822&amp;#039; },&lt;br /&gt;
			},&lt;br /&gt;
			qualifiers = {&lt;br /&gt;
				{&lt;br /&gt;
					property = &amp;#039;P6568&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
					overwriteValue = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			isArray = true,&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertEquals(type(source.info), &amp;#039;table&amp;#039;)&lt;br /&gt;
	self:assertEquals(table.getn(source.info), 1)&lt;br /&gt;
	self:assertEquals(source.info[1].value, &amp;#039;higher education&amp;#039;)&lt;br /&gt;
	self:assertEquals(source.info[1].entity, nil)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_isLocal_in_unnamed()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, influenzaEntity, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;mesh&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P486&amp;#039;,&lt;br /&gt;
			get = {&lt;br /&gt;
				{&lt;br /&gt;
					entity = &amp;#039;P486&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P9073&amp;#039;,&lt;br /&gt;
					get = {&lt;br /&gt;
						{&lt;br /&gt;
							name = &amp;#039;lang&amp;#039;,&lt;br /&gt;
							property = &amp;#039;P407&amp;#039;,&lt;br /&gt;
							isLocal = true,&lt;br /&gt;
						},&lt;br /&gt;
					},&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(source.mesh)&lt;br /&gt;
	if not source.mesh.components then&lt;br /&gt;
		mw.log(&amp;#039;Test test_fetchEntity_isLocal_in_unnamed failed. Debug data:&amp;#039;)&lt;br /&gt;
		mw.logObject(source)&lt;br /&gt;
	end&lt;br /&gt;
	self:assertTrue(source.mesh.components ~= nil)&lt;br /&gt;
	self:assertEquals(source.mesh.components.lang.entity, &amp;#039;Q1860&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_isLocal_in_array()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, &amp;#039;Q8277&amp;#039;, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;omim&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P492&amp;#039;,&lt;br /&gt;
			qualifiers = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;title&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P1810&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
					isLocal = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(table.getn(source.omim) &amp;gt; 1)&lt;br /&gt;
	self:assertTrue(source.omim[1].components ~= nil)&lt;br /&gt;
	self:assertTrue(source.omim[1].components.title.value ~= nil)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_isLocal_with_qualifiers_and_get_by_entity_with_isLocal()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, &amp;#039;Q8277&amp;#039;, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;omim&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P492&amp;#039;,&lt;br /&gt;
			qualifiers = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;title&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P1810&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
					isLocal = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			get = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;test&amp;#039;,&lt;br /&gt;
					entity = &amp;#039;P492&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P31&amp;#039;,&lt;br /&gt;
					isLocal = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(table.getn(source.omim) &amp;gt; 1)&lt;br /&gt;
	self:assertTrue(source.omim[1].components ~= nil)&lt;br /&gt;
	self:assertTrue(source.omim[1].components.title.value ~= nil)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_forceGet()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, &amp;#039;Q8277&amp;#039;, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;omim&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P492&amp;#039;,&lt;br /&gt;
			forceGet = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;test&amp;#039;,&lt;br /&gt;
					entity = &amp;#039;P492&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P31&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
					isLocal = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(table.getn(source.omim) &amp;gt; 0)&lt;br /&gt;
	self:assertTrue(source.omim[1].components ~= nil)&lt;br /&gt;
	self:assertTrue(source.omim[1].components.test.value ~= nil)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_forceGet_predefined_value()&lt;br /&gt;
	local source = {&lt;br /&gt;
		omim = { value = { &amp;#039;612594 &amp;#039;} }&lt;br /&gt;
	}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, &amp;#039;Q8277&amp;#039;, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;omim&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P492&amp;#039;,&lt;br /&gt;
			forceGet = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;test&amp;#039;,&lt;br /&gt;
					entity = &amp;#039;P492&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P31&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
					isLocal = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(table.getn(source.omim) == 0)&lt;br /&gt;
	self:assertTrue(source.omim.components ~= nil)&lt;br /&gt;
	self:assertTrue(source.omim.components.test.value ~= nil)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_forceGet_predefined_value()&lt;br /&gt;
	local source = {&lt;br /&gt;
		omim = { value = { &amp;#039;612594 &amp;#039;} }&lt;br /&gt;
	}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, nil, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;omim&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P492&amp;#039;,&lt;br /&gt;
			forceGet = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;test&amp;#039;,&lt;br /&gt;
					entity = &amp;#039;P492&amp;#039;,&lt;br /&gt;
					property = &amp;#039;P31&amp;#039;,&lt;br /&gt;
					max = 1,&lt;br /&gt;
					isLocal = true,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(table.getn(source.omim) == 0)&lt;br /&gt;
	self:assertTrue(source.omim.components ~= nil)&lt;br /&gt;
	self:assertTrue(source.omim.components.test.value ~= nil)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_elseGet_in_inLocal_with_overwriteEntity()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, &amp;#039;Q455&amp;#039;, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;lang&amp;#039;,&lt;br /&gt;
			property = P_WORK_LANG,&lt;br /&gt;
			get = {&lt;br /&gt;
				{&lt;br /&gt;
					name = &amp;#039;langCode&amp;#039;,&lt;br /&gt;
					property = P_LANG_CODE,&lt;br /&gt;
					isLocal = true,&lt;br /&gt;
					max = 1,&lt;br /&gt;
					elseGet = {&lt;br /&gt;
						-- for ethnolects determine parent language&lt;br /&gt;
						{&lt;br /&gt;
							property = P_SUBCLASS_OF,&lt;br /&gt;
							overwriteEntity = true,&lt;br /&gt;
							max = 1,&lt;br /&gt;
							get = {&lt;br /&gt;
								{&lt;br /&gt;
									name = &amp;#039;langCode&amp;#039;,&lt;br /&gt;
									property = P_LANG_CODE,&lt;br /&gt;
									isLocal = true,&lt;br /&gt;
									max = 1,&lt;br /&gt;
								},&lt;br /&gt;
							},&lt;br /&gt;
						},&lt;br /&gt;
					},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(source.lang ~= nil)&lt;br /&gt;
	self:assertEquals(&amp;#039;Q1860&amp;#039;, source.lang.entity)&lt;br /&gt;
	if not source.lang.components then&lt;br /&gt;
		mw.log(&amp;#039;Test test_fetchEntity_elseGet_in_inLocal_with_overwriteEntity failed. Debug data:&amp;#039;)&lt;br /&gt;
		mw.logObject(source)&lt;br /&gt;
	end&lt;br /&gt;
	self:assertTrue(source.lang.components ~= nil)&lt;br /&gt;
	self:assertTrue(source.lang.components.langCode ~= nil)&lt;br /&gt;
	self:assertEquals(&amp;#039;en&amp;#039;, source.lang.components.langCode.value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function suite:test_fetchEntity_substInto()&lt;br /&gt;
	local source = {}&lt;br /&gt;
	local f = backend.new(&amp;#039;en&amp;#039;)&lt;br /&gt;
	f:fetchEntity(source, &amp;#039;Q2&amp;#039;, {&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;urlMask&amp;#039;,&lt;br /&gt;
			entity = &amp;#039;P1417&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P1630&amp;#039;,&lt;br /&gt;
			max = 1,&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			name = &amp;#039;id&amp;#039;,&lt;br /&gt;
			property = &amp;#039;P1417&amp;#039;,&lt;br /&gt;
			substInto = {&lt;br /&gt;
				name = &amp;#039;url&amp;#039;,&lt;br /&gt;
				template = {&lt;br /&gt;
					name = &amp;#039;urlMask&amp;#039;,&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	self:assertTrue(source.id ~= nil)&lt;br /&gt;
	self:assertTrue(source.urlMask ~= nil)&lt;br /&gt;
	self:assertTrue(source.url ~= nil)&lt;br /&gt;
	self:assertEquals(source.url.value, &amp;#039;https://www.britannica.com/place/Earth&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return suite&lt;/div&gt;</summary>
		<author><name>Буквица&gt;D6194c-1cc</name></author>
	</entry>
</feed>