retrieve latest annotation from db (#1723)

* add function to retrieve latest annotation from db, db updates

* dont create directory in s3
This commit is contained in:
Madison Dunitz
2020-08-11 15:48:12 -05:00
committed by GitHub
parent 49b89ba7af
commit 80f6137528
5 changed files with 114 additions and 22 deletions
+8 -6
View File
@@ -29,23 +29,26 @@ class TestDatabase:
def _create_test_user(self):
user = CellxGeneUser(id="test_user_id")
user2 = CellxGeneUser(id='1234')
self.db.session.add(user)
self.db.session.add(user2)
self.db.session.commit()
def _create_test_dataset(self):
dataset = CellxGeneDataset(
id="test_dataset_id",
name="test_dataset",
)
self.db.session.add(dataset)
self.db.session.commit()
def _create_test_annotation(self):
dataset = self.db.query([CellxGeneDataset],
[CellxGeneDataset.name == "test_dataset"],
)[0]
annotation = Annotation(
id="test_annotation_id",
tiledb_uri="tiledb_uri",
user_id="test_user_id",
dataset_id="test_dataset_id"
dataset_id=str(dataset.id)
)
self.db.session.add(annotation)
self.db.session.commit()
@@ -65,7 +68,7 @@ class TestDatabase:
def _create_test_datasets(self, dataset_count: int = 10):
datasets = []
for i in range(dataset_count):
datasets.append(CellxGeneDataset(id=self.get_random_string(), name=self.get_random_string()))
datasets.append(CellxGeneDataset(name=self.get_random_string()))
self.db.session.add_all(datasets)
self.db.session.commit()
@@ -78,10 +81,9 @@ class TestDatabase:
dataset = self.order_by_random(CellxGeneDataset)
user = self.order_by_random(CellxGeneUser)
annotations.append(Annotation(
id=self.get_random_string(),
tiledb_uri=self.get_random_string(),
user_id=user.id,
dataset_id=dataset.id
dataset_id=str(dataset.id)
))
self.db.session.add_all(annotations)
self.db.session.commit()
+31 -5
View File
@@ -4,7 +4,7 @@ from server.db.db_utils import DbUtils
from server.test.fixtures.database import TestDatabase
class AppConfigTest(unittest.TestCase):
class DatabaseTest(unittest.TestCase):
db = DbUtils("postgresql://postgres:test_pw@localhost:5432")
@classmethod
@@ -22,13 +22,39 @@ class AppConfigTest(unittest.TestCase):
self.assertGreater(user_count, 10)
def test_dataset_creation(self):
one_dataset = self.db.get(table=CellxGeneDataset, entity_id='test_dataset_id')
self.assertEqual(one_dataset.id, 'test_dataset_id')
one_dataset = self.db.query(table_args=[CellxGeneDataset],
filter_args=[CellxGeneDataset.name == 'test_dataset'])
self.assertEqual(one_dataset[0].name, 'test_dataset')
dataset_count = self.db.session.query(CellxGeneDataset).count()
self.assertGreater(dataset_count, 10)
def test_annotation_creation(self):
one_annotation = self.db.get(table=Annotation, entity_id='test_annotation_id')
self.assertEqual(one_annotation.id, 'test_annotation_id')
one_annotation = self.db.query(table_args=[Annotation], filter_args=[Annotation.tiledb_uri == 'tiledb_uri'])[0]
self.assertEqual(one_annotation.tiledb_uri, 'tiledb_uri')
annotation_count = self.db.session.query(Annotation).count()
self.assertGreater(annotation_count, 10)
def test_get_most_recent_annotation_for_user_dataset(self):
dataset_id = str(self.db.query(table_args=[CellxGeneDataset],
filter_args=[CellxGeneDataset.name == 'test_dataset'])[0].id)
# have to commit separately because created_at time written on the db server
self.db.session.add(Annotation(dataset_id=dataset_id, user_id='test_user_id', tiledb_uri='tiledb_uri_0'))
self.db.session.commit()
self.db.session.add(Annotation(dataset_id=dataset_id, user_id='test_user_id', tiledb_uri='tiledb_uri_1'))
self.db.session.commit()
self.db.session.add(Annotation(dataset_id=dataset_id, user_id='test_user_id', tiledb_uri='tiledb_uri_2'))
self.db.session.commit()
self.db.session.add(Annotation(dataset_id=dataset_id, user_id='test_user_id', tiledb_uri='tiledb_uri_3'))
self.db.session.commit()
self.db.session.add(Annotation(dataset_id=dataset_id, user_id='test_user_id', tiledb_uri='tiledb_uri_4'))
self.db.session.commit()
most_recent_annotation = self.db.query_for_most_recent(Annotation, [Annotation.dataset_id == dataset_id,
Annotation.user_id == 'test_user_id'])
self.assertEqual(most_recent_annotation.tiledb_uri, 'tiledb_uri_4')