def test_projects(db: sqldb.SQLDB): prj1 = { 'name': 'p1', 'description': 'banana', # 'users': ['u1', 'u2'], 'spec': { 'company': 'ACME' }, 'state': 'active', 'created': datetime.now(), } pid1 = db.add_project(prj1) p1 = db.get_project(project_id=pid1) assert p1, f'project {pid1} not found' out = { 'name': p1.name, 'description': p1.description, # 'users': sorted(u.name for u in p1.users), 'spec': p1.spec, 'state': p1.state, 'created': p1.created, } assert prj1 == out, 'bad project' data = {'description': 'lemon'} db.update_project(p1.name, data) p1 = db.get_project(project_id=pid1) assert data['description'] == p1.description, 'bad update' prj2 = {'name': 'p2'} db.add_project(prj2) prjs = {p.name for p in db.list_projects()} assert {prj1['name'], prj2['name']} == prjs, 'list'
def test_cache_projects(db: sqldb.SQLDB): assert 0 == len(db._projects), 'empty cache' name = 'prj348' db.add_project({'name': name}) assert {name} == db._projects, 'project' mock = Mock() with patch(db, add_project=mock): db._create_project_if_not_exists(name) mock.assert_not_called() mock = Mock() with patch(db, add_project=mock): db._create_project_if_not_exists(name + '-new') mock.assert_called_once()