123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import unittest
- import transaction
- from depot.manager import DepotManager
- from pyramid import testing
-
- from nose.tools import eq_
- from tracim.lib.content import ContentApi
- from tracim.lib.workspace import WorkspaceApi
- from tracim.models.data import Workspace
- from tracim.models.data import Content
- from tracim.logger import logger
- from tracim.fixtures import FixturesLoader
- from tracim.fixtures.users_and_groups import Base as BaseFixture
- from tracim.config import CFG
-
-
- class BaseTest(unittest.TestCase):
- """
- Pyramid default test.
- """
- def setUp(self):
- logger.debug(self, 'Setup Test...')
- self.config = testing.setUp(settings={
- 'sqlalchemy.url': 'sqlite:///:memory:',
- 'user.auth_token.validity': '604800',
- 'depot_storage_dir': '/tmp/test/depot',
- 'depot_storage_name': 'test',
- 'preview_cache_dir': '/tmp/test/preview_cache',
-
- })
- self.config.include('tracim.models')
- DepotManager._clear()
- DepotManager.configure(
- 'test', {'depot.backend': 'depot.io.memory.MemoryFileStorage'}
- )
- settings = self.config.get_settings()
-
- from tracim.models import (
- get_engine,
- get_session_factory,
- get_tm_session,
- )
-
- self.engine = get_engine(settings)
- session_factory = get_session_factory(self.engine)
-
- self.session = get_tm_session(session_factory, transaction.manager)
- self.init_database()
-
- def init_database(self):
- logger.debug(self, 'Init Database Schema...')
- from tracim.models.meta import DeclarativeBase
- DeclarativeBase.metadata.create_all(self.engine)
-
- def tearDown(self):
- logger.debug(self, 'TearDown Test...')
- from tracim.models.meta import DeclarativeBase
-
- testing.tearDown()
- transaction.abort()
- DeclarativeBase.metadata.drop_all(self.engine)
-
- class StandardTest(BaseTest):
- """
- BaseTest with default fixtures
- """
- fixtures = [BaseFixture]
-
- def init_database(self):
- BaseTest.init_database(self)
- fixtures_loader = FixturesLoader(
- session=self.session,
- config=CFG(self.config.get_settings()))
- fixtures_loader.loads(self.fixtures)
-
-
- class DefaultTest(StandardTest):
-
- def _create_workspace_and_test(self, name, user) -> Workspace:
- """
- All extra parameters (*args, **kwargs) are for Workspace init
- :return: Created workspace instance
- """
- WorkspaceApi(
- current_user=user,
- session=self.session,
- ).create_workspace(name, save_now=True)
-
- eq_(1, self.session.query(Workspace).filter(Workspace.label == name).count())
- return self.session.query(Workspace).filter(Workspace.label == name).one()
-
- def _create_content_and_test(self, name, workspace, *args, **kwargs) -> Content:
- """
- All extra parameters (*args, **kwargs) are for Content init
- :return: Created Content instance
- """
- content = Content(*args, **kwargs)
- content.label = name
- content.workspace = workspace
- self.session.add(content)
- self.session.flush()
-
- content_api = ContentApi(
- current_user=None,
- session=self.session,
- )
- eq_(1, content_api.get_canonical_query().filter(Content.label == name).count())
- return content_api.get_canonical_query().filter(Content.label == name).one()
|