Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавление мока для типа СообщениеСервисаИнтеграции #446

Merged
merged 5 commits into from
Nov 26, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions documentation/docs/features/mocking/mocking.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,41 @@ sequenceDiagram
* `ЮТест.Данные().ADORecordSet` - принимает информацию о колонках
* `Добавить()` - добавляет новую строку значений

### `СообщениеСервисаИнтеграции`

При тестировании интеграций с помощью 1С:Шина есть потребность тестировать сбор/разбор сообщений сервисов интеграции.

У `СообщениеСервисаИнтеграции` отсутствует конструктор, поэтому был добавлен [`ЮТест.Данные().СообщениеСервисаИнтеграции`](/api/ЮТТестовыеДанные#IntegrationServiceMessage) реализующий интерфейс `СообщениеСервисаИнтеграции`

Возможности:

* Реализует методы `СообщениеСервисаИнтеграции`
* Свойства
* `ДатаОтправки` \ `SendDate`
* `ДатаУстаревания` \ `ExpirationDate`
* `Идентификатор` \ `ID`
* `ИдентификаторСообщенияЗапроса` \ `CorrelationId`
* `КодОтправителя` \ `SenderCode`
* `КодПолучателя` \ `RecipientCode`
* `Параметры` \ `Parameters`
* `РазмерТела` \ `BodySize`
* Методы
* `ПолучитьТелоКакПоток()` \ `GetBodyAsStream()`
* Имеет методы настройки, реализованные в виде [текучих выражений](/docs/getting-started/fluent-api.md)
* Установка тела
* `УстановитьТелоКакДвоичныеДанные()`
* `УстановитьТелоКакСтроку()`
* `УстановитьТелоКакСтрокуJSON()`
* Методы установки свойств
* `ДобавитьПараметр()`
* `ДатаОтправки()`
* `ДатаУстаревания()`
* `Идентификатор()`
* `ИдентификаторСообщенияЗапроса()`
* `КодОтправителя()`
* `КодПолучателя()`
* `РазмерТела()`

### Создание своих моков

При возникновении подобных ситуаций, когда для тестов вам нужны объекты с какой-то логикой/методами, по аналогии с примерами выше вы без проблем сможете создать нужные вам моки.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1095,6 +1095,16 @@

КонецФункции

#Если Сервер Тогда
// Возвращает мок для `СообщениеСервисаИнтеграции`.
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция СообщениеСервисаИнтеграции() Экспорт
Возврат Обработки.ЮТСообщениеСервисаИнтеграции.Создать();
КонецФункции
#КонецЕсли

#КонецОбласти

#Область СлужебныеПроцедурыИФункции
Expand Down
1 change: 1 addition & 0 deletions exts/yaxunit/src/Configuration/Configuration.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -162,5 +162,6 @@
<dataProcessors>DataProcessor.ЮТКонструкторДвижений</dataProcessors>
<dataProcessors>DataProcessor.ЮТКонструкторОбъектаXDTO</dataProcessors>
<dataProcessors>DataProcessor.ЮТКонструкторТестовыхДанных</dataProcessors>
<dataProcessors>DataProcessor.ЮТСообщениеСервисаИнтеграции</dataProcessors>
<dataProcessors>DataProcessor.ЮТЮнитТесты</dataProcessors>
</mdclass:Configuration>
Original file line number Diff line number Diff line change
@@ -0,0 +1,259 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 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
Перем ДатаОтправки Экспорт;
//@skip-check object-module-export-variable
Перем ДатаУстаревания Экспорт;
//@skip-check object-module-export-variable
Перем Идентификатор Экспорт;
//@skip-check object-module-export-variable
Перем ИдентификаторСообщенияЗапроса Экспорт;
//@skip-check object-module-export-variable
Перем КодОтправителя Экспорт;
//@skip-check object-module-export-variable
Перем КодПолучателя Экспорт;
//@skip-check object-module-export-variable
Перем Параметры Экспорт;
//@skip-check object-module-export-variable
Перем РазмерТела Экспорт;

Перем Тело;

#КонецОбласти

#Область ПрограммныйИнтерфейс

// Возвращает тело как поток.
//
// Возвращаемое значение:
// Поток - Тело
Функция ПолучитьТелоКакПоток() Экспорт

Возврат ПолучитьТелоКакДвоичныеДанные().ОткрытьПотокДляЧтения();

КонецФункции

// Устанавливает тело как двоичные данные.
// При получении тела в другом формате происходит конвертация
//
// Параметры:
// Данные - ДвоичныеДанные
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция УстановитьТелоКакДвоичныеДанные(Данные) Экспорт

Тело = Данные;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает тело как строку.
// При получении тела в другом формате происходит конвертация
//
// Параметры:
// Строка - Строка
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция УстановитьТелоКакСтроку(Строка) Экспорт

Тело = Строка;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает тело как строку JSON.
// Сериализует переданный объект в строку JSON и сохраняет в тело
// При получении тела в другом формате происходит конвертация
//
// Параметры:
// Данные - Произвольный
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция УстановитьТелоКакСтрокуJSON(Данные) Экспорт

ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);

