test_notebook.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #include "test_notebook.h"
  2. #include <QDebug>
  3. #include <QTemporaryDir>
  4. #include <QFileInfo>
  5. #include <versioncontroller/dummyversioncontrollerfactory.h>
  6. #include <versioncontroller/iversioncontroller.h>
  7. #include <notebookconfigmgr/vxnotebookconfigmgrfactory.h>
  8. #include <notebookconfigmgr/inotebookconfigmgr.h>
  9. #include <notebookconfigmgr/bundlenotebookconfigmgr.h>
  10. #include <notebookbackend/localnotebookbackendfactory.h>
  11. #include <notebookbackend/inotebookbackend.h>
  12. #include <notebook/bundlenotebookfactory.h>
  13. #include <notebook/notebook.h>
  14. #include <notebook/notebookparameters.h>
  15. #include <utils/pathutils.h>
  16. using namespace tests;
  17. using namespace vnotex;
  18. TestNotebook::TestNotebook(QObject *p_parent)
  19. : QObject(p_parent)
  20. {
  21. m_testDir.reset(new QTemporaryDir);
  22. Q_ASSERT(m_testDir->isValid());
  23. }
  24. void TestNotebook::testVersionControllerServer()
  25. {
  26. Q_ASSERT(!m_vcServer);
  27. m_vcServer.reset(new NameBasedServer<IVersionControllerFactory>);
  28. // Dummy Version Controller.
  29. auto dummyFactory = QSharedPointer<DummyVersionControllerFactory>::create();
  30. m_vcServer->registerItem(dummyFactory->getName(), dummyFactory);
  31. auto factory = m_vcServer->getItem(dummyFactory->getName());
  32. auto dummyVC = factory->createVersionController();
  33. QCOMPARE(dummyVC->getName(), dummyFactory->getName());
  34. }
  35. void TestNotebook::testNotebookConfigMgrServer()
  36. {
  37. Q_ASSERT(!m_ncmServer);
  38. m_ncmServer.reset(new NameBasedServer<INotebookConfigMgrFactory>);
  39. // VX Notebook Config Manager.
  40. auto vxFactory = QSharedPointer<VXNotebookConfigMgrFactory>::create();
  41. m_ncmServer->registerItem(vxFactory->getName(), vxFactory);
  42. auto factory = m_ncmServer->getItem(vxFactory->getName());
  43. auto vxConfigMgr = factory->createNotebookConfigMgr(nullptr);
  44. QCOMPARE(vxConfigMgr->getName(), vxFactory->getName());
  45. }
  46. void TestNotebook::testNotebookBackendServer()
  47. {
  48. Q_ASSERT(!m_backendServer);
  49. m_backendServer.reset(new NameBasedServer<INotebookBackendFactory>);
  50. // Local Notebook Backend.
  51. auto localFactory = QSharedPointer<LocalNotebookBackendFactory>::create();
  52. m_backendServer->registerItem(localFactory->getName(), localFactory);
  53. auto factory = m_backendServer->getItem(localFactory->getName());
  54. auto localBackend = factory->createNotebookBackend("");
  55. QCOMPARE(localBackend->getName(), localFactory->getName());
  56. }
  57. void TestNotebook::testNotebookServer()
  58. {
  59. Q_ASSERT(!m_nbServer);
  60. m_nbServer.reset(new NameBasedServer<INotebookFactory>);
  61. // Bundle Notebook.
  62. auto bundleFacotry = QSharedPointer<BundleNotebookFactory>::create();
  63. m_nbServer->registerItem(bundleFacotry->getName(), bundleFacotry);
  64. auto factory = m_nbServer->getItem(bundleFacotry->getName());
  65. QVERIFY(factory == bundleFacotry);
  66. }
  67. void TestNotebook::testBundleNotebookFactoryNewNotebook()
  68. {
  69. auto nbFactory = m_nbServer->getItem("bundle.vnotex");
  70. NotebookParameters para;
  71. para.m_name = "test_notebook";
  72. para.m_description = "notebook description";
  73. para.m_rootFolderPath = getTestFolderPath();
  74. para.m_notebookBackend = m_backendServer->getItem("local.vnotex")
  75. ->createNotebookBackend(para.m_rootFolderPath);
  76. para.m_versionController = m_vcServer->getItem("dummy.vnotex")->createVersionController();
  77. para.m_notebookConfigMgr = m_ncmServer->getItem("vx.vnotex")->createNotebookConfigMgr(para.m_notebookBackend);
  78. auto notebook = nbFactory->newNotebook(para);
  79. // Verify the notebook is created.
  80. QVERIFY(QDir(para.m_rootFolderPath).exists());
  81. auto configMgr = dynamic_cast<BundleNotebookConfigMgr *>(para.m_notebookConfigMgr.data());
  82. const auto notebookConfigFolder = PathUtils::concatenateFilePath(para.m_rootFolderPath,
  83. configMgr->getConfigFolderName());
  84. const auto notebookConfigPath = PathUtils::concatenateFilePath(notebookConfigFolder,
  85. configMgr->getConfigName());
  86. QVERIFY(QFileInfo::exists(notebookConfigPath));
  87. }
  88. QString TestNotebook::getTestFolderPath() const
  89. {
  90. return m_testDir->path();
  91. }
  92. QTEST_MAIN(tests::TestNotebook)