1+ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
2+ #Использовать asserts
3+ #Использовать tempfiles
4+
5+ Перем БДД ; //контекст фреймворка 1bdd
6+
7+ Перем Лог ;
8+
9+ // Метод выдает список шагов, реализованных в данном файле-шагов
10+ Функция ПолучитьСписокШагов (КонтекстФреймворкаBDD ) Экспорт
11+ БДД = КонтекстФреймворкаBDD;
12+
13+ ВсеШаги = Новый Массив;
14+
15+ ВсеШаги.Добавить("ВЛог_ФайлеЗапускаПродуктаЕстьСтрока" );
16+ ВсеШаги.Добавить("ВЛог_ФайлеЗапускаПродуктаОтсутствуетСтрока" );
17+ ВсеШаги.Добавить("ВФайлеЕстьСтрока" );
18+
19+ Возврат ВсеШаги;
20+ КонецФункции
21+
22+
23+ // Реализация шагов
24+
25+ // TODO дубль метода ВЛог_ФайлеЗапускаПродуктаЕстьСтрока с методом в 1bdd
26+ // TODO дубль метода ВЛог_ФайлеЗапускаПродуктаОтсутствуетСтрока с методом в 1bdd
27+ // TODO дубль метода ВФайлеЕстьСтрока с методом в 1bdd
28+ //
29+ Функция ИмяЛога () Экспорт
30+ Возврат "bdd.gitsync.feature" ;
31+ КонецФункции
32+
33+ //в лог-файле запуска продукта есть строка "ЯЗапускаюПадающийШагСПараметром-Первый падающий шаг"
34+ Процедура ВЛог_ФайлеЗапускаПродуктаЕстьСтрока (Знач ПроверяемаяСтрока ) Экспорт
35+ ТекстЛогФайла = БДД.ПолучитьИзКонтекста("ТекстЛогФайлаПродукта" );
36+ Если СтрЧислоСтрок (ПроверяемаяСтрока) = 1 Тогда
37+ Ожидаем.Что(ТекстЛогФайла).Содержит(ПроверяемаяСтрока);
38+ Иначе
39+ ПроверитьЧтоМногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках(ТекстЛогФайла, ПроверяемаяСтрока);
40+ КонецЕсли ;
41+ КонецПроцедуры
42+
43+ //в файле "clean.log" есть строка "ыва"
44+ Процедура ВФайлеЕстьСтрока (Знач ПутьФайла , Знач ПроверяемаяСтрока ) Экспорт
45+ Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла));
46+ ЕстьПодстрока(ПрочитатьТекстФайла(Файл), ПроверяемаяСтрока);
47+ КонецПроцедуры
48+
49+ Функция ПрочитатьТекстФайла (Знач Файл )
50+ ЧтениеТекста = Новый ЧтениеТекста;
51+ ЧтениеТекста.Открыть(Файл.ПолноеИмя, "UTF-8" );
52+
53+ Строка = ЧтениеТекста.Прочитать();
54+ ЧтениеТекста.Закрыть();
55+ Возврат Строка;
56+ КонецФункции // ПрочитатьТекстФайла()
57+
58+ Процедура ЕстьПодстрока (Знач Строка , Знач ПроверяемаяСтрока )
59+ Если СтрЧислоСтрок (ПроверяемаяСтрока) = 1 Тогда
60+ Ожидаем.Что(Строка, "Проверяем одиночную строку" ).Содержит(ПроверяемаяСтрока);
61+ Иначе
62+ ПроверитьЧтоМногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках(Строка, ПроверяемаяСтрока);
63+ КонецЕсли ;
64+ КонецПроцедуры
65+
66+ //TODO перенести в ассерты oscript-library
67+ Процедура ПроверитьЧтоМногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках (Знач Строка , Знач Подстрока , ДопСообщениеОшибки = "" )
68+ СообщениеОшибки = "" ;
69+ Нашли = МногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках(Строка, Подстрока, СообщениеОшибки);
70+ Если Не Нашли Тогда
71+ ВызватьИсключение СтрШаблон ("Ожидали, что в строке <
72+ |%1
73+ |>
74+ |найдем подстроку<
75+ |%2
76+ |>
77+ |А это не так.
78+ |Уточнение: %3.
79+ |%4" , Строка, Подстрока, СообщениеОшибки, ДопСообщениеОшибки);
80+ КонецЕсли ;
81+ КонецПроцедуры
82+
83+ Функция МногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках (Знач Строка , Знач Подстрока , СообщениеОшибки = "" )
84+ ПерваяСтрока = СокрЛП (СтрПолучитьСтроку (Подстрока, 1 ));
85+ НашлиПервуюСтроку = Ложь ;
86+ Для Счетчик = 1 По СтрЧислоСтрок (Строка) Цикл
87+ ОчереднаяСтрока = СокрЛП (СтрПолучитьСтроку (Строка, Счетчик));
88+ НашлиПервуюСтроку = Найти (ОчереднаяСтрока, ПерваяСтрока) <> 0 ;
89+ Если НашлиПервуюСтроку Тогда
90+ Прервать ;
91+ КонецЕсли ;
92+ КонецЦикла ;
93+ Если Не НашлиПервуюСтроку Тогда
94+ СообщениеОшибки = СтрШаблон ("Не нашли первую же подстроку <%1>" , ПерваяСтрока);
95+ Возврат Ложь ;
96+ КонецЕсли ;
97+
98+ СчетчикЧтоИщем = 2 ;
99+ Для Счетчик = Счетчик+ 1 По СтрЧислоСтрок (Строка) Цикл
100+ ОчереднаяСтрока = СокрЛП (СтрПолучитьСтроку (Строка, Счетчик));
101+ ЧтоИщем = СокрЛП (СтрПолучитьСтроку (Подстрока, СчетчикЧтоИщем));
102+ Поз = Найти (ОчереднаяСтрока, ЧтоИщем);
103+ Если Поз = 0 Тогда
104+ СообщениеОшибки = СтрШаблон ("Не нашли подстроку № %1 <%2>" , СчетчикЧтоИщем, ЧтоИщем);
105+ Возврат Ложь ;
106+ Иначе
107+ СчетчикЧтоИщем = СчетчикЧтоИщем + 1 ;
108+ Если СчетчикЧтоИщем > СтрЧислоСтрок (Подстрока) Тогда
109+ Возврат Истина ;
110+ КонецЕсли ;
111+ КонецЕсли ;
112+ КонецЦикла ;
113+ Возврат СчетчикЧтоИщем > СтрЧислоСтрок (Подстрока);
114+ КонецФункции
115+
116+ //в лог-файле запуска продукта отсутствует строка "ДоЭтогоШагаВыполнениеДойтиНеДолжно"
117+ Процедура ВЛог_ФайлеЗапускаПродуктаОтсутствуетСтрока (Знач ПроверяемаяСтрока ) Экспорт
118+ ТекстЛогФайла = БДД.ПолучитьИзКонтекста("ТекстЛогФайлаПродукта" );
119+ Ожидаем.Что(ТекстЛогФайла).ЭтоНе().Содержит(ПроверяемаяСтрока);
120+ КонецПроцедуры
121+
122+ Лог = Логирование.ПолучитьЛог(ИмяЛога());
123+ //Лог.УстановитьУровень(Логирование.ПолучитьЛог("bdd").Уровень());
124+ // Лог.УстановитьУровень(УровниЛога.Отладка);
0 commit comments