mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
121 lines
5.4 KiB
Python
121 lines
5.4 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
"""
|
|
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 TestDatasetCollectionManager(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)
|
|
self.trans.set_user(owner)
|
|
|
|
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
|
|
)
|
|
assert isinstance(hdca, model.HistoryDatasetCollectionAssociation)
|
|
assert hdca.name == "test collection"
|
|
assert hdca.hid == 4
|
|
assert not hdca.deleted
|
|
assert hdca.visible
|
|
|
|
self.log("should contain an underlying, well-formed DatasetCollection")
|
|
assert isinstance(hdca.collection, model.DatasetCollection)
|
|
collection = hdca.collection
|
|
assert collection.collection_type == "list"
|
|
assert collection.state == "ok"
|
|
assert len(collection.dataset_instances) == 3
|
|
assert len(collection.elements) == 3
|
|
|
|
self.log("and that collection should have three well-formed Elements")
|
|
assert isinstance(collection.elements[0], model.DatasetCollectionElement)
|
|
assert collection.elements[0].element_identifier == "one"
|
|
assert collection.elements[0].element_index == 0
|
|
assert collection.elements[0].element_type == "hda"
|
|
assert collection.elements[0].element_object == hda1
|
|
|
|
assert isinstance(collection.elements[1], model.DatasetCollectionElement)
|
|
assert collection.elements[1].element_identifier == "two"
|
|
assert collection.elements[1].element_index == 1
|
|
assert collection.elements[1].element_type == "hda"
|
|
assert collection.elements[1].element_object == hda2
|
|
|
|
assert isinstance(collection.elements[2], model.DatasetCollectionElement)
|
|
assert collection.elements[2].element_identifier == "three"
|
|
assert collection.elements[2].element_index == 2
|
|
assert collection.elements[2].element_type == "hda"
|
|
assert 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)
|
|
assert isinstance(hdca2, model.HistoryDatasetCollectionAssociation)
|
|
|
|
def test_update_from_dict(self):
|
|
owner = self.user_manager.create(**user2_data)
|
|
self.trans.set_user(owner)
|
|
|
|
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' : [?]
|
|
},
|
|
)
|
|
assert hdca.name == "New Name"
|
|
assert hdca.deleted
|
|
assert not hdca.visible
|
|
|
|
tag_names = hdca.make_tag_string_list()
|
|
assert tag_names == ["name:one", "group:two", "three"]
|
|
# assert 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")
|