Документация

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

-- Unit tests for [[Module:Сезон сериала]]. Click talk page to run tests.
local p = require('Модуль:UnitTests')

function p:test_01_checkPrevSeason() -- существует ли статья о предыдущем сезоне
	self:preprocess_equals_many('{{#invoke:Сезон сериала|isPrevSeasonLinkValid|', '}}', {
		{'title=Остаться в живых (сезон 2)', 'true'},
		{'title=Что, если…? (2-й сезон)', 'true'},
		{'title=Губка Боб Квадратные Штаны (2 сезон)', 'true'},
		{'title=Близкие друзья (Сезон 2)', 'true'},
		{'title=Голос (Россия, сезон 5)', 'true'},
		{'title=Черепашки-ниндзя (мультсериал, 2012) (2 сезон)', 'true'},
		{'title=Миссия невыполнима (телесериал, 1988) (сезон 2)', 'true'},
		{'title=Классический «Доктор Кто» (2-й сезон)', 'true'},
		{'title=Остаться в живых (сезон 55)', ''},
		{'title=Американская история ужасов: Дом-убийца', ''},
		{'title=Американская история ужасов: 1984', 'true'},
		{'title=Американская история ужасов: Двойной сеанс', 'true'}, -- модуль не должен интерпретировать прошлый сезон как "Сезон 1984". Не интерпретирует.
		{'title=Суд над Повелителем времени', ''},
		{'title=Частный детектив Магнум (2018, сезон 3)', 'true'},
	})
end

function p:test_02_checkNextSeason() -- существует ли статья о следующем сезоне
	self:preprocess_equals_many('{{#invoke:Сезон сериала|isNextSeasonLinkValid|', '}}', {
		{'title=Остаться в живых (сезон 2)', 'true'},
		{'title=Что, если…? (2-й сезон)', 'true'},
		{'title=Губка Боб Квадратные Штаны (2 сезон)', 'true'},
		{'title=Близкие друзья (Сезон 2)', 'true'},
		{'title=Голос (Россия, сезон 5)', 'true'},
		{'title=Черепашки-ниндзя (мультсериал, 2012) (2 сезон)', 'true'},
		{'title=Миссия невыполнима (телесериал, 1988) (сезон 1)', 'true'},
		{'title=Классический «Доктор Кто» (2-й сезон)', 'true'},
		{'title=Остаться в живых (сезон 55)', ''},
		{'title=Пожарные Чикаго (12-й сезон)', ''},
		{'title=Американская история ужасов: 1984', 'true'},
		{'title=Американская история ужасов: Апокалипсис', 'true'}, -- модуль не должен интерпретировать следующий сезон как "Сезон 1984". Не интерпретирует.
		{'title=Американская история ужасов: Нежность', ''},
		{'title=Суд над Повелителем времени', ''},
		{'title=Частный детектив Магнум (2018, сезон 3)', 'true'},
	})
end

--[[ Тоже бесполезная функция. Нигде не используется (ни в шаблоне, ни в модуле). Удалил из модуля.
function p:test_03_checkAll()
	self:preprocess_equals_many('{{#invoke:Сезон сериала|isPrevOrNextSeasonLinkValid|', '}}', {
		{'title=Остаться в живых (сезон 2)', 'true'},
		{'title=Что, если…? (2-й сезон)', 'true'},
		{'title=Губка Боб Квадратные Штаны (2 сезон)', 'true'},
		{'title=Близкие друзья (Сезон 2)', 'true'},
		{'title=Голос (Россия, сезон 5)', 'true'},
		{'title=Черепашки-ниндзя (мультсериал, 2012) (2 сезон)', 'true'},
		{'title=Миссия невыполнима (телесериал, 1988) (сезон 2)', 'true'},
		{'title=Классический «Доктор Кто» (2-й сезон)', 'true'},
		{'title=Остаться в живых (сезон 55)', ''},
	})
end]]

