# Smoke-тест: проверка сборки и работы сторонних библиотек.
add_executable(flora_smoke smoke_test.cpp)
target_compile_definitions(flora_smoke PRIVATE
    CMARK_GFM_STATIC_DEFINE
    CMARK_GFM_EXTENSIONS_STATIC_DEFINE)
target_link_libraries(flora_smoke PRIVATE
    cmark::cmark
    cmark::cmark_extensions
    Flora_libgit2_static)
add_test(NAME flora_smoke COMMAND flora_smoke)

# Тест GitManager (git init / авто-коммиты внутри хранилища).
add_executable(flora_git_test git_test.cpp
    ../src/git/GitManager.cpp
    ../src/git/GitManager.h
)
target_include_directories(flora_git_test PRIVATE ../src)
target_compile_definitions(flora_git_test PRIVATE CMARK_GFM_STATIC_DEFINE)
target_link_libraries(flora_git_test PRIVATE
    Qt6::Core
    Flora_libgit2_static)
add_test(NAME flora_git_test COMMAND flora_git_test)

# Интеграционный тест: настройки + создание хранилища (git-репозиторий).
add_executable(flora_vault_test vault_test.cpp
    ../src/app/VaultManager.cpp
    ../src/app/VaultManager.h
    ../src/core/SettingsStore.cpp
    ../src/core/SettingsStore.h
    ../src/git/GitManager.cpp
    ../src/git/GitManager.h
)
target_include_directories(flora_vault_test PRIVATE ../src)
target_link_libraries(flora_vault_test PRIVATE
    Qt6::Core
    Flora_libgit2_static)
add_test(NAME flora_vault_test COMMAND flora_vault_test)

# Тест FileStore (файловое дерево хранилища).
add_executable(flora_filestore_test filestore_test.cpp
    ../src/core/FileStore.cpp
    ../src/core/FileStore.h
)
target_include_directories(flora_filestore_test PRIVATE ../src)
target_link_libraries(flora_filestore_test PRIVATE
    Qt6::Core)
add_test(NAME flora_filestore_test COMMAND flora_filestore_test)

# Тест DocumentManager (вкладки, автосохранение, сохранение при закрытии).
add_executable(flora_docmgr_test documentmanager_test.cpp
    ../src/core/DocumentManager.cpp
    ../src/core/DocumentManager.h
)
target_include_directories(flora_docmgr_test PRIVATE ../src)
target_link_libraries(flora_docmgr_test PRIVATE
    Qt6::Core)
add_test(NAME flora_docmgr_test COMMAND flora_docmgr_test)

# Тест MdParser (рендер Markdown → HTML).
add_executable(flora_mdparser_test mdparser_test.cpp
    ../src/markdown/MdParser.cpp
    ../src/markdown/MdParser.h
)
target_include_directories(flora_mdparser_test PRIVATE ../src)
target_compile_definitions(flora_mdparser_test PRIVATE
    CMARK_GFM_STATIC_DEFINE
    CMARK_GFM_EXTENSIONS_STATIC_DEFINE)
target_link_libraries(flora_mdparser_test PRIVATE
    Qt6::Core
    Qt6::Gui
    cmark::cmark
    cmark::cmark_extensions
)
if(TARGET KF6SyntaxHighlighting)
    target_link_libraries(flora_mdparser_test PRIVATE KF6SyntaxHighlighting)
endif()
add_test(NAME flora_mdparser_test COMMAND flora_mdparser_test)

# Тест VaultIndex (теги, ссылки, граф).
add_executable(flora_vaultindex_test vaultindex_test.cpp
    ../src/core/VaultIndex.cpp
    ../src/core/VaultIndex.h
)
target_include_directories(flora_vaultindex_test PRIVATE ../src)
target_link_libraries(flora_vaultindex_test PRIVATE
    Qt6::Core)
add_test(NAME flora_vaultindex_test COMMAND flora_vaultindex_test)

# Тест SettingsStore (темы, панели, режимы)
add_executable(flora_settings_test settings_test.cpp
    ../src/core/SettingsStore.cpp
    ../src/core/SettingsStore.h
)
target_include_directories(flora_settings_test PRIVATE ../src)
target_link_libraries(flora_settings_test PRIVATE Qt6::Core)
add_test(NAME flora_settings_test COMMAND flora_settings_test)

# Тест SyncManager (каталог ошибок, busy)
add_executable(flora_sync_test sync_test.cpp
    ../src/sync/SyncManager.cpp
    ../src/sync/SyncManager.h
)
target_include_directories(flora_sync_test PRIVATE ../src)
target_link_libraries(flora_sync_test PRIVATE Qt6::Core Qt6::Network)
add_test(NAME flora_sync_test COMMAND flora_sync_test)

# Расширенные тесты (FileStore, DocumentManager, VaultIndex, MdParser, Git)
add_executable(flora_extended_test extended_test.cpp
    ../src/core/FileStore.cpp
    ../src/core/FileStore.h
    ../src/core/DocumentManager.cpp
    ../src/core/DocumentManager.h
    ../src/core/VaultIndex.cpp
    ../src/core/VaultIndex.h
    ../src/markdown/MdParser.cpp
    ../src/markdown/MdParser.h
    ../src/git/GitManager.cpp
    ../src/git/GitManager.h
)
target_include_directories(flora_extended_test PRIVATE ../src)
target_compile_definitions(flora_extended_test PRIVATE CMARK_GFM_STATIC_DEFINE CMARK_GFM_EXTENSIONS_STATIC_DEFINE)
target_link_libraries(flora_extended_test PRIVATE Qt6::Core Qt6::Gui cmark::cmark cmark::cmark_extensions Flora_libgit2_static)
if(TARGET KF6SyntaxHighlighting)
    target_link_libraries(flora_extended_test PRIVATE KF6SyntaxHighlighting)
endif()
if(TARGET libssh2_static)
    target_link_libraries(flora_extended_test PRIVATE libssh2_static)
endif()
add_test(NAME flora_extended_test COMMAND flora_extended_test)

# Интеграционный тест (VaultManager + FileStore + DocumentManager + VaultIndex + Git + MdParser)
add_executable(flora_integration_test integration_test.cpp
    ../src/app/VaultManager.cpp
    ../src/app/VaultManager.h
    ../src/core/SettingsStore.cpp
    ../src/core/SettingsStore.h
    ../src/core/FileStore.cpp
    ../src/core/FileStore.h
    ../src/core/DocumentManager.cpp
    ../src/core/DocumentManager.h
    ../src/core/VaultIndex.cpp
    ../src/core/VaultIndex.h
    ../src/markdown/MdParser.cpp
    ../src/markdown/MdParser.h
    ../src/git/GitManager.cpp
    ../src/git/GitManager.h
)
target_include_directories(flora_integration_test PRIVATE ../src)
target_compile_definitions(flora_integration_test PRIVATE CMARK_GFM_STATIC_DEFINE CMARK_GFM_EXTENSIONS_STATIC_DEFINE)
target_link_libraries(flora_integration_test PRIVATE Qt6::Core Qt6::Gui cmark::cmark cmark::cmark_extensions Flora_libgit2_static)
if(TARGET KF6SyntaxHighlighting)
    target_link_libraries(flora_integration_test PRIVATE KF6SyntaxHighlighting)
endif()
add_test(NAME flora_integration_test COMMAND flora_integration_test)