Юнит-тесты для модуля Сезон сериала. Для запуска тестов перейдите на эту страницу ( ).
-- 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