py-scopes/tests/test_storage.py
2024-02-14 18:15:48 +01:00

79 lines
2.4 KiB
Python

#! /usr/bin/python
"""Tests for the 'scopes.storage' package."""
from datetime import datetime
import transaction
import unittest
import scopes.storage.common
from scopes.storage.common import Storage, getEngine, sessionFactory
from scopes.storage import proxy
from scopes.storage import tracking
engine = getEngine('postgresql+psycopg', 'testdb', 'testuser', 'secret')
scopes.storage.common.engine = engine
scopes.storage.common.Session = sessionFactory(engine)
storage = Storage(schema='testing')
class Test(unittest.TestCase):
"Basic tests for the cco.storage package."
def testBasicStuff(self):
storage.dropTable('tracks')
tracks = storage.create(tracking.Container)
tr01 = tracking.Track('t01', 'john')
tr01.update(dict(activity='testing'))
self.assertEqual(tr01.head, {'taskId': 't01', 'userName': 'john'})
self.assertEqual(tr01.taskId, 't01')
self.assertEqual(tr01.userName, 'john')
self.assertTrue(tracks.getTable() is not None)
trid01 = tracks.save(tr01)
self.assertTrue(trid01 > 0)
tr01a = tracks.get(trid01)
self.assertEqual(tr01a.head, tr01.head)
self.assertEqual(tr01a.trackId, trid01)
self.assertEqual(tr01a.data.get('activity'), 'testing')
tr01a.update(dict(text='Set up unit tests.'))
tr01a.timeStamp = None
self.assertTrue(tracks.save(tr01a) > 0)
tr01b = tracks.queryLast(taskId='t01')
self.assertEqual(tr01b.head, tr01.head)
self.assertNotEqual(tr01b.trackId, trid01)
self.assertEqual(tr01b.data.get('activity'), 'testing')
tr02 = tracking.Track('t02', 'jim', trackId=31, timeStamp=datetime(2023, 11, 30),
data=dict(activity='concept'))
trid02 = tracks.upsert(tr02)
self.assertEqual(trid02, 31)
self.assertEqual(tr02.uid, 'rec-31')
tr02.trackId = trid01
trid021 = tracks.upsert(tr02)
self.assertEqual(trid021, trid01)
self.assertEqual(tr02.uid, 'rec-' + str(trid01))
tr03 = storage.getItem('rec-31')
self.assertEqual(tr03.trackId, 31)
n = tracks.remove(31)
self.assertEqual(n, 1)
self.assertEqual(tracks.get(31), None)
transaction.commit()
def suite():
return unittest.TestSuite((
unittest.TestLoader().loadTestsFromTestCase(Test),
))
if __name__ == '__main__':
unittest.main(defaultTest='suite')