Тело = ЗаписьJSON.Закрыть();

Возврат ЭтотОбъект;

КонецФункции

// Добавляет параметр.
//
// Параметры:
// ИмяПараметра - Строка
// Значение - Строка
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция ДобавитьПараметр(ИмяПараметра, Значение) Экспорт

Параметры.Вставить(ИмяПараметра, Значение);
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает дату отправки.
//
// Параметры:
// Значение - Дата
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция ДатаОтправки(Значение) Экспорт

ДатаОтправки = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает дату устаревания.
//
// Параметры:
// Значение - Дата
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция ДатаУстаревания(Значение) Экспорт

ДатаУстаревания = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает идентификатор сообщения.
//
// Параметры:
// Значение - УникальныйИдентификатор
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция Идентификатор(Значение) Экспорт

Идентификатор = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает идентификатор сообщения запроса.
//
// Параметры:
// Значение - УникальныйИдентификатор
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция ИдентификаторСообщенияЗапроса(Значение) Экспорт

ИдентификаторСообщенияЗапроса = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает код отправителя.
//
// Параметры:
// Значение - Строка
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция КодОтправителя(Значение) Экспорт

КодОтправителя = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает код получателя.
//
// Параметры:
// Значение - Строка
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция КодПолучателя(Значение) Экспорт

КодПолучателя = Значение;
Возврат ЭтотОбъект;

КонецФункции

// Устанавливает размер тела
//
// Параметры:
// Значение - Число
//
// Возвращаемое значение:
// ОбработкаОбъект.ЮТСообщениеСервисаИнтеграции - Мок
Функция РазмерТела(Значение) Экспорт

РазмерТела = Значение;
Возврат ЭтотОбъект;

КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ПолучитьТелоКакДвоичныеДанные()

ТипТела = ТипЗнч(Тело);

Если Тело = Неопределено Тогда
Возврат ПолучитьДвоичныеДанныеИзBase64Строки("");
ИначеЕсли ТипТела = Тип("ДвоичныеДанные") Тогда
Возврат Тело;
ИначеЕсли ТипТела = Тип("Строка") Тогда
Возврат ПолучитьДвоичныеДанныеИзСтроки(Тело);
КонецЕсли;

КонецФункции

Процедура Инициализировать()

ДатаОтправки = Дата(1, 1, 1);
ДатаУстаревания = Дата(1, 1, 1);
Идентификатор = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
ИдентификаторСообщенияЗапроса = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000");
КодОтправителя = "";
КодПолучателя = "";
РазмерТела = 0;
Параметры = Новый Соответствие();

КонецПроцедуры

#КонецОбласти

#Область Инициализация

Инициализировать();

#КонецОбласти

#КонецЕсли
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:DataProcessor xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1b3f1b1b-792a-43f7-b237-34522342bdbd">
<producedTypes>
<objectType typeId="6da0f4bb-5c39-49e7-9375-1d9ea3cb0e45" valueTypeId="14ce3a79-9132-405b-b784-0ca65b26bcce"/>
<managerType typeId="a85769e7-f289-4126-ad03-e3933be34c9a" valueTypeId="5bcc047f-bbe2-4753-bc76-ff6c993e0af4"/>
</producedTypes>
<name>ЮТСообщениеСервисаИнтеграции</name>
<synonym>
<key>ru</key>
<value>Мок для СообщениеCервисаBнтеграции</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
</mdclass:DataProcessor>
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@
<content>DataProcessor.ЮТHTTPServiceRequest</content>
<content>DataProcessor.ЮТHTTPСервисЗапрос</content>
<content>DataProcessor.ЮТRecordSet</content>
<content>DataProcessor.ЮТСообщениеСервисаИнтеграции</content>
<parentSubsystem>Subsystem.ЮТДвижок</parentSubsystem>
</mdclass:Subsystem>
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,5 @@
<content>DataProcessor.ЮТКонструкторОбъектаXDTO</content>
<content>DataProcessor.ЮТКонструкторТестовыхДанных</content>
<content>DataProcessor.ЮТЮнитТесты</content>
<content>DataProcessor.ЮТСообщениеСервисаИнтеграции</content>
</mdclass:Subsystem>
Loading
Loading