diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl index aa56287b..1ae9ab9b 100644 --- a/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросы/Module.bsl @@ -54,6 +54,41 @@ КонецФункции +// Возвращяет первую запись таблицы соответствующую условиям +// +// Параметры: +// ИмяТаблицы - Строка - Имя таблицы базы +// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить +// - см. ЮТФабрика.ВыражениеПредиката +// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат +// - Неопределено - Проверит, что таблица не пустая +// Возвращаемое значение: +// Структура, Неопределено - Содержит все данные записи, включая табличный части +Функция Запись(ИмяТаблицы, Предикат) Экспорт + + ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*"); + //@skip-check constructor-function-return-section + Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Истина); + +КонецФункции + +// Возвращяет записи таблицы соответствующую условиям +// +// Параметры: +// ИмяТаблицы - Строка - Имя таблицы базы +// Предикат - Массив из см. ЮТФабрика.ВыражениеПредиката - Набор условий, см. ЮТПредикаты.Получить +// - см. ЮТФабрика.ВыражениеПредиката +// - ОбщийМодуль - Модуль настройки предикатов, см. ЮТест.Предикат +// - Неопределено - Проверит, что таблица не пустая +// Возвращаемое значение: +// Массив из Структура - Найденные записи, включая табличный части +Функция Записи(ИмяТаблицы, Предикат) Экспорт + + ОписаниеЗапроса = ЮТЗапросыКлиентСервер.ОписаниеЗапроса(ИмяТаблицы, Предикат, "*"); + Возврат ЮТЗапросыВызовСервера.Записи(ОписаниеЗапроса, Ложь); + +КонецФункции + // Вернет признак содержит ли таблица записи удовлетворяющие переданным условиям // // Параметры: @@ -107,9 +142,7 @@ // Возвращаемое значение: // Структура - Описание запроса: // * ИмяТаблицы - Строка - -// * ВыбираемыеПоля - Структура - Выражения выбираемых полей: -// * Ключ - Строка - Имя поля -// * Значение - Строка - выражение поля +// * ВыбираемыеПоля - Массив из Строка // * КоличествоЗаписей - Число, Неопределено - Ограничение количества выбираемых записей // * Условия - Массив из Строка - Коллекция выражений условий, которые будут объединены через `И` // * ЗначенияПараметров - Структура - Набор параметров запроса @@ -117,7 +150,7 @@ Описание = Новый Структура(); Описание.Вставить("ИмяТаблицы", ""); - Описание.Вставить("ВыбираемыеПоля", Новый Структура); + Описание.Вставить("ВыбираемыеПоля", Новый Массив); Описание.Вставить("КоличествоЗаписей", Неопределено); Описание.Вставить("Условия", Новый Массив()); Описание.Вставить("ЗначенияПараметров", Новый Структура()); diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl index 931cadad..9a31a352 100644 --- a/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыВызовСервера/Module.bsl @@ -23,26 +23,7 @@ Запрос = Запрос(ОписаниеЗапроса); РезультатЗапроса = Запрос.Выполнить(); - Если НЕ ДляКлиента Тогда - Возврат РезультатЗапроса.Выгрузить(); - ИначеЕсли РезультатЗапроса.Пустой() Тогда - Возврат Новый Массив(); - КонецЕсли; - - Ключи = СтрСоединить(ЮТОбщий.ВыгрузитьЗначения(РезультатЗапроса.Колонки, "Имя"), ","); - Результат = Новый Массив(); - - Выборка = РезультатЗапроса.Выбрать(); - - Пока Выборка.Следующий() Цикл - - Запись = Новый Структура(Ключи); - ЗаполнитьЗначенияСвойств(Запись, Выборка); - Результат.Добавить(Запись); - - КонецЦикла; - - Возврат Результат; + Возврат ВыгрузитьРезультатЗапроса(РезультатЗапроса, ДляКлиента); КонецФункции @@ -88,6 +69,35 @@ КонецФункции +// Возвращяет записи результат запроса +// +// Параметры: +// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса +// ОднаЗапись - Булево - Вернуть первую запись +// +// Возвращаемое значение: +// Массив из Структура, Структура, Неопределено - Записи +Функция Записи(ОписаниеЗапроса, ОднаЗапись) Экспорт + + Если ОднаЗапись Тогда + ОписаниеЗапроса.КоличествоЗаписей = 1; + КонецЕсли; + + Запрос = Запрос(ОписаниеЗапроса); + РезультатЗапроса = Запрос.Выполнить(); + + Записи = ВыгрузитьРезультатЗапроса(РезультатЗапроса, Истина); + + Если НЕ ОднаЗапись Тогда + Возврат Записи; + ИначеЕсли Записи.Количество() Тогда + Возврат Записи[0]; + Иначе + Возврат Неопределено; + КонецЕсли; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -108,14 +118,10 @@ Строки.Добавить("ПЕРВЫЕ " + ЮТОбщий.ЧислоВСтроку(ОписаниеЗапроса.КоличествоЗаписей)); КонецЕсли; - ВыбираемыеПоля = Новый Массив(); - Для Каждого Выражение Из ОписаниеЗапроса.ВыбираемыеПоля Цикл - Поле = СтрШаблон(" %1 КАК %2", ?(Выражение.Значение = Неопределено, Выражение.Ключ, Выражение.Значение), Выражение.Ключ); - ВыбираемыеПоля.Добавить(Поле); - КонецЦикла; - - Если НЕ ВыбираемыеПоля.Количество() Тогда - ВыбираемыеПоля.Добавить("1 КАК Поле"); + Если ОписаниеЗапроса.ВыбираемыеПоля.Количество() Тогда + ВыбираемыеПоля = ОписаниеЗапроса.ВыбираемыеПоля; + Иначе + ВыбираемыеПоля = ЮТОбщий.ЗначениеВМассиве("1 КАК Поле"); КонецЕсли; Строки.Добавить(СтрСоединить(ВыбираемыеПоля, "," + Символы.ПС)); @@ -159,4 +165,51 @@ КонецФункции +Функция ВыгрузитьРезультатЗапроса(РезультатЗапроса, ВМассив) + + Если НЕ ВМассив Тогда + Возврат РезультатЗапроса.Выгрузить(); + Иначе + Результат = Новый Массив(); + КонецЕсли; + + Если РезультатЗапроса.Пустой() Тогда + Возврат Результат; + КонецЕсли; + + Реквизиты = Новый Массив(); + ТабличныеЧасти = Новый Массив(); + + ТипРезультатЗапроса = Тип("РезультатЗапроса"); + Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл + + Реквизиты.Добавить(Колонка.Имя); + + Если Колонка.ТипЗначения.СодержитТип(ТипРезультатЗапроса) Тогда + ТабличныеЧасти.Добавить(Колонка.Имя); + КонецЕсли; + + КонецЦикла; + + ПараметрыКонструктора = СтрСоединить(Реквизиты, ","); + + Выборка = РезультатЗапроса.Выбрать(); + + Пока Выборка.Следующий() Цикл + + Запись = Новый Структура(ПараметрыКонструктора); + ЗаполнитьЗначенияСвойств(Запись, Выборка); + + Для Каждого ТабличнаяЧасть Из ТабличныеЧасти Цикл + Запись[ТабличнаяЧасть] = ВыгрузитьРезультатЗапроса(Выборка[ТабличнаяЧасть], ВМассив); + КонецЦикла; + + Результат.Добавить(Запись); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + #КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl index 9ee6615b..6fecc307 100644 --- a/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТЗапросыКлиентСервер/Module.bsl @@ -22,7 +22,11 @@ Описание = ЮТЗапросы.ОписаниеЗапроса(); Описание.ИмяТаблицы = ИмяТаблицы; - Описание.ВыбираемыеПоля.Вставить("Проверка", "1"); + Если ВыбираемыеПоля = Неопределено Тогда + Описание.ВыбираемыеПоля.Добавить("1 КАК Проверка"); + Иначе + ЗаполнитьВыбираемыеПоля(Описание, ВыбираемыеПоля); + КонецЕсли; СформироватьУсловия(ПредикатыУсловия, Описание.Условия, Описание.ЗначенияПараметров); @@ -93,4 +97,32 @@ КонецФункции +Процедура ЗаполнитьВыбираемыеПоля(ОписаниеЗапроса, Знач ВыбираемыеПоля) + + ТипПараметра = ТипЗнч(ВыбираемыеПоля); + + Если ТипПараметра = Тип("Строка") Тогда + ВыбираемыеПоля = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(ВыбираемыеПоля, ",", Истина); + ТипПараметра = Тип("Массив"); + КонецЕсли; + + Если ТипПараметра = Тип("Массив") Тогда + + ОписаниеЗапроса.ВыбираемыеПоля = ВыбираемыеПоля; + + ИначеЕсли ТипПараметра = Тип("Структура") Тогда + + Для Каждого Поле Из ВыбираемыеПоля Цикл + Выражение = СтрШаблон("%1 КАК %2", Поле.Значение, Поле.Ключ); + ОписаниеЗапроса.ВыбираемыеПоля.Добавить(Выражение); + КонецЦикла; + + Иначе + + ВызватьИсключение ЮТОбщий.НеподдерживаемыйПараметрМетода("ЮТЗапросыКлиентСервер.ЗаполнитьВыбираемыеПоля", ВыбираемыеПоля); + + КонецЕсли; + +КонецПроцедуры + #КонецОбласти diff --git a/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl index c07f56a4..ff3a3df6 100644 --- a/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТУтвержденияИБ/Module.bsl @@ -108,6 +108,120 @@ КонецФункции +// Проверяет наличие в таблице записей с указанным наименованием +// +// Параметры: +// ОжидаемоеНаименование - Строка +// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления. +// + `Истина` - Подбираются только непомеченные на удаление записи. +// + `Ложь` - пометка на удаление игнорируется +// +// ОписаниеУтверждения - Строка - Описание конкретного утверждения +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция СодержитЗаписиСНаименованием(ОжидаемоеНаименование, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт + + Условия = ПредикатПоискаПоРеквизиту("Наименование", ОжидаемоеНаименование, ПроверятьПометкуУдаления); + Возврат СодержитЗаписи(Условия, ОписаниеУтверждения); + +КонецФункции + +// Проверяет наличие в таблице записей с указанным кодом +// +// Параметры: +// ОжидаемыйКод - Строка +// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления. +// + `Истина` - Подбираются только непомеченные на удаление записи. +// + `Ложь` - пометка на удаление игнорируется +// +// ОписаниеУтверждения - Строка - Описание конкретного утверждения +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция СодержитЗаписиСКодом(ОжидаемыйКод, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт + + Условия = ПредикатПоискаПоРеквизиту("Код", ОжидаемыйКод, ПроверятьПометкуУдаления); + Возврат СодержитЗаписи(Условия, ОписаниеУтверждения); + +КонецФункции + +// Проверяет наличие в таблице записей с указанным номером +// +// Параметры: +// ОжидаемыйНомер - Строка +// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления. +// + `Истина` - Подбираются только непомеченные на удаление записи. +// + `Ложь` - пометка на удаление игнорируется +// +// ОписаниеУтверждения - Строка - Описание конкретного утверждения +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция СодержитЗаписиСНомером(ОжидаемыйНомер, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт + + Условия = ПредикатПоискаПоРеквизиту("Номер", ОжидаемыйНомер, ПроверятьПометкуУдаления); + Возврат СодержитЗаписи(Условия, ОписаниеУтверждения); + +КонецФункции + +// Проверяет отсутствие в таблице записей с указанным наименованием +// +// Параметры: +// ОжидаемоеНаименование - Строка +// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления. +// + `Истина` - Подбираются только непомеченные на удаление записи. +// + `Ложь` - пометка на удаление игнорируется +// +// ОписаниеУтверждения - Строка - Описание конкретного утверждения +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция НеСодержитЗаписиСНаименованием(ОжидаемоеНаименование, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт + + Условия = ПредикатПоискаПоРеквизиту("Наименование", ОжидаемоеНаименование, ПроверятьПометкуУдаления); + Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения); + +КонецФункции + +// Проверяет отсутствие в таблице записей с указанным кодом +// +// Параметры: +// ОжидаемыйКод - Строка +// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления. +// + `Истина` - Подбираются только непомеченные на удаление записи. +// + `Ложь` - пометка на удаление игнорируется +// +// ОписаниеУтверждения - Строка - Описание конкретного утверждения +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция НеСодержитЗаписиСКодом(ОжидаемыйКод, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт + + Условия = ПредикатПоискаПоРеквизиту("Код", ОжидаемыйКод, ПроверятьПометкуУдаления); + Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения); + +КонецФункции + +// Проверяет отсутствие в таблице записей с указанным номером +// +// Параметры: +// ОжидаемыйНомер - Строка +// ПроверятьПометкуУдаления - Булево - Проверять пометку удаления. +// + `Истина` - Подбираются только непомеченные на удаление записи. +// + `Ложь` - пометка на удаление игнорируется +// +// ОписаниеУтверждения - Строка - Описание конкретного утверждения +// +// Возвращаемое значение: +// ОбщийМодуль - Этот модуль для замыкания +Функция НеСодержитЗаписиСНомером(ОжидаемыйНомер, ПроверятьПометкуУдаления = Истина, ОписаниеУтверждения = Неопределено) Экспорт + + Условия = ПредикатПоискаПоРеквизиту("Номер", ОжидаемыйНомер, ПроверятьПометкуУдаления); + Возврат НеСодержитЗаписи(Условия, ОписаниеУтверждения); + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -170,4 +284,17 @@ КонецПроцедуры +Функция ПредикатПоискаПоРеквизиту(ИмяРеквизита, ЗначениеРеквизита, ПроверятьПометкуУдаления) + + Условия = ЮТПредикаты.Инициализировать() + .Реквизит(ИмяРеквизита).Равно(ЗначениеРеквизита); + + Если ПроверятьПометкуУдаления Тогда + Условия.Реквизит("ПометкаУдаления").Равно(Ложь); + КонецЕсли; + + Возврат Условия; + +КонецФункции + #КонецОбласти diff --git a/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl b/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl index a5384258..afcf8ac8 100644 --- a/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТЗапросы/Module.bsl @@ -26,6 +26,8 @@ .ДобавитьТест("ТаблицаСодержитЗаписи") .ДобавитьТест("РезультатЗапроса") .ДобавитьТест("РезультатПустой") + .ДобавитьТест("Запись") + .ДобавитьТест("Записи") ; КонецПроцедуры @@ -123,8 +125,8 @@ ОписаниеЗапроса.Условия.Добавить("Ссылка = &Ссылка"); ОписаниеЗапроса.Условия.Добавить("НЕ ПометкаУдаления"); ОписаниеЗапроса.ЗначенияПараметров.Вставить("Ссылка", Ссылка); - ОписаниеЗапроса.ВыбираемыеПоля.Вставить("Наименование"); - ОписаниеЗапроса.ВыбираемыеПоля.Вставить("Число", "1+1"); + ОписаниеЗапроса.ВыбираемыеПоля.Добавить("Наименование"); + ОписаниеЗапроса.ВыбираемыеПоля.Добавить("1+1 КАК Число"); ЮТест.ОжидаетЧто(ЮТЗапросы.РезультатЗапроса(ОписаниеЗапроса)) .ИмеетДлину(1) @@ -153,4 +155,110 @@ КонецПроцедуры +Процедура Запись() Экспорт + + // Справочник + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Фикция("Наименование") + .Фикция("Поставщик"); + Ссылка = Конструктор.Записать(); + ДанныеОбъекта = Конструктор.ДанныеОбъекта(); + + ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат() + .Реквизит("Ссылка").Равно(Ссылка)); + + ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат() + .Реквизит("Поставщик").Равно(ДанныеОбъекта.Поставщик)); + + ЮТест.ОжидаетЧто(ДанныеЗаписи) + .ИмеетТип("Структура") + .Заполнено() + .Свойство("Ссылка").Равно(Ссылка) + .Свойство("Наименование").Равно(ДанныеОбъекта.Наименование) + .Свойство("Поставщик").Равно(ДанныеОбъекта.Поставщик); + + // Справочник поиск по реквизиту + ДанныеЗаписи = ЮТЗапросы.Запись("Справочник.Товары", ЮТест.Предикат() + .Реквизит("Поставщик").Равно(ДанныеОбъекта.Поставщик)); + + ЮТест.ОжидаетЧто(ДанныеЗаписи) + .Свойство("Ссылка").Равно(Ссылка); + + // Документ, тест на табличную часть + Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.ПриходТовара") + .Фикция("Склад") + .Фикция("Организация") + .Фикция("Поставщик") + .ТабличнаяЧасть("Товары") + .ДобавитьСтроку() + .Фикция("Товар") + .Фикция("Цена"); + + Ссылка = Конструктор.Записать(); + ДанныеОбъекта = Конструктор.ДанныеОбъекта(); + + ДанныеЗаписи = ЮТЗапросы.Запись("Документ.ПриходТовара", ЮТест.Предикат() + .Реквизит("Ссылка").Равно(Ссылка)); + + ЮТест.ОжидаетЧто(ДанныеЗаписи) + .Свойство("Ссылка").Равно(Ссылка) + .Свойство("Поставщик").Равно(ДанныеОбъекта.Поставщик) + .Свойство("Товары") + .ИмеетТип("Массив") + .ИмеетДлину(1) + .Свойство("Товары[0].НомерСтроки").Равно(1) + .Свойство("Товары[0].Товар").Равно(ДанныеОбъекта.Товары[0].Товар); + + ДанныеЗаписи = ЮТЗапросы.Запись("Документ.ПриходТовара.Товары", ЮТест.Предикат() + .Реквизит("Товар").Равно(ДанныеОбъекта.Товары[0].Товар)); + ЮТест.ОжидаетЧто(ДанныеЗаписи) + .Свойство("Ссылка").Равно(Ссылка) + .Свойство("Товар").Равно(ДанныеОбъекта.Товары[0].Товар); + + // Регистры + Конструктор = ЮТест.Данные().КонструкторОбъекта("РегистрыСведений.КурсыВалют") + .Фикция("Период") + .Фикция("Валюта") + .Фикция("Курс"); + Конструктор.Записать(); + ДанныеОбъекта = Конструктор.ДанныеОбъекта(); + + ДанныеЗаписи = ЮТЗапросы.Запись("РегистрСведений.КурсыВалют", ЮТест.Предикат() + .Реквизит("Валюта").Равно(ДанныеОбъекта.Валюта)); + + ЮТест.ОжидаетЧто(ДанныеЗаписи) + .Свойство("Валюта").Равно(ДанныеОбъекта.Валюта) + .Свойство("Курс").Равно(ДанныеОбъекта.Курс); + +КонецПроцедуры + +Процедура Записи() Экспорт + + ТоварыПоставщика = Новый Соответствие(); + Поставщик = ЮТест.Данные().СоздатьЭлемент("Справочники.Контрагенты"); + + Для Инд = 1 По 5 Цикл + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Фикция("Наименование") + .Установить("Поставщик", Поставщик); + ТоварыПоставщика.Вставить(Конструктор.Записать(), Конструктор.ДанныеОбъекта()); + КонецЦикла; + + Записи = ЮТЗапросы.Записи("Справочник.Товары", ЮТест.Предикат() + .Реквизит("Поставщик").Равно(Поставщик)); + + ЮТест.ОжидаетЧто(Записи) + .ИмеетТип("Массив") + .ИмеетДлину(5); + + Для Каждого Запись Из Записи Цикл + ЮТест.ОжидаетЧто(Запись) + .ИмеетТип("Структура") + .Свойство("Ссылка") + .Свойство("Поставщик").Равно(Поставщик) + .Свойство("Код"); + КонецЦикла; + +КонецПроцедуры + #КонецОбласти diff --git a/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl index 7f304cb0..08cd35da 100644 --- a/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl +++ b/tests/src/CommonModules/ОМ_ЮТУтвержденияИБ/Module.bsl @@ -24,6 +24,12 @@ .ДобавитьТест("СодержитЗаписи") .ДобавитьТест("НеСодержитЗаписи") .ДобавитьТест("СообщенияОбОшибках") + .ДобавитьТест("СодержитЗаписиСНаименованием") + .ДобавитьТест("СодержитЗаписиСКодом") + .ДобавитьТест("СодержитЗаписиСНомером") + .ДобавитьТест("НеСодержитЗаписиСНаименованием") + .ДобавитьТест("НеСодержитЗаписиСКодом") + .ДобавитьТест("НеСодержитЗаписиСНомером") ; КонецПроцедуры @@ -155,20 +161,156 @@ Ошибка = ИнформацияОбОшибке(); КонецПопытки; - ПроверитьОшибкуУтверждения(Индекс, Ошибка, Вариант.ОжидаемоеСообщение); + ПроверитьОшибкуУтверждения("Вариант " + Индекс, Ошибка, Вариант.ОжидаемоеСообщение); Индекс = Индекс + 1; КонецЦикла; КонецПроцедуры +Процедура СодержитЗаписиСНаименованием() Экспорт + + ИмяТаблицы = "Справочник.Товары"; + + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Фикция("Наименование"); + Данные = Конструктор.ДанныеОбъекта(); + + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование); + + Объект = Конструктор.Записать(); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование); + + ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование, Ложь); + + Попытка + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНаименованием(Данные.Наименование); + Исключение + Ошибка = ИнформацияОбОшибке(); + КонецПопытки; + + ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "Ожидали, что проверяемая таблица `Справочник.Товары` содержит записи с `Наименование` равно"); + +КонецПроцедуры + +Процедура СодержитЗаписиСКодом() Экспорт + + ИмяТаблицы = "Справочник.Товары"; + Код = "t00000001"; + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Установить("Код", Код); + + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код); + + Объект = Конструктор.Записать(); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код); + + ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код, Ложь); + + Попытка + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСКодом(Код); + Исключение + Ошибка = ИнформацияОбОшибке(); + КонецПопытки; + + ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` содержит записи с `Код` равно"); + +КонецПроцедуры + +Процедура СодержитЗаписиСНомером() Экспорт + + ИмяТаблицы = "Документ.Оплата"; + Номер = "t00000001"; + Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.Оплата") + .Установить("Номер", Номер); + + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер); + + Объект = Конструктор.Записать(); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер); + + ПомощникТестированияВызовСервера.УстановитьРеквизит(Объект, "ПометкаУдаления", Истина); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер, Ложь); + + Попытка + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).СодержитЗаписиСНомером(Номер); + Исключение + Ошибка = ИнформацияОбОшибке(); + КонецПопытки; + + ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Документ.Оплата` содержит записи с `Номер` равно"); + +КонецПроцедуры + +Процедура НеСодержитЗаписиСНаименованием() Экспорт + + ИмяТаблицы = "Справочник.Товары"; + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Фикция("Наименование") + .Установить("ПометкаУдаления", Истина); + Данные = Конструктор.ДанныеОбъекта(); + + Конструктор.Записать(); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование); + Попытка + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНаименованием(Данные.Наименование, Ложь); + Исключение + Ошибка = ИнформацияОбОшибке(); + КонецПопытки; + + ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` не содержит записи с `Наименование` равно"); + +КонецПроцедуры + +Процедура НеСодержитЗаписиСКодом() Экспорт + + ИмяТаблицы = "Справочник.Товары"; + Код = "t00000001"; + Конструктор = ЮТест.Данные().КонструкторОбъекта("Справочники.Товары") + .Установить("Код", Код) + .Установить("ПометкаУдаления", Истина); + + Конструктор.Записать(); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код); + Попытка + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСКодом(Код, Ложь); + Исключение + Ошибка = ИнформацияОбОшибке(); + КонецПопытки; + + ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Справочник.Товары` не содержит записи с `Код` равно"); + +КонецПроцедуры + +Процедура НеСодержитЗаписиСНомером() Экспорт + + ИмяТаблицы = "Документ.Оплата"; + Номер = "t00000001"; + Конструктор = ЮТест.Данные().КонструкторОбъекта("Документы.Оплата") + .Установить("Номер", Номер) + .Установить("ПометкаУдаления", Истина); + + Конструктор.Записать(); + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер); + Попытка + ЮТест.ОжидаетЧтоТаблицаБазы(ИмяТаблицы).НеСодержитЗаписиСНомером(Номер, Ложь); + Исключение + Ошибка = ИнформацияОбОшибке(); + КонецПопытки; + + ПроверитьОшибкуУтверждения(Неопределено, Ошибка, "`Документ.Оплата` не содержит записи с `Номер` равно"); + +КонецПроцедуры + #КонецОбласти #Область СлужебныеПроцедурыИФункции -Процедура ПроверитьОшибкуУтверждения(Индекс, ИнформацияОбОшибке, ОжидаемоеОписание) Экспорт +Процедура ПроверитьОшибкуУтверждения(Префикс, ИнформацияОбОшибке, ОжидаемоеОписание) Экспорт - ЮТест.ОжидаетЧто(ИнформацияОбОшибке, "Вариант " + Индекс) + ЮТест.ОжидаетЧто(ИнформацияОбОшибке, Префикс) .ЭтоНеНеопределено() .Свойство("Описание") .НачинаетсяС("[Failed]") diff --git a/tests/src/CommonModules/ПомощникТестированияВызовСервера/Module.bsl b/tests/src/CommonModules/ПомощникТестированияВызовСервера/Module.bsl index ebd471b5..33e7ec30 100644 --- a/tests/src/CommonModules/ПомощникТестированияВызовСервера/Module.bsl +++ b/tests/src/CommonModules/ПомощникТестированияВызовСервера/Module.bsl @@ -63,4 +63,12 @@ КонецФункции +Процедура УстановитьРеквизит(Ссылка, ИмяРеквизита, ЗначениеРеквизита) Экспорт + + Объект = Ссылка.ПолучитьОбъект(); + Объект[ИмяРеквизита] = ЗначениеРеквизита; + Объект.Записать(); + +КонецПроцедуры + #КонецОбласти