Commit 7bca61b903e6f95b9c754f1d0cf08a29d4455c4f

Authored by hitier
1 parent f3dbebc2

New models tests

Base test class is now inititated with mode btp or memory
Showing 1 changed file with 42 additions and 10 deletions   Show diff stats
tests/db_tests.py
  1 +import os
1 import unittest 2 import unittest
2 3
3 from app import create_app, db, User 4 from app import create_app, db, User
4 from app.models import Project 5 from app.models import Project
5 from pdc_config import TestConfig 6 from pdc_config import TestConfig
6 -from tests.common_db_feed import feed_projects 7 +from tests.common_db_feed import feed_projects, resources_to_instancedb
7 8
8 9
9 class DbBaseTestCase(unittest.TestCase): 10 class DbBaseTestCase(unittest.TestCase):
10 - def setUp(self): 11 + def setUp(self, mode='memory'):
  12 + """
  13 +
  14 + :param mode: memory or btp
  15 + :return:
  16 + """
11 self.app = create_app(TestConfig) 17 self.app = create_app(TestConfig)
12 - # force db uri to sqlite memory 18 + self.mode = mode
  19 + # Set uri based on called mode
  20 + #
  21 + if self.mode == 'memory':
  22 + # force db uri to sqlite memory
  23 + uri = 'sqlite:///:memory:'
  24 + elif self.mode == 'btp':
  25 + self.db_path = resources_to_instancedb(self.app)
  26 + # force db path to newly create file
  27 + uri = 'sqlite:///' + self.db_path
13 self.app.config.update( 28 self.app.config.update(
14 - SQLALCHEMY_DATABASE_URI='sqlite:///:memory:' 29 + SQLALCHEMY_DATABASE_URI=uri
15 ) 30 )
  31 + # Push context
  32 + #
16 self.app_context = self.app.app_context() 33 self.app_context = self.app.app_context()
17 self.app_context.push() 34 self.app_context.push()
18 - db.create_all()  
19 - feed_projects() 35 + # Create and feed db if empty
  36 + #
  37 + if self.mode == 'memory':
  38 + db.create_all()
  39 + feed_projects()
20 40
21 def tearDown(self): 41 def tearDown(self):
22 - db.session.remove()  
23 - db.drop_all() 42 + if self.mode == 'memory':
  43 + db.session.remove()
  44 + db.drop_all()
  45 + elif self.mode == 'btp':
  46 + if os.path.isfile(self.db_path):
  47 + os.remove(self.db_path)
24 self.app_context.pop() 48 self.app_context.pop()
25 49
26 - def test_first(self): 50 +
  51 +class ChargeModelTestCase(DbBaseTestCase):
  52 + def setUp(self):
  53 + DbBaseTestCase.setUp(self, 'btp')
  54 +
  55 + def tearDown(self):
  56 + DbBaseTestCase.tearDown(self)
  57 +
  58 + def test_btp(self):
27 projects = Project.query.all() 59 projects = Project.query.all()
28 - self.assertEqual(3, len(projects)) 60 + self.assertEqual(101, len(projects))
29 61
30 62
31 class AuthModelTestCase(DbBaseTestCase): 63 class AuthModelTestCase(DbBaseTestCase):