1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-02-01 13:17:58 +02:00

OZON: Тест структуры полей товара

This commit is contained in:
Anton Titovets 2024-08-21 14:00:18 +03:00
parent d8920f6f03
commit 6bf89d827e
14 changed files with 2475 additions and 2633 deletions

View File

@ -1182,6 +1182,10 @@ jobs:
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/en/OInt/tests/Modules/internal/OPI_Tests.os "OzonAPI_AttributesAndFeatures"
- name: Uploading and updating products
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/en/OInt/tests/Modules/internal/OPI_Tests.os "OzonAPI_UploadingAndUpdatingProducts"
- name: Записать логи
if: ${{ cancelled() }} == false
uses: actions/cache/save@v3

View File

@ -1182,6 +1182,10 @@ jobs:
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "ОзонАПИ_АтрибутыИХарактеристики"
- name: Загрузка и обновление товаров
if: ${{ cancelled() }} == false
run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "ОзонАПИ_ЗагрузкаИОбновлениеТоваров"
- name: Записать логи
if: ${{ cancelled() }} == false
uses: actions/cache/save@v3

View File

@ -1,262 +0,0 @@
#Использовать osparser
#использовать "../../../src/ru/OInt/tools/"
Перем МодульТестов;
Перем Парсер;
Перем ОбластьТестов;
Перем КаталогСохранения;
Перем КаталогЗаписиЗначений;
Перем ТекущаяСтруктураЗначений;
Перем СоответствиеТестов;
Перем ПутьКСоответствиюТестов;
Перем ТекущаяБиблиотека;
Процедура ПриСозданииОбъекта()
ПутьКТестам = "./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os";
ОбластьТестов = "АтомарныеТесты";
КаталогСохранения = "./docs/ru/examples/";
КаталогЗаписиЗначений = "./docs/ru/data/";
ПутьКСоответствиюТестов = "./service/tests_set.json";
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл(ПутьКСоответствиюТестов);
СоответствиеТестов = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
Парсер = Новый ПарсерВстроенногоЯзыка;
МодульТестов = Новый ТекстовыйДокумент();
МодульТестов.Прочитать(ПутьКТестам);
Начало = 0;
Окончание = 0;
ПолучитьГраницыОбластиТестов(Начало, Окончание);
ДокументАтомарныхТестов = Новый ТекстовыйДокумент();
Для Н = Начало По Окончание Цикл
ДокументАтомарныхТестов.ДобавитьСтроку(МодульТестов.ПолучитьСтроку(Н));
КонецЦикла;
МодульТестов = ДокументАтомарныхТестов;
РазобратьТесты();
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.ОткрытьФайл(ПутьКСоответствиюТестов);
ЗаписатьJSON(ЗаписьJSON, СоответствиеТестов);
ЗаписьJSON.Закрыть();
КонецПроцедуры
Процедура ПолучитьГраницыОбластиТестов(Начало, Окончание)
ТекстМодуля = МодульТестов.ПолучитьТекст();
СтруктураМодуля = Парсер.Разобрать(ТекстМодуля);
ВложенныеОбласти = 0;
Для Каждого Объявление Из СтруктураМодуля.Объявления Цикл
Если Строка(Объявление.Тип) = "ИнструкцияПрепроцессораОбласть" Тогда
Если Объявление.Имя = ОбластьТестов Тогда
Начало = Объявление.Начало.НомерСтроки;
КонецЕсли;
Если ЗначениеЗаполнено(Начало) Тогда
ВложенныеОбласти = ВложенныеОбласти + 1;
КонецЕсли;
КонецЕсли;
Если Строка(Объявление.Тип) = "ИнструкцияПрепроцессораКонецОбласти" И ЗначениеЗаполнено(Начало) Тогда
Если ВложенныеОбласти = 0 Тогда
Окончание = Объявление.Начало.НомерСтроки;
Прервать;
Иначе
ВложенныеОбласти = ВложенныеОбласти - 1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура РазобратьТесты()
ТекстМодуля = МодульТестов.ПолучитьТекст();
СтруктураМодуля = Парсер.Разобрать(ТекстМодуля);
Для Каждого Объявление Из СтруктураМодуля.Объявления Цикл
Если Строка(Объявление.Тип) = "ОбъявлениеМетода" Тогда
РазобратьМетод(Объявление.Начало.НомерСтроки, Объявление.Сигнатура.Имя);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура РазобратьМетод(НомерСтроки, Имя)
РазбитоеИмя = СтрРазделить(Имя, "_", Ложь);
Если РазбитоеИмя.Количество() <> 2 Тогда
Сообщить("Метод " + Имя + " был найден но не обработан", СтатусСообщения.ОченьВажное);
Возврат;
КонецЕсли;
ТекстТекущейСтроки = МодульТестов.ПолучитьСтроку(НомерСтроки + 1);
ТекстПримера = "";
ТекущаяСтруктураЗначений = Новый Структура();
ПрошлаяПустая = Ложь;
Пока СтрНайти(ТекстТекущейСтроки, "END") = 0 И СтрНайти(ТекстТекущейСтроки, "КонецПроцедуры") = 0 Цикл
ТекущаяПустая = Ложь;
ЭтоСкип = СтрНайти(ТекстТекущейСтроки, "SKIP") <> 0;
ЭтоЛог = СтрНайти(ТекстТекущейСтроки, "ЗаписатьЛог") <> 0;
Если Не ЗначениеЗаполнено(СокрЛП(ТекстТекущейСтроки))
Или ЭтоСкип Или ЭтоЛог Тогда
ТекущаяПустая = Истина;
КонецЕсли;
Если Не ЭтоСкип И Не ЭтоЛог Тогда
Если Не (ТекущаяПустая И ПрошлаяПустая) Тогда
ТекстПримера = ТекстПримера + Символы.ПС + ПреобразоватьТекст(ТекстТекущейСтроки);
КонецЕсли;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
ТекстТекущейСтроки = МодульТестов.ПолучитьСтроку(НомерСтроки);
ПрошлаяПустая = ТекущаяПустая;
КонецЦикла;
Каталог = КаталогСохранения + РазбитоеИмя[0];
ОбъектКаталога = Новый Файл(Каталог);
Если Не ОбъектКаталога.Существует() Тогда
СоздатьКаталог(Каталог);
КонецЕсли;
ТекстПримера = СтрЗаменить(ТекстПримера, Символы.Таб, " ");
ТекстПримера = " " + СокрЛП(ТекстПримера);
ТекстПримера = СтрЗаменить(ТекстПримера, " " + Символы.ПС + " " + Символы.ПС, Символы.ПС);
ТекстПримера = СтрЗаменить(ТекстПримера, Символы.ПС + " " + Символы.ПС, Символы.ПС);
ПутьПримера = Каталог + "/" + РазбитоеИмя[1] + ".txt";
ФайлПримера = Новый ТекстовыйДокумент();
ФайлПримера.УстановитьТекст(ТекстПримера);
ФайлПримера.Записать(ПутьПримера);
СоответствиеТестов.Вставить(Имя, Истина);
Если ЗначениеЗаполнено(ТекущаяСтруктураЗначений) Тогда
КаталогЗначений = КаталогЗаписиЗначений + РазбитоеИмя[0];
ОбъектКаталога = Новый Файл(КаталогЗначений);
Если Не ОбъектКаталога.Существует() Тогда
СоздатьКаталог(КаталогЗначений);
КонецЕсли;
ПутьДанных = КаталогЗначений + "/" + РазбитоеИмя[1] + ".json";
ФайлДанных = Новый Файл(ПутьДанных);
Если ФайлДанных.Существует() Тогда
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл(ПутьДанных, "UTF-8");
СтараяСтруктураЗначений = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
Для Каждого ЭлементСтруктуры Из СтараяСтруктураЗначений Цикл
ТекущаяСтруктураЗначений.Вставить(ЭлементСтруктуры.Ключ, ЭлементСтруктуры.Значение);
КонецЦикла;
КонецЕсли;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл(ПутьДанных, , , Новый ПараметрыЗаписиJSON());
ЗаписатьJSON(ЗаписьJSON, ТекущаяСтруктураЗначений);
ЗаписьJSON.Закрыть();
КонецЕсли;
КонецПроцедуры
Функция ПреобразоватьТекст(Текст)
ЕстьRU = СтрНайти(Текст, "ПараметрыФункции") <> 0;
ЕстьEN = СтрНайти(Текст, "FunctionParameters") <> 0;
Если ЕстьRU Или ЕстьEN Тогда
РазбитоеЗначение = СтрРазделить(Текст, "=", Ложь);
ИмяПараметра = ОпределитьИмяПараметра(Текст, ?(ЕстьRU, "ПараметрыФункции", "FunctionParameters"));
Попытка
Значение = OPI_ПолучениеДанныхТестов.ПолучитьПараметр(ИмяПараметра);
Исключение
ОО = ОписаниеОшибки();
Возврат Текст;
КонецПопытки;
ЗакрытьСекретныеДанные(Значение, ИмяПараметра);
Если РазбитоеЗначение.Количество() = 2 Тогда
ТекущаяСтруктураЗначений.Вставить(СокрЛП(РазбитоеЗначение[0]), Значение);
КонецЕсли;
ОпределениеПараметра = "ПараметрыФункции[""" + ИмяПараметра + """]";
Текст = СтрЗаменить(Текст, ОпределениеПараметра, """" + Строка(Значение) + """");
ОпределениеПараметра = "FunctionParameters[""" + ИмяПараметра + """]";
Текст = СтрЗаменить(Текст, ОпределениеПараметра, """" + Строка(Значение) + """");
КонецЕсли;
Возврат Текст;
КонецФункции
Функция ОпределитьИмяПараметра(Текст, Коллекция)
НачалоПараметра = СтрНайти(Текст, Коллекция + "[""") + 18;
КонецПараметра = СтрНайти(Текст, """]");
Имя = Сред(Текст, НачалоПараметра, КонецПараметра - НачалоПараметра);
Возврат Имя;
КонецФункции
Процедура ЗакрытьСекретныеДанные(Значение, ИмяПараметра)
МассивПризнаковСекретов = Новый Массив;
МассивПризнаковСекретов.Добавить("Secret");
МассивПризнаковСекретов.Добавить("Token");
МассивПризнаковСекретов.Добавить("Key");
МассивПризнаковСекретов.Добавить("Refresh");
Для Каждого Признак Из МассивПризнаковСекретов Цикл
Если СтрНайти(нРег(ИмяПараметра), нРег(Признак)) <> 0 Тогда
Значение = Лев(Значение, Цел(СтрДлина(Значение) / 2)) + "...";
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПриСозданииОбъекта();

View File

@ -0,0 +1 @@
 Result = OPI_Ozon.GetProductStructure();

View File

@ -0,0 +1 @@
 Результат = OPI_Ozon.ПолучитьСтруктуруТовара();

File diff suppressed because it is too large Load Diff

View File

@ -3216,6 +3216,16 @@ Procedure OzonAPI_AttributesAndFeatures() Export
EndProcedure
Procedure OzonAPI_UploadingAndUpdatingProducts() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("Ozon_ClientID" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Ozon_ApiKey" , TestParameters);
Ozon_GetProductStructure(TestParameters);
EndProcedure
#EndRegion
#EndRegion
@ -11316,6 +11326,18 @@ Procedure Ozon_SearchAttributeValue(FunctionParameters)
EndProcedure
Procedure Ozon_GetProductStructure(FunctionParameters)
Result = OPI_Ozon.GetProductStructure();
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetProductStructure", "Ozon");
Check_Structure(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@ -243,7 +243,8 @@ Function GetTestTable() Export
NewTest(TestTable, "VKT_CommonMethods" , "Common methods" , VKT);
NewTest(TestTable, "VKT_ChatManagment" , "Chat managment" , VKT);
NewTest(TestTable, "OzonAPI_AttributesAndFeatures" , "Attributes and features" , Ozon);
NewTest(TestTable, "OzonAPI_AttributesAndFeatures" , "Attributes and features" , Ozon);
NewTest(TestTable, "OzonAPI_UploadingAndUpdatingProducts" , "Uploading and updating products" , Ozon);
Return TestTable;

View File

@ -243,7 +243,8 @@ Function GetTestTable() Export
NewTest(TestTable, "VKT_CommonMethods" , "Common methods" , VKT);
NewTest(TestTable, "VKT_ChatManagment" , "Chat managment" , VKT);
NewTest(TestTable, "OzonAPI_AttributesAndFeatures" , "Attributes and features" , Ozon);
NewTest(TestTable, "OzonAPI_AttributesAndFeatures" , "Attributes and features" , Ozon);
NewTest(TestTable, "OzonAPI_UploadingAndUpdatingProducts" , "Uploading and updating products" , Ozon);
Return TestTable;

View File

@ -3216,6 +3216,16 @@ Procedure OzonAPI_AttributesAndFeatures() Export
EndProcedure
Procedure OzonAPI_UploadingAndUpdatingProducts() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("Ozon_ClientID" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("Ozon_ApiKey" , TestParameters);
Ozon_GetProductStructure(TestParameters);
EndProcedure
#EndRegion
#EndRegion
@ -11316,6 +11326,18 @@ Procedure Ozon_SearchAttributeValue(FunctionParameters)
EndProcedure
Procedure Ozon_GetProductStructure(FunctionParameters)
Result = OPI_Ozon.GetProductStructure();
// END
// !OInt OPI_TestDataRetrieval.WriteLog(Result, "GetProductStructure", "Ozon");
Check_Structure(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@ -3216,6 +3216,16 @@
КонецПроцедуры
Процедура ОзонАПИ_ЗагрузкаИОбновлениеТоваров() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста);
Ozon_ПолучитьСтруктуруТовара(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@ -11316,6 +11326,18 @@
КонецПроцедуры
Процедура Ozon_ПолучитьСтруктуруТовара(ПараметрыФункции)
Результат = OPI_Ozon.ПолучитьСтруктуруТовара();
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруТовара", "Ozon");
Проверка_Структура(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -244,6 +244,7 @@
НовыйТест(ТаблицаТестов, "ВКТ_УправлениеЧатами" , "Управление чатами" , ВКТ);
НовыйТест(ТаблицаТестов, "ОзонАПИ_АтрибутыИХарактеристики" , "Атрибуты и характеристики" , Озон);
НовыйТест(ТаблицаТестов, "ОзонАПИ_ЗагрузкаИОбновлениеТоваров" , "Загрузка и обновление товаров" , Озон);
Возврат ТаблицаТестов;

View File

@ -244,6 +244,7 @@
НовыйТест(ТаблицаТестов, "ВКТ_УправлениеЧатами" , "Управление чатами" , ВКТ);
НовыйТест(ТаблицаТестов, "ОзонАПИ_АтрибутыИХарактеристики" , "Атрибуты и характеристики" , Озон);
НовыйТест(ТаблицаТестов, "ОзонАПИ_ЗагрузкаИОбновлениеТоваров" , "Загрузка и обновление товаров" , Озон);
Возврат ТаблицаТестов;

View File

@ -3216,6 +3216,16 @@
КонецПроцедуры
Процедура ОзонАПИ_ЗагрузкаИОбновлениеТоваров() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ClientID" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Ozon_ApiKey" , ПараметрыТеста);
Ozon_ПолучитьСтруктуруТовара(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@ -11316,6 +11326,18 @@
КонецПроцедуры
Процедура Ozon_ПолучитьСтруктуруТовара(ПараметрыФункции)
Результат = OPI_Ozon.ПолучитьСтруктуруТовара();
// END
// !OInt OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруТовара", "Ozon");
Проверка_Структура(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти