mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2024-11-30 08:36:50 +02:00
Merge pull request #264 from bia-technologies/feature/222
Мокирование ADO.RecordSet
This commit is contained in:
commit
2a72ec82d6
@ -616,7 +616,26 @@
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
#КонецЕсли
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
|
||||
// Возвращает мок для ADO.RecordSet.
|
||||
//
|
||||
// Параметры:
|
||||
// Колонки - Строка - Имена колонок набора данных, разделенные запятой
|
||||
// Описание - Строка - Описание, полезно для отладки и проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТRecordSet - Мок ADO.RecordSet
|
||||
Функция ADORecordSet(Колонки, Описание = Неопределено) Экспорт
|
||||
|
||||
Обработка = Обработки.ЮТRecordSet.Создать();
|
||||
Обработка.Описание = Описание;
|
||||
Обработка.Инициализировать(Колонки);
|
||||
|
||||
Возврат Обработка;
|
||||
|
||||
КонецФункции
|
||||
#КонецЕсли
|
||||
|
||||
// Устанавливает значение реквизита ссылки
|
||||
|
@ -120,6 +120,7 @@
|
||||
<commonModules>CommonModule.ЮТЧитательСервер</commonModules>
|
||||
<dataProcessors>DataProcessor.ЮТHTTPServiceRequest</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТHTTPСервисЗапрос</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТRecordSet</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТКонструкторТестовыхДанных</dataProcessors>
|
||||
<dataProcessors>DataProcessor.ЮТЮнитТесты</dataProcessors>
|
||||
</mdclass:Configuration>
|
||||
|
187
exts/yaxunit/src/DataProcessors/ЮТRecordSet/ObjectModule.bsl
Normal file
187
exts/yaxunit/src/DataProcessors/ЮТRecordSet/ObjectModule.bsl
Normal file
@ -0,0 +1,187 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Тогда
|
||||
|
||||
#Область ОписаниеПеременных
|
||||
|
||||
//@skip-check object-module-export-variable
|
||||
Перем Fields Экспорт;
|
||||
|
||||
Перем Данные;
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Добавляет запись в набор данных. Это данные, которые могут быть прочитаны через интерфейс RecordSet
|
||||
//
|
||||
// Параметры:
|
||||
// Значение1 - Произвольный
|
||||
// Значение2 - Произвольный
|
||||
// Значение3 - Произвольный
|
||||
// Значение4 - Произвольный
|
||||
// Значение5 - Произвольный
|
||||
// Значение6 - Произвольный
|
||||
// Значение7 - Произвольный
|
||||
// Значение8 - Произвольный
|
||||
// Значение9 - Произвольный
|
||||
// Значение10 - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТRecordSet - Эмулятор
|
||||
//@skip-check method-too-many-params
|
||||
Функция Добавить(Значение1,
|
||||
Значение2 = Неопределено,
|
||||
Значение3 = Неопределено,
|
||||
Значение4 = Неопределено,
|
||||
Значение5 = Неопределено,
|
||||
Значение6 = Неопределено,
|
||||
Значение7 = Неопределено,
|
||||
Значение8 = Неопределено,
|
||||
Значение9 = Неопределено,
|
||||
Значение10 = Неопределено) Экспорт
|
||||
|
||||
Строка = Данные.Добавить();
|
||||
|
||||
УстановитьБезопасныйРежим(Истина);
|
||||
|
||||
Для Инд = 1 По Данные.Колонки.Количество() Цикл
|
||||
Строка[Инд - 1] = Вычислить("Значение" + Инд);
|
||||
КонецЦикла;
|
||||
|
||||
УстановитьФлаги();
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Переход к первой строке набора
|
||||
Процедура MoveFirst() Экспорт
|
||||
|
||||
AbsolutePosition = 0;
|
||||
УстановитьФлаги();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Переход к следующей строке набора
|
||||
Процедура MoveNext() Экспорт
|
||||
|
||||
AbsolutePosition = AbsolutePosition + 1;
|
||||
УстановитьФлаги();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Закрытие набора и очистка данных
|
||||
Процедура Close() Экспорт
|
||||
|
||||
Данные = Неопределено;
|
||||
УстановитьФлаги();
|
||||
ОбновитьFields();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Возвращает информацию о колонке набора
|
||||
//
|
||||
// Параметры:
|
||||
// ИндексПоля - Число - Индекс колонки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Fields:
|
||||
// * Name - Строка - Имя колонки
|
||||
// * Value - Произвольный - Значения колонки для текущей строки набора
|
||||
Функция Fields(ИндексПоля) Экспорт
|
||||
|
||||
Если Данные <> Неопределено И Данные.Количество() <> 0 Тогда
|
||||
Значение = Данные[AbsolutePosition][ИндексПоля];
|
||||
Иначе
|
||||
Значение = Неопределено
|
||||
КонецЕсли;
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Новый Структура("Name, Value", Данные.Колонки[ИндексПоля].Имя, Значение);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает признак, что все записи набора прочитаны
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево
|
||||
Функция EOF() Экспорт
|
||||
|
||||
Возврат EOF;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает признак, который показывает, находится ли текущее положение записи курсора перед первой записью
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево
|
||||
Функция BOF() Экспорт
|
||||
|
||||
Возврат BOF;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
// Инициализирует эмулятор RecordSet. Устанавливает информацию о колонках и служебные данные.
|
||||
// Параметры:
|
||||
// Колонки - Строка - Имена колонок, разделенные запятой
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбработкаОбъект.ЮТRecordSet - Эмулятор
|
||||
Функция Инициализировать(Знач Колонки) Экспорт
|
||||
|
||||
Данные = Новый ТаблицаЗначений();
|
||||
|
||||
Колонки = ЮТОбщий.РазложитьСтрокуВМассивПодстрок(Колонки, ",");
|
||||
|
||||
Для Каждого Колонка Из Колонки Цикл
|
||||
Данные.Колонки.Добавить(Колонка);
|
||||
КонецЦикла;
|
||||
|
||||
ОбновитьFields();
|
||||
MoveFirst();
|
||||
|
||||
Возврат ЭтотОбъект;
|
||||
|
||||
КонецФункции
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура УстановитьФлаги()
|
||||
|
||||
EOF = Данные = Неопределено ИЛИ Данные.Количество() <= AbsolutePosition;
|
||||
BOF = Данные = Неопределено ИЛИ Данные.Количество() = 0 ИЛИ AbsolutePosition < 0;
|
||||
RecordCount = ?(Данные = Неопределено, 0, Данные.Количество());
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбновитьFields()
|
||||
|
||||
Количество = ?(Данные = Неопределено, 0, Данные.Колонки.Количество());
|
||||
Fields = Новый Структура("Count", Количество);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецЕсли
|
81
exts/yaxunit/src/DataProcessors/ЮТRecordSet/ЮТRecordSet.mdo
Normal file
81
exts/yaxunit/src/DataProcessors/ЮТRecordSet/ЮТRecordSet.mdo
Normal file
@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:DataProcessor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="39fc0d14-3ae5-429b-90ec-e02a462ceed9">
|
||||
<producedTypes>
|
||||
<objectType typeId="40542278-a176-447b-b729-967555b6fbc5" valueTypeId="5802b53d-bb23-4f8e-b96b-9ba39325447a"/>
|
||||
<managerType typeId="6d7fc763-87bb-4249-8308-775667798af9" valueTypeId="f1dcbc92-0692-415d-a538-8c7b774610d2"/>
|
||||
</producedTypes>
|
||||
<name>ЮТRecordSet</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Record set</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<attributes uuid="ae1fc2b5-5f77-4da1-b07b-c5e65c836e53">
|
||||
<name>EOF</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>EOF</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Boolean</types>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
</attributes>
|
||||
<attributes uuid="7353c07e-227b-4668-9784-76494d19b2fe">
|
||||
<name>BOF</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>BOF</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Boolean</types>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
</attributes>
|
||||
<attributes uuid="6cf16630-295c-4a45-a6d4-056b2fc4ff5d">
|
||||
<name>Описание</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Описание</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
</attributes>
|
||||
<attributes uuid="c69ffb7b-c905-436d-928f-2d12863946ac">
|
||||
<name>AbsolutePosition</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Absolute position</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Number</types>
|
||||
<numberQualifiers>
|
||||
<precision>10</precision>
|
||||
</numberQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
</attributes>
|
||||
<attributes uuid="34d387d6-57b4-4c53-b066-bf46135c58fb">
|
||||
<name>RecordCount</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Record count</value>
|
||||
</synonym>
|
||||
<type>
|
||||
<types>Number</types>
|
||||
<numberQualifiers>
|
||||
<precision>10</precision>
|
||||
<nonNegative>true</nonNegative>
|
||||
</numberQualifiers>
|
||||
</type>
|
||||
<minValue xsi:type="core:UndefinedValue"/>
|
||||
<maxValue xsi:type="core:UndefinedValue"/>
|
||||
</attributes>
|
||||
</mdclass:DataProcessor>
|
@ -15,5 +15,6 @@
|
||||
<content>CommonModule.МокитоСлужебный</content>
|
||||
<content>DataProcessor.ЮТHTTPServiceRequest</content>
|
||||
<content>DataProcessor.ЮТHTTPСервисЗапрос</content>
|
||||
<content>DataProcessor.ЮТRecordSet</content>
|
||||
<parentSubsystem>Subsystem.ЮТДвижок</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
||||
|
151
tests/src/CommonModules/Обр_ЮТRecordSet_МО/Module.bsl
Normal file
151
tests/src/CommonModules/Обр_ЮТRecordSet_МО/Module.bsl
Normal file
@ -0,0 +1,151 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТест("Инициализировать")
|
||||
.ДобавитьТест("Добавить")
|
||||
.ДобавитьТест("MoveFirst")
|
||||
.ДобавитьТест("MoveNext")
|
||||
.ДобавитьТест("Close")
|
||||
.ДобавитьТест("Fields")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Инициализировать() Экспорт
|
||||
|
||||
Набор = ЮТест.Данные().ADORecordSet("Колонка1, Колонка2");
|
||||
|
||||
ЮТест.ОжидаетЧто(Набор)
|
||||
.Свойство("EOF").ЭтоИстина()
|
||||
.Свойство("BOF").ЭтоИстина()
|
||||
.Свойство("AbsolutePosition").Равно(0)
|
||||
.Свойство("RecordCount").Равно(0)
|
||||
.Свойство("Fields.Count").Равно(2)
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Добавить() Экспорт
|
||||
|
||||
Набор = ЮТест.Данные().ADORecordSet("Колонка1, Колонка2");
|
||||
|
||||
ЮТест.ОжидаетЧто(Набор, "Инициализированный набор")
|
||||
.Свойство("EOF").ЭтоИстина()
|
||||
.Свойство("RecordCount").Равно(0);
|
||||
|
||||
ЮТест.ОжидаетЧто(Набор.Добавить(1, 2), "Набор с одной записью")
|
||||
.Свойство("EOF").ЭтоЛожь()
|
||||
.Свойство("RecordCount").Равно(1);
|
||||
|
||||
ЮТест.ОжидаетЧто(Набор.Добавить(2, 1), "Набор с двумя записями")
|
||||
.Свойство("EOF").ЭтоЛожь()
|
||||
.Свойство("RecordCount").Равно(2);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура MoveFirst() Экспорт
|
||||
|
||||
Набор = ЮТест.Данные().ADORecordSet("Колонка1, Колонка2");
|
||||
|
||||
Набор.Добавить(1, 2);
|
||||
Набор.Добавить(3, 4);
|
||||
|
||||
Набор.MoveNext();
|
||||
Набор.MoveNext();
|
||||
Набор.MoveNext();
|
||||
ЮТест.ОжидаетЧто(Набор, "После сдвига в конец")
|
||||
.Свойство("AbsolutePosition").Равно(3)
|
||||
.Свойство("EOF").ЭтоИстина();
|
||||
Набор.MoveFirst();
|
||||
ЮТест.ОжидаетЧто(Набор, "После сдвига в начало")
|
||||
.Свойство("AbsolutePosition").Равно(0)
|
||||
.Свойство("EOF").ЭтоЛожь();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура MoveNext() Экспорт
|
||||
|
||||
Набор = ЮТест.Данные().ADORecordSet("Колонка1, Колонка2");
|
||||
|
||||
Набор.Добавить(1, 2);
|
||||
Набор.Добавить(3, 4);
|
||||
|
||||
Для Инд = 1 По 4 Цикл
|
||||
Набор.MoveNext();
|
||||
ЮТест.ОжидаетЧто(Набор, "После сдвига " + Инд)
|
||||
.Свойство("AbsolutePosition").Равно(Инд)
|
||||
.Свойство("EOF").Равно(Инд >= 2);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Close() Экспорт
|
||||
|
||||
Набор = ЮТест.Данные().ADORecordSet("Колонка1, Колонка2");
|
||||
|
||||
Набор.Добавить(1, 2);
|
||||
|
||||
Набор.Close();
|
||||
ЮТест.ОжидаетЧто(Набор)
|
||||
.Свойство("EOF").ЭтоИстина()
|
||||
.Свойство("BOF").ЭтоИстина()
|
||||
.Свойство("AbsolutePosition").Равно(0)
|
||||
.Свойство("RecordCount").Равно(0)
|
||||
.Свойство("Fields.Count").Равно(0)
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Fields() Экспорт
|
||||
|
||||
Набор = ЮТест.Данные().ADORecordSet("Колонка1, Колонка2");
|
||||
|
||||
ЮТест.ОжидаетЧто(Набор)
|
||||
.Свойство("Fields.Count").Равно(2);
|
||||
|
||||
ЮТест.ОжидаетЧто(Набор.Fields(0))
|
||||
.Свойство("Name").Равно("Колонка1")
|
||||
.Свойство("Value").Равно(Неопределено);
|
||||
ЮТест.ОжидаетЧто(Набор.Fields(1))
|
||||
.Свойство("Name").Равно("Колонка2")
|
||||
.Свойство("Value").Равно(Неопределено);
|
||||
|
||||
Набор.Добавить(1, 2);
|
||||
Набор.Добавить(3, 4);
|
||||
|
||||
ЮТест.ОжидаетЧто(Набор.Fields(0))
|
||||
.Свойство("Value").Равно(1);
|
||||
ЮТест.ОжидаетЧто(Набор.Fields(1))
|
||||
.Свойство("Value").Равно(2);
|
||||
|
||||
Набор.MoveNext();
|
||||
ЮТест.ОжидаетЧто(Набор.Fields(0))
|
||||
.Свойство("Value").Равно(3);
|
||||
ЮТест.ОжидаетЧто(Набор.Fields(1))
|
||||
.Свойство("Value").Равно(4);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="aacd5d44-f78c-4f23-bac9-d12f8a39ff26">
|
||||
<name>Обр_ЮТRecordSet_МО</name>
|
||||
<server>true</server>
|
||||
</mdclass:CommonModule>
|
@ -26,6 +26,7 @@
|
||||
<commonTemplates>CommonTemplate.ЮТ_ТестовыеДанныеMarkdown</commonTemplates>
|
||||
<commonModules>CommonModule.Интеграция</commonModules>
|
||||
<commonModules>CommonModule.Обр_ЮТHTTPСервисЗапрос</commonModules>
|
||||
<commonModules>CommonModule.Обр_ЮТRecordSet_МО</commonModules>
|
||||
<commonModules>CommonModule.ОМ_Мокито</commonModules>
|
||||
<commonModules>CommonModule.ОМ_МокитоОбучение</commonModules>
|
||||
<commonModules>CommonModule.ОМ_МокитоСлужебный</commonModules>
|
||||
|
Loading…
Reference in New Issue
Block a user