diff --git a/.gitignore b/.gitignore index cf07a417..edb24f08 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ bin/* obj/* build/* Debug/* +.vs/ *.layout *.depend diff --git a/src/tests/tool1cd/test_saveconfig.cpp b/src/tests/tool1cd/test_saveconfig.cpp index e30ec4d5..215dd253 100644 --- a/src/tests/tool1cd/test_saveconfig.cpp +++ b/src/tests/tool1cd/test_saveconfig.cpp @@ -29,5 +29,26 @@ TEST_CASE("Сохранение конфигураций в 8.3.8", "[tool1cd][C boost::filesystem::remove(cfpath); } + } + + GIVEN("База tests/db838/db02/1Cv8.1CD") { + std::string dbpath(CMAKE_SOURCE_DIR); + dbpath += "/tests/db838/db02/1Cv8.1CD"; + + T_1CD base1CD(dbpath, nullptr, true); + + WHEN("Выгружаем конфигурации поставщиков") { + for (auto& supplier_config : base1CD.supplier_configs()) { + path cfpath = boost::filesystem::temp_directory_path() / boost::filesystem::unique_path(); + supplier_config->save_to_file(cfpath); + + std::string then_result = std::string( "Получаем файл для " + supplier_config->name() ); + THEN( then_result ) { + REQUIRE(boost::filesystem::exists(cfpath)); + } + boost::filesystem::remove(cfpath); + } + } + } } diff --git a/src/tool1cd/SupplierConfigBuilder.cpp b/src/tool1cd/SupplierConfigBuilder.cpp index 647e8d84..ec0401d0 100644 --- a/src/tool1cd/SupplierConfigBuilder.cpp +++ b/src/tool1cd/SupplierConfigBuilder.cpp @@ -16,7 +16,26 @@ string NODE_GENERAL() { SupplierConfigBuilder::SupplierConfigBuilder(TableFile *table_file) : _table_file(table_file) { - create_main_catalog(); + std::unique_ptr container_file( new ContainerFile(_table_file, _table_file->name) ); + if(!container_file->open()) { + throw SupplierConfigReadException("Ошибка открытия конейнера файлов") + .add_detail("Имя", container_file->name); + } + + TStream *out_stream = new TTempStream; + + try { + ZInflateStream(container_file->stream, out_stream); + } + catch(ZError) { + throw SupplierConfigReadException("Ошибка распаковки конфигурации поставщика") + .add_detail("Таблица", _table_file->t->getname()) + .add_detail("Имя", _table_file->name); + } + + container_file->close(); + + main_catalog = std::unique_ptr( new V8Catalog(out_stream, true) ); } std::shared_ptr SupplierConfigBuilder::build() { @@ -117,29 +136,6 @@ std::shared_ptr SupplierConfigBuilder::build() { return sup_conf; } -void SupplierConfigBuilder::create_main_catalog() { - std::unique_ptr container_file( new ContainerFile(_table_file, _table_file->name) ); - if(!container_file->open()) { - throw SupplierConfigReadException("Ошибка открытия конейнера файлов") - .add_detail("Имя", container_file->name); - } - - std::unique_ptr out_stream( new TTempStream ); - - try { - ZInflateStream(container_file->stream, out_stream.get()); - } - catch(ZError) { - throw SupplierConfigReadException("Ошибка распаковки конфигурации поставщика") - .add_detail("Таблица", _table_file->t->getname()) - .add_detail("Имя", _table_file->name); - } - - container_file->close(); - - main_catalog.reset( new V8Catalog(out_stream.get(), true) ); -} - int32_t SupplierConfigBuilder::get_version() const { V8File* version_file = main_catalog->GetFile("version"); if(!version_file) { diff --git a/src/tool1cd/SupplierConfigBuilder.h b/src/tool1cd/SupplierConfigBuilder.h index 05f32acd..e3bc10e0 100644 --- a/src/tool1cd/SupplierConfigBuilder.h +++ b/src/tool1cd/SupplierConfigBuilder.h @@ -22,7 +22,6 @@ class SupplierConfigBuilder TableFile *_table_file {nullptr}; std::unique_ptr main_catalog; - void create_main_catalog(); int32_t get_version() const; V8File* get_file(const std::string &file_name) const; diff --git a/tests/db838/db02/1Cv8.1CD b/tests/db838/db02/1Cv8.1CD new file mode 100644 index 00000000..20f2378d Binary files /dev/null and b/tests/db838/db02/1Cv8.1CD differ diff --git a/tests/db838/db02/README.md b/tests/db838/db02/README.md new file mode 100644 index 00000000..5a29eeec --- /dev/null +++ b/tests/db838/db02/README.md @@ -0,0 +1,4 @@ +База данных для тестировани работы с конфигурацией поставщика + +Название конфигурации: VendorsConfig +Версия: 1.1 \ No newline at end of file diff --git a/tests/db838/db02/source_db/1Cv8.1CD b/tests/db838/db02/source_db/1Cv8.1CD new file mode 100644 index 00000000..7b3a5418 Binary files /dev/null and b/tests/db838/db02/source_db/1Cv8.1CD differ diff --git a/tests/db838/db02/source_db/README.md b/tests/db838/db02/source_db/README.md new file mode 100644 index 00000000..3e8e912a --- /dev/null +++ b/tests/db838/db02/source_db/README.md @@ -0,0 +1 @@ +База данных для создания файлов поставки \ No newline at end of file