mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-06-20 09:19:27 +02:00
Тесты RSS
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
Нужно создать тесты для методов %1 из модуля %2
|
||||
Нужно создать тесты для методов %1 из модуля %2. Порядрок действий для каждой функции:
|
||||
|
||||
1. Определить область (директива #Область) функции, которая будет тестироваться
|
||||
2. Найти в модуле OPI_Тесты в области ЗапускаемыеТесты функцию, которая уже соответствует области из основного модуля и/или тестирует другие функции этой же области. Если такой не существует - создать новую по примеру уже существующих
|
||||
@@ -6,4 +6,6 @@
|
||||
4. Для каждой тестируемой функции создать отдельную функцию в области АтомарныеТесты, название которой состоит из имени модуля (без префикса OPI_) и имени функции. Пример можно посмотреть в остальных функциях области АтомарныеТесты, желательно в тех, которые относятся к этому же модулю (если такие существуют)
|
||||
5. В каждом тесте должен быть хотя бы один вызов функции Обработать. Он обращается к функции-проверке в модуле OPI_ПолучениеДанныхТестов. У каждого атомарного теста должна быть только одна функция проверки. Ее название такое же, как и у функции атомарного теста, но с префиксом "Проверка_". Располагаются проверки в области Проверки. Там присутствует множество примеров, которые можно взять за основу
|
||||
6. При необходимости нескольких проверок в рамках одного теста (например, с разными данными, передаваемыми в одну тестируемую функцию), их можно ветвить при помощи передачи параметра Вариант в функцию Обработать. Пример: Проверка_ClickHouse_ОткрытьПотокGRPC (тест в модуле OPI_Тесты и проверка в модуле OPI_ПолучениеДанныхТестов)
|
||||
7. При необходимости сохранить данные между двумя атомарными тестами (например, создание какого-нибудь объекта в одном тесте, а удаление - в другом), можно использовать запись параметра. Пример: Проверка_GreenMax_ОтправитьТекстовоеСообщение (тест в модуле OPI_Тесты и проверка в модуле OPI_ПолучениеДанныхТестов)
|
||||
7. При необходимости сохранить данные между двумя атомарными тестами (например, создание какого-нибудь объекта в одном тесте, а удаление - в другом), можно использовать запись параметра. Пример: Проверка_GreenMax_ОтправитьТекстовоеСообщение (тест в модуле OPI_Тесты и проверка в модуле OPI_ПолучениеДанныхТестов)
|
||||
|
||||
При спорных моментах и непонятных ситуациях основывайся на уже реализованных функция OPI_Тесты и OPI_ПолучениеДанныхТестов в качестве примера
|
||||
@@ -161,6 +161,7 @@
|
||||
Разделы.Вставить("ReportPortal" , 5);
|
||||
Разделы.Вставить("GRPC" , 5);
|
||||
Разделы.Вставить("ClickHouse" , 5);
|
||||
Разделы.Вставить("RSS" , 5);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@@ -210,6 +211,7 @@
|
||||
Разделы.Вставить("ReportPortal" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("GRPC" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("ClickHouse" , СтандартныеЗависимости);
|
||||
Разделы.Вставить("RSS" , СтандартныеЗависимости);
|
||||
|
||||
Возврат Разделы;
|
||||
|
||||
@@ -254,6 +256,7 @@
|
||||
GreenMax = "GreenMax";
|
||||
GRPC = "GRPC";
|
||||
CHouse = "ClickHouse";
|
||||
RSS = "RSS";
|
||||
|
||||
ТаблицаТестов = Новый ТаблицаЗначений;
|
||||
ТаблицаТестов.Колонки.Добавить("Метод");
|
||||
@@ -446,6 +449,8 @@
|
||||
НовыйТест(ТаблицаТестов, "GR_Стриминг" , "Стриминг" , GRPC);
|
||||
НовыйТест(ТаблицаТестов, "CH_ОсновныеМетоды" , "Основные методы" , CHouse);
|
||||
НовыйТест(ТаблицаТестов, "CH_GRPC" , "GRPC" , CHouse);
|
||||
НовыйТест(ТаблицаТестов, "RSS_МетодыRSS" , "Методы RSS" , RSS);
|
||||
НовыйТест(ТаблицаТестов, "RSS_МетодыAtom" , "Методы Atom" , RSS);
|
||||
|
||||
Возврат ТаблицаТестов;
|
||||
|
||||
@@ -13364,6 +13369,114 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_RSS_СоздатьФидRSS(Знач Результат, Знач Вариант, Параметры = "")
|
||||
|
||||
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("Строка"));
|
||||
ОжидаетЧто(Результат).Заполнено();
|
||||
ОжидаетЧто(СтрНайти(Результат, "<?xml") > 0).Равно(Истина);
|
||||
ОжидаетЧто(СтрНайти(Результат, "<rss") > 0).Равно(Истина);
|
||||
ОжидаетЧто(СтрНайти(Результат, "<channel>") > 0).Равно(Истина);
|
||||
ОжидаетЧто(СтрНайти(Результат, "<item>") > 0).Равно(Истина);
|
||||
|
||||
ЗаписатьПараметр("RSS_FeedXML", Результат);
|
||||
Параметры.Вставить("RSS_FeedXML", Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_RSS_ПолучитьСтруктуруЭлементаФидаRSS(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
|
||||
|
||||
Если Вариант = "Пустая" Тогда
|
||||
ОжидаетЧто(Результат["title"]).Равно("");
|
||||
ОжидаетЧто(Результат["description"]).Равно("");
|
||||
ОжидаетЧто(Результат["link"]).Равно("");
|
||||
ИначеЕсли Вариант = "Соответствие" Тогда
|
||||
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("Соответствие"));
|
||||
Иначе
|
||||
ОжидаетЧто(Результат["title"]).Заполнено();
|
||||
ОжидаетЧто(Результат["description"]).Заполнено();
|
||||
ОжидаетЧто(Результат["link"]).Заполнено();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_RSS_РазобратьФидRSS(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
|
||||
ОжидаетЧто(Результат["title"]).Заполнено();
|
||||
ОжидаетЧто(Результат["description"]).Заполнено();
|
||||
ОжидаетЧто(Результат["link"]).Заполнено();
|
||||
ОжидаетЧто(Результат["items"]).ИмеетТип("Массив");
|
||||
ОжидаетЧто(Результат["items"].Количество() > 0).Равно(Истина);
|
||||
|
||||
ПервыйЭлемент = Результат["items"][0];
|
||||
ОжидаетЧто(ПервыйЭлемент["title"]).Заполнено();
|
||||
ОжидаетЧто(ПервыйЭлемент["description"]).Заполнено();
|
||||
ОжидаетЧто(ПервыйЭлемент["link"]).Заполнено();
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_RSS_СоздатьФидAtom(Знач Результат, Знач Вариант, Параметры = "")
|
||||
|
||||
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("Строка"));
|
||||
ОжидаетЧто(Результат).Заполнено();
|
||||
ОжидаетЧто(СтрНайти(Результат, "<?xml") > 0).Равно(Истина);
|
||||
ОжидаетЧто(СтрНайти(Результат, "<feed") > 0).Равно(Истина);
|
||||
ОжидаетЧто(СтрНайти(Результат, "xmlns=""http://www.w3.org/2005/Atom""") > 0).Равно(Истина);
|
||||
ОжидаетЧто(СтрНайти(Результат, "<entry>") > 0).Равно(Истина);
|
||||
|
||||
ЗаписатьПараметр("RSS_AtomFeedXML", Результат);
|
||||
Параметры.Вставить("RSS_AtomFeedXML", Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_RSS_ПолучитьСтруктуруЭлементаФидаAtom(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
|
||||
|
||||
Если Вариант = "Пустая" Тогда
|
||||
ОжидаетЧто(Результат["title"]).Равно("");
|
||||
ОжидаетЧто(Результат["id"]).Равно("");
|
||||
ОжидаетЧто(Результат["link"]).Равно("");
|
||||
ИначеЕсли Вариант = "Соответствие" Тогда
|
||||
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("Соответствие"));
|
||||
Иначе
|
||||
ОжидаетЧто(Результат["title"]).Заполнено();
|
||||
ОжидаетЧто(Результат["id"]).Заполнено();
|
||||
ОжидаетЧто(Результат["link"]).Заполнено();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_RSS_РазобратьФидAtom(Знач Результат, Знач Вариант)
|
||||
|
||||
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
|
||||
ОжидаетЧто(Результат["title"]).Заполнено();
|
||||
ОжидаетЧто(Результат["id"]).Заполнено();
|
||||
ОжидаетЧто(Результат["link"]).Заполнено();
|
||||
ОжидаетЧто(Результат["entries"]).ИмеетТип("Массив");
|
||||
ОжидаетЧто(Результат["entries"].Количество() > 0).Равно(Истина);
|
||||
|
||||
ПерваяЗапись = Результат["entries"][0];
|
||||
ОжидаетЧто(ПерваяЗапись["title"]).Заполнено();
|
||||
ОжидаетЧто(ПерваяЗапись["id"]).Заполнено();
|
||||
ОжидаетЧто(ПерваяЗапись["link"]).Заполнено();
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_ReportPortal_ПолучитьВременныйТокен(Знач Результат, Знач Вариант, Параметры = "")
|
||||
|
||||
Токен = Результат["access_token"];
|
||||
|
||||
+164
@@ -3492,6 +3492,30 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область RSS
|
||||
|
||||
Процедура RSS_МетодыRSS() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
|
||||
RSS_СоздатьФидRSS(ПараметрыТеста);
|
||||
RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыТеста);
|
||||
RSS_РазобратьФидRSS(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура RSS_МетодыAtom() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
|
||||
RSS_СоздатьФидAtom(ПараметрыТеста);
|
||||
RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыТеста);
|
||||
RSS_РазобратьФидAtom(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@@ -28860,6 +28884,146 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область RSS
|
||||
|
||||
Процедура RSS_СоздатьФидRSS(ПараметрыФункции)
|
||||
|
||||
НазваниеКанала = "Тестовый RSS канал";
|
||||
ОписаниеКанала = "Описание тестового RSS канала";
|
||||
СсылкаКанала = "https://example.com";
|
||||
|
||||
МассивЭлементов = Новый Массив;
|
||||
|
||||
СтруктураЭлемента = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS(Истина);
|
||||
СтруктураЭлемента["title"] = "Первый элемент";
|
||||
СтруктураЭлемента["description"] = "Описание первого элемента";
|
||||
СтруктураЭлемента["link"] = "https://example.com/item1";
|
||||
СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||
СтруктураЭлемента["author"] = "test@example.com";
|
||||
СтруктураЭлемента["guid"] = "item-1";
|
||||
|
||||
МассивЭлементов.Добавить(СтруктураЭлемента);
|
||||
|
||||
СтруктураЭлемента = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS(Истина);
|
||||
СтруктураЭлемента["title"] = "Второй элемент";
|
||||
СтруктураЭлемента["description"] = "Описание второго элемента";
|
||||
СтруктураЭлемента["link"] = "https://example.com/item2";
|
||||
СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||
СтруктураЭлемента["author"] = "test@example.com";
|
||||
СтруктураЭлемента["guid"] = "item-2";
|
||||
|
||||
МассивЭлементов.Добавить(СтруктураЭлемента);
|
||||
|
||||
Результат = OPI_RSS.СоздатьФидRSS(НазваниеКанала, ОписаниеКанала, СсылкаКанала, МассивЭлементов);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "RSS", "СоздатьФидRSS", , ПараметрыФункции);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыФункции)
|
||||
|
||||
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS();
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS");
|
||||
|
||||
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS(Истина);
|
||||
|
||||
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Пустая");
|
||||
|
||||
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS(Ложь, Истина);
|
||||
|
||||
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Соответствие");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура RSS_РазобратьФидRSS(ПараметрыФункции)
|
||||
|
||||
ФидXML = ПараметрыФункции["RSS_FeedXML"];
|
||||
|
||||
Результат = OPI_RSS.РазобратьФидRSS(ФидXML);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "RSS", "РазобратьФидRSS");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура RSS_СоздатьФидAtom(ПараметрыФункции)
|
||||
|
||||
НазваниеФида = "Тестовый Atom фид";
|
||||
СсылкаФида = "https://example.com";
|
||||
IDФида = "https://example.com/feed";
|
||||
|
||||
МассивЭлементов = Новый Массив;
|
||||
|
||||
СтруктураЭлемента = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom(Истина);
|
||||
СтруктураЭлемента["title"] = "Первая запись";
|
||||
СтруктураЭлемента["id"] = "https://example.com/entry1";
|
||||
СтруктураЭлемента["link"] = "https://example.com/entry1";
|
||||
СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||
СтруктураЭлемента["summary"] = "Краткое описание первой записи";
|
||||
СтруктураЭлемента["content"] = "Полное содержимое первой записи";
|
||||
СтруктураЭлемента["author"] = "Автор Первый";
|
||||
СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||
|
||||
МассивЭлементов.Добавить(СтруктураЭлемента);
|
||||
|
||||
СтруктураЭлемента = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom(Истина);
|
||||
СтруктураЭлемента["title"] = "Вторая запись";
|
||||
СтруктураЭлемента["id"] = "https://example.com/entry2";
|
||||
СтруктураЭлемента["link"] = "https://example.com/entry2";
|
||||
СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||
СтруктураЭлемента["summary"] = "Краткое описание второй записи";
|
||||
СтруктураЭлемента["content"] = "Полное содержимое второй записи";
|
||||
СтруктураЭлемента["author"] = "Автор Второй";
|
||||
СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату();
|
||||
|
||||
МассивЭлементов.Добавить(СтруктураЭлемента);
|
||||
|
||||
Результат = OPI_RSS.СоздатьФидAtom(НазваниеФида, СсылкаФида, IDФида, МассивЭлементов);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "RSS", "СоздатьФидAtom", , ПараметрыФункции);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыФункции)
|
||||
|
||||
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom();
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom");
|
||||
|
||||
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom(Истина);
|
||||
|
||||
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Пустая");
|
||||
|
||||
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom(Ложь, Истина);
|
||||
|
||||
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Соответствие");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура RSS_РазобратьФидAtom(ПараметрыФункции)
|
||||
|
||||
ФидXML = ПараметрыФункции["RSS_AtomFeedXML"];
|
||||
|
||||
Результат = OPI_RSS.РазобратьФидAtom(ФидXML);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "RSS", "РазобратьФидAtom");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Reference in New Issue
Block a user