1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2024-11-28 08:48:45 +02:00
precommit4onec/tests/ТестРедакторНастроек.os
Максимов Валерий Валерьевич (000044217) 9d8a04c4ab #ONECICD-249
Доработка и рефакторинг.
2021-05-14 08:34:33 +03:00

283 lines
17 KiB
Plaintext

#Использовать asserts
#Использовать logos
#Использовать tempfiles
#Использовать "../src"
Перем юТест;
Перем Лог;
Перем МенеджерВременныхФайлов;
// Основная точка входа
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
ПередЗапускомТестов();
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("Тест_СброситьНастройкиРепозитория");
ВсеТесты.Добавить("Тест_СброситьГлобальныеНастройки");
ВсеТесты.Добавить("Тест_ПолучитьСтандартнуюСтруктуруНастроек");
ВсеТесты.Добавить("Тест_ОбновитьНастройки");
Возврат ВсеТесты;
КонецФункции
#Область ПередПослеТеста
Процедура ПередЗапускомТестов()
МенеджерПриложения.Инициализировать(ПараметрыПриложения);
Попытка
ВремТестер = Новый Тестер;
Лог = Логирование.ПолучитьЛог(ВремТестер.ИмяЛога());
Исключение
Лог = Логирование.ПолучитьЛог("Test");
КонецПопытки;
КонецПроцедуры
Процедура ПередЗапускомТеста() Экспорт
ВключитьПоказОтладки();
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
МенеджерНастроек.СбросСостоянияМенеджера();
КонецПроцедуры
Процедура ПослеЗапускаТеста() Экспорт
МенеджерВременныхФайлов.Удалить();
МенеджерВременныхФайлов = Неопределено;
КонецПроцедуры
#КонецОбласти
#Область Тесты
Процедура Тест_СброситьНастройкиРепозитория() Экспорт
Каталог = СоздатьТестовыйКаталог("v8configПроекты.json");
// Сброс по проектно
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("configuration\");
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("ext\extension1\");
РедакторНастроек.СброситьНастройкиРепозитория(Истина, "ext\extension1\");
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Проект не удален").НЕ_().Содержит("ext\extension1\");
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("configuration\");
РедакторНастроек.СброситьНастройкиРепозитория(Истина, "configuration\extension1\");
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Удален лишний репозиторий").Содержит("configuration\");
// Перезагрузим настройки
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Настройки не сохранены").НЕ_().Содержит("ext\extension1\");
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Настройки сохранены не корректно").Содержит("configuration\");
// Сброс всех подпроектов
Каталог = СоздатьТестовыйКаталог("v8configПроекты.json");
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
РедакторНастроек.СброситьНастройкиРепозитория(Истина);
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не выполнен сброс настроек подпроектов").ИмеетДлину(0);
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки("ОтключенныеСценарии"), "Не корректны настройки").ИмеетДлину(1);
// Перезагрузим настройки
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Настройки не сохранены").ИмеетДлину(0);
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки("ОтключенныеСценарии"), "Не корректны настройки после загрузки").ИмеетДлину(1);
// Полный сброс настроек прекоммит
Каталог = СоздатьТестовыйКаталог("v8configПроекты.json");
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
РедакторНастроек.СброситьНастройкиРепозитория();
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не выполнен сброс настроек").ИмеетДлину(0);
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки("ОтключенныеСценарии"), "Не корректны настройки").НЕ_().Заполнено();
// Перезагрузим настройки
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Настройки не сохранены").ИмеетДлину(0);
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки("ОтключенныеСценарии"), "Не корректны настройки после загрузки").НЕ_().Заполнено();
Ожидаем.Что(МенеджерНастроек.Настройки().НастройкиПриложения(МенеджерНастроек.КлючНастройкиPrecommit())).НЕ_().Заполнено();
КонецПроцедуры
Процедура Тест_СброситьГлобальныеНастройки() Экспорт
Каталог = СоздатьТестовыйКаталог("v8configПроекты.json");
МенеджерНастроек.УстановитьКаталогГлобальныхНастроек(Каталог);
МенеджерНастроек.ГлобальныеНастройки();
РедакторНастроек.СброситьГлобальныеНастройки();
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не удалены подпроекты").НЕ_().Заполнено();
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки("ОтключенныеСценарии"), "Не сброшены ОтключенныеСценарии").НЕ_().Заполнено();
Для Каждого ИмяСценария Из СценарииОбработки.ГлобальныеСценарии() Цикл
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки("ГлобальныеСценарии"), "Не сброшены ГлобальныеСценарии").Содержит(ИмяСценария);
КонецЦикла;
КонецПроцедуры
Процедура Тест_ПолучитьСтандартнуюСтруктуруНастроек() Экспорт
СтандартныеНастройки = РедакторНастроек.ПолучитьСтандартнуюСтруктуруНастроек();
Ожидаем.Что(СтандартныеНастройки)
.ИмеетТип("Соответствие")
.ИмеетДлину(5);
Эталон = Новый Соответствие();
Эталон.Вставить("ИспользоватьСценарииРепозитория", "Булево");
Эталон.Вставить("КаталогЛокальныхСценариев", "Строка");
Эталон.Вставить("ГлобальныеСценарии", "Массив");
Эталон.Вставить("ОтключенныеСценарии", "Массив");
Эталон.Вставить("НастройкиСценариев", "Соответствие");
Для Каждого Элемент Из Эталон Цикл
Ожидаем.Что(СтандартныеНастройки[Элемент.Ключ], "Не верное свойство " + Элемент.Ключ).ИмеетТип(Элемент.Значение);
КонецЦикла;
КонецПроцедуры
Процедура Тест_ОбновитьНастройки() Экспорт
Варианты = Новый ТаблицаЗначений();
Варианты.Колонки.Добавить("Описание");
Варианты.Колонки.Добавить("ИмяФикстуры");
Варианты.Колонки.Добавить("НовыеНастройки");
Варианты.Колонки.Добавить("НовыеПроекты");
Варианты.Колонки.Добавить("ОжидаемыеПроекты");
БазовыеНастройки = РедакторНастроек.ПолучитьСтандартнуюСтруктуруНастроек();
НастройкиПроектов = Новый Соответствие();
НастройкиПроектов.Вставить("configuration\", РедакторНастроек.ПолучитьСтандартнуюСтруктуруНастроек());
ДобавитьВариантНастройки(Варианты, "Только базовые настройки", "v8config.json", БазовыеНастройки, , "");
ДобавитьВариантНастройки(Варианты, "К базовым настройкам добавляем проекты", "v8config.json", БазовыеНастройки, НастройкиПроектов, "configuration\");
ДобавитьВариантНастройки(Варианты, "Настройки с проектами, обновляем только базовые настройки", "v8configПроекты.json", БазовыеНастройки, , "configuration\,ext\extension1");
ДобавитьВариантНастройки(Варианты, "Обновление настройки подпроекта", "v8configПроекты.json", БазовыеНастройки, НастройкиПроектов, "configuration\,ext\extension1\");
НастройкиПроектов = Новый Соответствие();
НастройкиПроектов.Вставить("configuration2\", РедакторНастроек.ПолучитьСтандартнуюСтруктуруНастроек());
ДобавитьВариантНастройки(Варианты, "Добавление настройки подпроекта", "v8configПроекты.json", БазовыеНастройки, НастройкиПроектов, "configuration\,configuration2\,ext\extension1\");
Для Каждого Вариант Из Варианты Цикл
Лог.Отладка("Обработка файла %1", Вариант.ИмяФикстуры);
МенеджерНастроек.СбросСостоянияМенеджера();
Каталог = СоздатьТестовыйКаталог(Вариант.ИмяФикстуры);
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
РедакторНастроек.ОбновитьНастройки(Вариант.НовыеНастройки, Вариант.НовыеПроекты);
МенеджерНастроек.СбросСостоянияМенеджера();
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
Префикс = СтрШаблон("Вариант ""%1""", Вариант.Описание);
Для Каждого Элемент Из Вариант.НовыеНастройки Цикл
Сообщение = СтрШаблон("%1. Не верное значение поля '%2'", Префикс, Элемент.Ключ);
ОжидаемоеЗначение = Элемент.Значение;
Если ТипЗнч(ОжидаемоеЗначение) = Тип("Массив") Тогда
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки(Элемент.Ключ), Сообщение).ИмеетТип("Массив").ИмеетДлину(ОжидаемоеЗначение.Количество());
ИначеЕсли ТипЗнч(ОжидаемоеЗначение) = Тип("Соответствие") Тогда
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки(Элемент.Ключ), Сообщение).ИмеетТип("Соответствие").ИмеетДлину(ОжидаемоеЗначение.Количество());
Иначе
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки(Элемент.Ключ), Сообщение).Равно(ОжидаемоеЗначение);
КонецЕсли;
КонецЦикла;
ИменаПроектов = СтрРазделить(Вариант.ОжидаемыеПроекты, ",");
Для Каждого ИмяПроекта Из ИменаПроектов Цикл
Сообщение = СтрШаблон("%1. Нет настроек для проекта '%2'", Префикс, ИмяПроекта);
Ожидаем.Что(МенеджерНастроек.НастройкиПроекта(ИмяПроекта), Сообщение).Заполнено();
КонецЦикла;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Служебные
Процедура ВключитьПоказОтладки()
Лог.УстановитьУровень(УровниЛога.Отладка);
КонецПроцедуры
Процедура ВыключитьПоказОтладки()
Лог.УстановитьУровень(УровниЛога.Информация);
КонецПроцедуры
Функция СоздатьТестовыйКаталог(ИмяФикстуры)
Каталог = МенеджерВременныхФайлов.СоздатьКаталог();
КаталогФикстур = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "Настройки");
Фикстура = ОбъединитьПути(КаталогФикстур, ИмяФикстуры);
КопироватьФайл(Фикстура, ОбъединитьПути(Каталог, "v8config.json"));
СоздатьКаталог(ОбъединитьПути(Каталог, "configuration"));
СоздатьКаталог(ОбъединитьПути(Каталог, "configuration2"));
СоздатьКаталог(ОбъединитьПути(Каталог, "ext"));
СоздатьКаталог(ОбъединитьПути(Каталог, "ext", "extension1"));
СоздатьКаталог(ОбъединитьПути(Каталог, "ext", "extension2"));
Возврат Каталог;
КонецФункции
Процедура ДобавитьВариантНастройки(Варианты, Значение1 = Неопределено, Значение2 = Неопределено, Значение3 = Неопределено, Значение4 = Неопределено, Значение5 = Неопределено)
Строка = Варианты.Добавить();
Для Инд = 1 По 5 Цикл
Значение = Вычислить(СтрШаблон("Значение%1", Инд));
Если Значение <> Неопределено Тогда
Строка[Инд - 1] = Значение;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти