Files
galaxy/test/unit/app/managers/test_CollectionManager.py
T
2022-02-03 07:42:20 -05:00

127 lines
5.8 KiB
Python

#!/usr/bin/env python
"""
"""
import unittest
from galaxy import model
from galaxy.managers.collections import DatasetCollectionManager
from galaxy.managers.datasets import DatasetManager
from galaxy.managers.hdas import HDAManager
from galaxy.managers.histories import HistoryManager
from .base import (
BaseTestCase,
CreatesCollectionsMixin,
)
# =============================================================================
default_password = "123456"
user2_data = dict(email="user2@user2.user2", username="user2", password=default_password)
user3_data = dict(email="user3@user3.user3", username="user3", password=default_password)
# =============================================================================
class DatasetCollectionManagerTestCase(BaseTestCase, CreatesCollectionsMixin):
def set_up_managers(self):
super().set_up_managers()
self.dataset_manager = self.app[DatasetManager]
self.hda_manager = self.app[HDAManager]
self.history_manager = self.app[HistoryManager]
self.collection_manager = self.app[DatasetCollectionManager]
def test_create_simple_list(self):
owner = self.user_manager.create(**user2_data)
history = self.history_manager.create(name="history1", user=owner)
hda1 = self.hda_manager.create(name="one", history=history, dataset=self.dataset_manager.create())
hda2 = self.hda_manager.create(name="two", history=history, dataset=self.dataset_manager.create())
hda3 = self.hda_manager.create(name="three", history=history, dataset=self.dataset_manager.create())
self.log("should be able to create a new Collection via ids")
element_identifiers = self.build_element_identifiers([hda1, hda2, hda3])
hdca = self.collection_manager.create(
self.trans, history, "test collection", "list", element_identifiers=element_identifiers
)
self.assertIsInstance(hdca, model.HistoryDatasetCollectionAssociation)
self.assertEqual(hdca.name, "test collection")
self.assertEqual(hdca.hid, 4)
self.assertFalse(hdca.deleted)
self.assertTrue(hdca.visible)
self.log("should contain an underlying, well-formed DatasetCollection")
self.assertIsInstance(hdca.collection, model.DatasetCollection)
collection = hdca.collection
self.assertEqual(collection.collection_type, "list")
self.assertEqual(collection.state, "ok")
self.assertEqual(len(collection.dataset_instances), 3)
self.assertEqual(len(collection.elements), 3)
self.log("and that collection should have three well-formed Elements")
self.assertIsInstance(collection.elements[0], model.DatasetCollectionElement)
self.assertEqual(collection.elements[0].element_identifier, "one")
self.assertEqual(collection.elements[0].element_index, 0)
self.assertEqual(collection.elements[0].element_type, "hda")
self.assertEqual(collection.elements[0].element_object, hda1)
self.assertIsInstance(collection.elements[1], model.DatasetCollectionElement)
self.assertEqual(collection.elements[1].element_identifier, "two")
self.assertEqual(collection.elements[1].element_index, 1)
self.assertEqual(collection.elements[1].element_type, "hda")
self.assertEqual(collection.elements[1].element_object, hda2)
self.assertIsInstance(collection.elements[2], model.DatasetCollectionElement)
self.assertEqual(collection.elements[2].element_identifier, "three")
self.assertEqual(collection.elements[2].element_index, 2)
self.assertEqual(collection.elements[2].element_type, "hda")
self.assertEqual(collection.elements[2].element_object, hda3)
self.log("should be able to create a new Collection via objects")
elements = dict(one=hda1, two=hda2, three=hda3)
hdca2 = self.collection_manager.create(self.trans, history, "test collection 2", "list", elements=elements)
self.assertIsInstance(hdca2, model.HistoryDatasetCollectionAssociation)
def test_update_from_dict(self):
owner = self.user_manager.create(**user2_data)
history = self.history_manager.create(name="history1", user=owner)
hda1 = self.hda_manager.create(name="one", history=history, dataset=self.dataset_manager.create())
hda2 = self.hda_manager.create(name="two", history=history, dataset=self.dataset_manager.create())
hda3 = self.hda_manager.create(name="three", history=history, dataset=self.dataset_manager.create())
elements = dict(one=hda1, two=hda2, three=hda3)
hdca = self.collection_manager.create(self.trans, history, "test collection", "list", elements=elements)
self.log("should be set from a dictionary")
self.collection_manager._set_from_dict(
self.trans,
hdca,
{
"deleted": True,
"visible": False,
"name": "New Name",
"tags": ["name:one", "group:two", "three"]
# TODO: doesn't work
# 'annotations' : [?]
},
)
self.assertEqual(hdca.name, "New Name")
self.assertTrue(hdca.deleted)
self.assertFalse(hdca.visible)
tag_names = hdca.make_tag_string_list()
self.assertEqual(tag_names, ["name:one", "group:two", "three"])
# self.assertEqual( hdca.annotations, [ 'one', 'two', 'three' ] )
# def test_validation( self ):
# self.log( "should be able to change the name" )
# self.log( "should be able to set deleted" )
# self.log( "should be able to set visible" )
# self.log( "should be able to set tags" )
# =============================================================================
if __name__ == "__main__":
# or more generally, nosetests test_resourcemanagers.py -s -v
unittest.main()