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

Переезд на api v2 Декоратора. #67

Merged
merged 5 commits into from
Jul 26, 2023
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
Prev Previous commit
Next Next commit
новое апи декоратора в хранилище сущностей
  • Loading branch information
Nivanchenko committed Jul 26, 2023
commit 322138d52acb9c6c4f39542800f370805cf0e93d
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//
// BSLLS:CodeOutOfRegion-off
Описание.Имя("entity")
.Версия("2.3.3.1")
.Версия("2.3.3.2")
.Автор("Nikita Gryzlov")
.АдресАвтора("nixel2007@gmail.com")
.Описание("entity")
Expand All @@ -20,7 +20,7 @@
.ЗависитОт("fs", "1.0.0")
.ЗависитОт("logos", "1.2.1")
.ЗависитОт("json", "1.1.1")
.ЗависитОт("decorator", "1.5.0")
.ЗависитОт("decorator", "1.5.1")
.ЗависитОт("reflector", "0.6.1")
.ЗависитОт("semaphore", "1.1.0")
.ЗависитОт("sql", "1.1.1.2")
Expand Down
42 changes: 24 additions & 18 deletions src/internal/Модули/АктивнаяЗапись.os
Original file line number Diff line number Diff line change
Expand Up @@ -46,24 +46,30 @@

Функция СоздатьИзХранилища(ОбъектМодели, ХранилищеСущностей) Экспорт
Сущность = Новый(ОбъектМодели.ТипСущности());

Декоратор = Новый КонструкторДекоратора(Сущность)
.ДобавитьИмпортПоИмени("decorator")
.ДобавитьПриватноеПоле("_ХранилищеСущностей", ХранилищеСущностей)
.ДобавитьПриватноеПоле("_ОбъектМодели", ОбъектМодели)
.ДобавитьМетод(
"Прочитать",
"_ДанныеСущности = _ХранилищеСущностей.ПолучитьОдно(_ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект));
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"
)
.ДобавитьМетод(
"Сохранить",
"_ХранилищеСущностей.Сохранить(ЭтотОбъект);"
)
.ДобавитьМетод(
"Удалить",
"_ХранилищеСущностей.Удалить(ЭтотОбъект);"
)

Декоратор = Новый ПостроительДекоратора(Сущность)
.Импорт(Новый Импорт("decorator"))

.Поле(Новый Поле("_ХранилищеСущностей")
.ЗначениеПоУмолчанию(ХранилищеСущностей))

.Поле(Новый Поле("_ОбъектМодели")
.ЗначениеПоУмолчанию(ОбъектМодели))

.Метод(Новый Метод("Прочитать")
.Публичный()
.ТелоМетода("_ДанныеСущности = _ХранилищеСущностей.ПолучитьОдно(_ОбъектМодели.ПолучитьЗначениеИдентификатора(ЭтотОбъект));
|ОбработкаДекоратора.СинхронизироватьПоля(_ДанныеСущности, ЭтотОбъект);"))


.Метод(Новый Метод("Сохранить")
.Публичный()
.ТелоМетода("_ХранилищеСущностей.Сохранить(ЭтотОбъект);"))

.Метод(Новый Метод("Удалить")
.Публичный()
.ТелоМетода("_ХранилищеСущностей.Удалить(ЭтотОбъект);"))

.Построить();

Возврат Декоратор;
Expand Down
96 changes: 91 additions & 5 deletions tests/КоннекторJSON.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#Использовать fs
#Использовать ".."

Перем Коннектор;
Expand Down Expand Up @@ -128,27 +129,112 @@
КонецПроцедуры

&Тест

Процедура СущностьМожетЗаписатьСебя() Экспорт
// Дано
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
СтрокаСоединения = "./tests/jsondatabase";
СоздатьКаталог(СтрокаСоединения);
КаталогБД = "./tests/jsondatabase";
ФС.ОбеспечитьПустойКаталог(КаталогБД);
ТипКоннектора = "КоннекторJSON";
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
МенеджерСущностей.Инициализировать();

// Когда
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
ПростойОбъект.Идентификатор = "1";
ПростойОбъект.Поле = "2";
ПростойОбъект.Сохранить();

// Тогда
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");

Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");

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

&Тест
Процедура СущностьМожетПерезаписатьСебя() Экспорт
// Дано
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
КаталогБД = "./tests/jsondatabase";
ФС.ОбеспечитьПустойКаталог(КаталогБД);
ТипКоннектора = "КоннекторJSON";
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
МенеджерСущностей.Инициализировать();

// Когда
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
ПростойОбъект.Идентификатор = "1";
ПростойОбъект.Поле = "2";
ПростойОбъект.Сохранить();
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");
НайденныйПростойОбъект.Поле = "3";
НайденныйПростойОбъект.Сохранить();

// Тогда
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");

Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("3");

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

&Тест
Процедура МенеджерСущностейМожетЗаписать() Экспорт
// Дано
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
КаталогБД = "./tests/jsondatabase";
ФС.ОбеспечитьПустойКаталог(КаталогБД);
ТипКоннектора = "КоннекторJSON";
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), СтрокаСоединения);
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
МенеджерСущностей.Инициализировать();

// Когда
ПростойОбъект = МенеджерСущностей.СоздатьЭлемент(Тип("ПростойОбъект"));
ПростойОбъект.Идентификатор = "1";
ПростойОбъект.Поле = "2";
МенеджерСущностей.Сохранить(ПростойОбъект);

// Тогда
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), "1");

Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");

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

&Тест
Процедура ХранилищеСущностейМожетЗаписать() Экспорт

// Дано
ПодключитьСценарий("tests/fixtures/ПростойОбъект.os", "ПростойОбъект");
КаталогБД = "./tests/jsondatabase";
ФС.ОбеспечитьПустойКаталог(КаталогБД);
ТипКоннектора = "КоннекторJSON";
МенеджерСущностей = Новый МенеджерСущностей(Тип(ТипКоннектора), КаталогБД);
МенеджерСущностей.ДобавитьКлассВМодель(Тип("ПростойОбъект"));
МенеджерСущностей.Инициализировать();

// Когда

ХранилищеПростойОбъект = МенеджерСущностей.ПолучитьХранилищеСущностей(Тип("ПростойОбъект"));

ПростойОбъект = ХранилищеПростойОбъект.СоздатьЭлемент();
ПростойОбъект.Идентификатор = "1";
ПростойОбъект.Поле = "2";
ПростойОбъект.Сохранить();

// Тогда
НайденныйПростойОбъект = МенеджерСущностей.ПолучитьОдно(Тип("ПростойОбъект"), 1);
НайденныйПростойОбъект = ХранилищеПростойОбъект.ПолучитьОдно("1");

Ожидаем.Что(НайденныйПростойОбъект).Не_().Равно(Неопределено);
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");

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