function p:test_04_getPrevSeasonArticle() -- получение статьи предыдущего сезона
	self:preprocess_equals_many('{{#invoke:Сезон сериала|getPrevSeasonArticle|', '}}', {
		{'title=Остаться в живых (сезон 2)', '[[Остаться в живых (сезон 1)|Сезон 1]]'},
		{'title=Что, если…? (2-й сезон)', '[[Что, если…? (1-й сезон)|Сезон 1]]'},
		{'title=Губка Боб Квадратные Штаны (2 сезон)', '[[Губка Боб Квадратные Штаны (1 сезон)|Сезон 1]]'},
		{'title=Близкие друзья (Сезон 2)', '[[Близкие друзья (Сезон 1)|Сезон 1]]'},
		{'title=Голос (Россия, сезон 5)', '[[Голос (Россия, сезон 4)|Сезон 4]]'},
		{'title=The Voice (США, сезон 17)', '[[The Voice (США, сезон 16)|Сезон 16]]'},
		{'title=Черепашки-ниндзя (мультсериал, 2012) (2 сезон)', '[[Черепашки-ниндзя (мультсериал, 2012) (1 сезон)|Сезон 1]]'},
		{'title=Миссия невыполнима (телесериал, 1988) (сезон 2)', '[[Миссия невыполнима (телесериал, 1988) (сезон 1)|Сезон 1]]'},
		{'title=Классический «Доктор Кто» (2-й сезон)', '[[Классический «Доктор Кто» (1-й сезон)|Сезон 1]]'},
		{'title=Миссия невыполнима (телесериал, 1988) (сезон 1)', ''}, -- статьи нет
		{'title=The Voice (США, сезон 15)', ''}, -- статьи нет
		{'title=Американская история ужасов: 1984', '[[Американская история ужасов: Апокалипсис|Апокалипсис]]'}, -- статья не должна определяться. Почему это???  Сделал исключения для "Американская история ужасов"
		{'title=Американская история ужасов: Двойной сеанс', '[[Американская история ужасов: 1984|1984]]'}, -- подзаголовок прошлого сезона содержит 1984, который должен игнорироваться
		{'title=Американская история ужасов: 1984|link=[[Американская история ужасов: Апокалипсис|Апокалипсис]]', '[[Американская история ужасов: Апокалипсис|Апокалипсис]]'},
		{'title=Американская история ужасов: Нежность|link={{нп4|Американская история ужасов: NYC|NYC||American Horror Story: NYC}}', ''},  -- Вот тут точно не должно быть ничего... Почему? У нас нет запрета на указание ссылок на другие википедии в карточке. (Думаю что проще всего это всё же делать через if в коде шаблона, чем через link=)
		{'title=Убийство Джанни Версаче: Американская история преступлений|link=[[Народ против О. Джея Симпсона: Американская история преступлений|Народ против О. Джея Симпсона]]', '[[Народ против О. Джея Симпсона: Американская история преступлений|Народ против О. Джея Симпсона]]'},
		{'title=Морские рейнджеры с планеты Аквитар|link=[[Могучие рейнджеры (телесериал, 1993)|Могучие рейнджеры]]', '[[Могучие рейнджеры (телесериал, 1993)|Могучие рейнджеры]]'},
		{'title=Классический «Доктор Кто» (24-й сезон)|link=[[Суд над Повелителем времени]]<br><small>(Сезон 23)</small>', '[[Суд над Повелителем времени]]<br><small>(Сезон 23)</small>'}, -- если вставлять песочницу в [[Классический «Доктор Кто» (24-й сезон)]], то ссылку вообще не показывает, а в тестах почему-то показывает Сезон 23
		{'title=Суд над Повелителем времени|link=[[Классический «Доктор Кто» (22 сезон)|Сезон 22]]', '[[Классический «Доктор Кто» (22 сезон)|Сезон 22]]'},
		{'title=Частный детектив Магнум (2018, сезон 3)', '[[Частный детектив Магнум (2018, сезон 2)|Сезон 2]]'}, -- такой формат ещё получится распознавать? думаю тогда его можно будет использовать вместо Черепашки-ниндзя (мультсериал, 2012) (2 сезон) и Миссия невыполнима (телесериал, 1988) (сезон 1)
		{'title=Список серий аниме One Piece (серии 1—61)', ''},
	}, {nowiki=1})
end

