__init__.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import unittest
  2. import transaction
  3. from depot.manager import DepotManager
  4. from pyramid import testing
  5. from tracim.models.data import Workspace
  6. from tracim.models.data import Content
  7. from tracim.logger import logger
  8. from tracim.fixtures import FixturesLoader
  9. from tracim.fixtures.users_and_groups import Base as BaseFixture
  10. from tracim.config import CFG
  11. class BaseTest(unittest.TestCase):
  12. """
  13. Pyramid default test.
  14. """
  15. def setUp(self):
  16. logger.debug(self, 'Setup Test...')
  17. self.config = testing.setUp(settings={
  18. 'sqlalchemy.url': 'sqlite:///:memory:',
  19. 'user.auth_token.validity':'604800',
  20. 'depot_storage_dir': '/tmp/test/depot',
  21. 'depot_storage_name': 'test',
  22. 'preview_cache_dir': '/tmp/test/preview_cache',
  23. })
  24. self.config.include('tracim.models')
  25. DepotManager._clear()
  26. DepotManager.configure(
  27. 'test',
  28. { 'depot.backend' : 'depot.io.memory.MemoryFileStorage' },
  29. )
  30. settings = self.config.get_settings()
  31. from tracim.models import (
  32. get_engine,
  33. get_session_factory,
  34. get_tm_session,
  35. )
  36. self.engine = get_engine(settings)
  37. session_factory = get_session_factory(self.engine)
  38. self.session = get_tm_session(session_factory, transaction.manager)
  39. self.init_database()
  40. def init_database(self):
  41. logger.debug(self, 'Init Database Schema...')
  42. from tracim.models.meta import DeclarativeBase
  43. DeclarativeBase.metadata.create_all(self.engine)
  44. def tearDown(self):
  45. logger.debug(self, 'TearDown Test...')
  46. from tracim.models.meta import DeclarativeBase
  47. testing.tearDown()
  48. transaction.abort()
  49. DeclarativeBase.metadata.drop_all(self.engine)
  50. # class DefaultTest(object):
  51. #
  52. # def _create_workspace_and_test(self, name, user) -> Workspace:
  53. # """
  54. # All extra parameters (*args, **kwargs) are for Workspace init
  55. # :return: Created workspace instance
  56. # """
  57. # WorkspaceApi(user).create_workspace(name, save_now=True)
  58. #
  59. # eq_(1, self._session.query(Workspace).filter(Workspace.label == name).count())
  60. # return self._session.query(Workspace).filter(Workspace.label == name).one()
  61. #
  62. # def _create_content_and_test(self, name, workspace, *args, **kwargs) -> Content:
  63. # """
  64. # All extra parameters (*args, **kwargs) are for Content init
  65. # :return: Created Content instance
  66. # """
  67. # content = Content(*args, **kwargs)
  68. # content.label = name
  69. # content.workspace = workspace
  70. # self._session.add(content)
  71. # self._session.flush()
  72. #
  73. # eq_(1, ContentApi.get_canonical_query().filter(Content.label == name).count())
  74. # return ContentApi.get_canonical_query().filter(Content.label == name).one()
  75. class StandardTest(BaseTest):
  76. """
  77. BaseTest with default fixtures
  78. """
  79. fixtures = [BaseFixture]
  80. def init_database(self):
  81. BaseTest.init_database(self)
  82. fixtures_loader = FixturesLoader(
  83. session=self.session,
  84. config=CFG(self.config.get_settings()))
  85. fixtures_loader.loads(self.fixtures)