mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2024-11-28 08:48:45 +02:00
9d8a04c4ab
Доработка и рефакторинг.
283 lines
17 KiB
Plaintext
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] = Значение;
|
|
КонецЕсли;
|
|
КонецЦикла;
|
|
|
|
КонецПроцедуры
|
|
|
|
#КонецОбласти
|