function p:test_05_getNextSeasonArticle() -- получение статьи следующего сезона
	self:preprocess_equals_many('{{#invoke:Сезон сериала|getNextSeasonArticle|', '}}', {
		{'title=Остаться в живых (сезон 2)', '[[Остаться в живых (сезон 3)|Сезон 3]]'},
		{'title=Что, если…? (2-й сезон)', '[[Что, если…? (3-й сезон)|Сезон 3]]'},
		{'title=Губка Боб Квадратные Штаны (2 сезон)', '[[Губка Боб Квадратные Штаны (3 сезон)|Сезон 3]]'},
		{'title=Близкие друзья (Сезон 2)', '[[Близкие друзья (Сезон 3)|Сезон 3]]'},
		{'title=Голос (Россия, сезон 5)', '[[Голос (Россия, сезон 6)|Сезон 6]]'},
		{'title=The Voice (США, сезон 15)', '[[The Voice (США, сезон 16)|Сезон 16]]'},
		{'title=Черепашки-ниндзя (мультсериал, 2012) (2 сезон)', '[[Черепашки-ниндзя (мультсериал, 2012) (3 сезон)|Сезон 3]]'},
		{'title=Миссия невыполнима (телесериал, 1988) (сезон 1)', '[[Миссия невыполнима (телесериал, 1988) (сезон 2)|Сезон 2]]'},
		{'title=Классический «Доктор Кто» (2-й сезон)', '[[Классический «Доктор Кто» (3-й сезон)|Сезон 3]]'},
		{'title=Миссия невыполнима (телесериал, 1988) (сезон 2)', ''}, -- статьи нет
		{'title=The Voice (США, сезон 17)', ''}, -- статьи нет
		{'title=Американская история ужасов: 1984', '[[Американская история ужасов: Двойной сеанс|Двойной сеанс]]'},
		{'title=Американская история ужасов: Апокалипсис', '[[Американская история ужасов: 1984|1984]]'}, -- Сделал исключения для "Американская история ужасов"
		{'title=Американская история ужасов: Двойной сеанс|link=[[Американская история ужасов: Нью-Йорк|Нью-Йорк]]', '[[Американская история ужасов: Нью-Йорк|Нью-Йорк]]'}, -- красная ссылка должна отображаться. С этим проблема. Ссылка появится когда будет создана статья!!! -- Это обязательно должно работать, т.к. на рувики нет запрета на красные ссылки. Отсутствие красной ссылки может восприниматься что сезона не было, а не что статьи нет. Красные ссылки указывают очень часто.
		{'title=Классический «Доктор Кто» (26-й сезон)|link=[[Доктор Кто (фильм, 1996)|Доктор Кто]] <small>(фильм)</small><br>[[Доктор Кто (1 сезон)|Сезон 1]] <small>(2005)</small>', '[[Доктор Кто (фильм, 1996)|Доктор Кто]] <small>(фильм)</small><br>[[Доктор Кто (1 сезон)|Сезон 1]] <small>(2005)</small>'},
		{'title=Убийство Джанни Версаче: Американская история преступлений|link=[[Импичмент: Американская история преступлений|Импичмент]]', '[[Импичмент: Американская история преступлений|Импичмент]]'},
		{'title=Суд над Повелителем времени|link=[[Классический «Доктор Кто» (24 сезон)|Сезон 24]]', '[[Классический «Доктор Кто» (24 сезон)|Сезон 24]]'},
		{'title=Частный детектив Магнум (2018, сезон 3)', '[[Частный детектив Магнум (2018, сезон 4)|Сезон 4]]'},
		{'title=Список серий аниме One Piece (серии 1—61)', ''},
	}, {nowiki=1})
end

--[[Раз все варианты будут Сезонами в рувики, тогда удаляю эту функцию из модуля. Только лишнее нагромождение
function p:test_06_getSeasonWord()  -- различие между season и series в enwiki, для ru неактуально; спецвыпуски=сезоны
	self:preprocess_equals_many('{{#invoke:Сезон сериала|getSeasonWord|', '}}', {
		{'title=Остаться в живых (сезон 2)', 'Сезон'},
		{'title=Что, если…? (2-й сезон)', 'Сезон'},
		{'title=Губка Боб Квадратные Штаны (2 сезон)', 'Сезон'},
		{'title=Близкие друзья (Сезон 2)', 'Сезон'},
		{'title=Голос (Россия, сезон 5)', 'Сезон'},
		{'title=Черепашки-ниндзя (мультсериал, 2012) (2 сезон)', 'Сезон'},
		{'title=Доктор Кто (спецвыпуски, 2013)', 'Сезон'},
		{'title=Доктор Кто (спецвыпуски, 2008—2010)', 'Сезон'},
	})
end]]

function p:test_07_getInfoboxHeader()  -- заголовок сериала, все названия должны быть без обоих уточнений
	self:preprocess_equals_many('{{#invoke:Сезон сериала|getInfoboxHeader|', '}}', {
		{'title=Остаться в живых (сезон 2)', 'Остаться в живых'},
		{'title=Что, если…? (2-й сезон)', 'Что, если…?'},
		{'title=Губка Боб Квадратные Штаны (2 сезон)', 'Губка Боб Квадратные Штаны'},
		{'title=Близкие друзья (Сезон 2)', 'Близкие друзья'},
		{'title=Голос (Россия, сезон 5)', 'Голос'},
		{'title=Черепашки-ниндзя (мультсериал, 2012) (2 сезон)', 'Черепашки-ниндзя'},
		{'title=Доктор Кто (спецвыпуски, 2013)', 'Доктор Кто'},
		{'title=Классический «Доктор Кто» (2-й сезон)', 'Классический «Доктор Кто»'},
		{'title=Американская история ужасов: 1984', 'Американская история ужасов: 1984'},
		{'title=Остаться в живых (сезон 2)', 'Остаться в живых'},
		{'title=Агенты «Щ.И.Т.» (7-й сезон)', 'Агенты «Щ.И.Т.»'},
		{'title=Список серий аниме One Piece (серии 1—61)', 'Список серий аниме One Piece'},
	})
end

function p:test_08_getInfoboxSubHeader()  -- подзаголовок карточки с номером сезона; должно быть только "Сезон n"
	self:preprocess_equals_many('{{#invoke:Сезон сериала|getInfoboxSubHeader|', '}}', {
		{'title=Остаться в живых (сезон 2)', 'Сезон 2'},
		{'title=Что, если…? (2-й сезон)', 'Сезон 2'},
		{'title=Губка Боб Квадратные Штаны (2 сезон)', 'Сезон 2'},
		{'title=Близкие друзья (Сезон 2)', 'Сезон 2'},
		{'title=Голос (Россия, сезон 5)', 'Сезон 5'},
		{'title=Черепашки-ниндзя (мультсериал, 2012) (2 сезон)', 'Сезон 2'},
		{'title=Доктор Кто (спецвыпуски, 2013)', 'Спецвыпуски 2013'},
		{'title=Доктор Кто (спецвыпуски, 2008—2010)', 'Спецвыпуски 2008—2010'},
		{'title=Американская история ужасов: 1984', ''},  -- извлекать подзаголовки не нужно, т.к. эта функция только для указания номеров сезона
		{'title=Остаться в живых (сезон 2)|series_number=2', 'Сезон 2'},
		{'title=Остаться в живых (сезон 2)|series_number=5', 'Сезон 5'},
		{'title=Список серий аниме One Piece (серии 1—61)', 'Серии 1—61'},
		{'title=Список серий «Блич» (сезоны 1-4)', 'Сезоны 1-4'},
		{'title=Список эпизодов мультсериала «Симпсоны» (с 21 сезона)', 'Сезоны с 21'}, -- в списках же не нужно подзаголовки получать? там если и будут карточки сезонов, то они должны заполняться через "номер сезона"
		{'title=Список серий аниме One Piece (серии 892 и далее)', 'Серии с 892'},
	})
end

function p:test_09_getListOfEpisodes()  -- Все статьи с каким-то текстом после кавычек и с уточнениями придётся вводить вручную. Их не найти - тут никакой логики... 
	self:preprocess_equals_many('{{#invoke:Сезон сериала|getListOfEpisodes|', '}}', {
		{'title=Остаться в живых (сезон 1)', '[[Список эпизодов телесериала «Остаться в живых»|Список серий]]'},
		{'title=Голос (Россия, сезон 12)', '[[Список выпусков телешоу «Голос»|Список серий]]'},
		{'title=Симпсоны (сезон 30)', '[[Список эпизодов мультсериала «Симпсоны»|Список серий]]'},
		{'title=Агенты «Щ.И.Т.» (2-й сезон)', '[[Список эпизодов телесериала «Агенты „Щ.И.Т.“»|Список серий]]'},
		{'title=Лучше звоните Солу (сезон 6)', '[[Список эпизодов телесериала «Лучше звоните Солу»|Список серий]]'},
		{'title=Миссия невыполнима (телесериал, 1988) (сезон 1)', '[[Список эпизодов телесериала «Миссия невыполнима» (1988)|Список серий]]'}, -- неправильный заголовок? должно быть в одних скобках? Если переименовать статью в "Список эпизодов телесериала «Миссия невыполнима (телесериал, 1988)», то все будет ок. Но это частый случай и его можно игнорировать и сделать нормальный link=
		{'title=Мир Дикого Запада (1-й сезон)', ''},
		{'title=Части тела (сезон 1)', ''},
-- plain link. это нужно пока
		{'title=Американская история ужасов: Двойной сеанс|link=Список эпизодов телесериала «Американская история ужасов»', '[[Список эпизодов телесериала «Американская история ужасов»|Список серий]]'},
		{'title=Остаться в живых (сезон 1)|link=x', '[[x|Список серий]]'},
-- link with formatting. и это нужно. 
		{'title=Остаться в живых (сезон 1)|link=Список эпизодов телесериала «Остаться в живых»|Список серий', '[[Список эпизодов телесериала «Остаться в живых»|Список серий]]'},
		{"title=Остаться в живых (сезон 1)|link=Список эпизодов телесериала «Остаться в живых»|Список эпизодов телесериала «Остаться в живых»", '[[Список эпизодов телесериала «Остаться в живых»|Список серий]]'},
		{'title=Остаться в живых (сезон 1)|link=[[Список эпизодов телесериала «Остаться в живых»]]', '[[Список эпизодов телесериала «Остаться в живых»|Список серий]]'},
		{'title=Остаться в живых (сезон 1)|link=[[Список эпизодов телесериала «Остаться в живых»|Список серий]]', '[[Список эпизодов телесериала «Остаться в живых»|Список серий]]'},
		{'title=Остаться в живых (сезон 1)|link=[[Список эпизодов телесериала «Остаться в живых»|Список эпизодов телесериала «Остаться в живых»]]', '[[Список эпизодов телесериала «Остаться в живых»|Список серий]]'},
		{'title=Симпсоны (сезон 34)|link=[[Список эпизодов мультсериала «Симпсоны» (с 21 сезона)|Список серий (с 21 сезона)]]', '[[Список эпизодов мультсериала «Симпсоны» (с 21 сезона)|Список серий]]'},
-- ссылки из названия без подзаголовка
		{'title=Торчвуд: День Чуда', '[[Список серий телесериала «Торчвуд»|Список серий]]'},
		{'title=Американская история ужасов: Двойной сеанс', '[[Список эпизодов телесериала «Американская история ужасов»|Список серий]]'},
-- ссылка с указанием группы сезоны	
		{'title=Detective Conan (сезон 1)', '[[Список серий аниме Detective Conan (сезоны 1—15)|Список серий]]'},
-- ссылки на интервики
	    {'title=Топ-модель по-американски (сезон 1)|link=https://en.wikipedia.org/wiki/List_of_America%27s_Next_Top_Model_episodes', ''},
	    {'title=Топ-модель по-американски (сезон 1)|link={{Нп5|Список эпизодов шоу «Топ-модель по-американски»|Список серий|en|List of America\'s Next Top Model episodes}}', ''}, -- должны ли отображаться правильно оформленные ссылки на интервики?
	    {'title=Топ-модель по-американски (сезон 1)|link=[[:en:|List of America\'s Next Top Model episodes|Список серий]]', ''},
	}, {nowiki=1})
end

return p