From 43906e014c536aae7aad2b9244e75e22faa15ff8 Mon Sep 17 00:00:00 2001 From: Sergey Golitsynskiy Date: Thu, 21 Oct 2021 18:55:04 -0400 Subject: [PATCH] Use pkey comparison to compare mapped object collections (see note) It is possible (even likely, with a different/better/simpler session setup) that the objects populating the collection attribute representing a relationship on a stored object will NOT be the same Python objects that were initially associated with the object via that relationship. Thus, Python object identity comparison will fail (when we change the session setup). Besides, we should be using the database primary key as the comparison key, because that is the only correct measure of database-mapped object equality. --- .../mapping/test_install_model_mapping.py | 13 +- .../data/model/mapping/test_model_mapping.py | 287 +++++++++--------- 2 files changed, 157 insertions(+), 143 deletions(-) diff --git a/test/unit/data/model/mapping/test_install_model_mapping.py b/test/unit/data/model/mapping/test_install_model_mapping.py index 7e6b10436b3..52154b39587 100644 --- a/test/unit/data/model/mapping/test_install_model_mapping.py +++ b/test/unit/data/model/mapping/test_install_model_mapping.py @@ -8,6 +8,7 @@ from sqlalchemy import ( ) import galaxy.model.tool_shed_install.mapping as mapping +from .common import collection_consists_of_objects class BaseTest: @@ -102,9 +103,10 @@ class TestToolShedRepository(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) - assert stored_obj.tool_versions == [tool_version] - assert stored_obj.tool_dependencies == [tool_dependency] - assert stored_obj.required_repositories == [repository_repository_dependency_association] + assert collection_consists_of_objects(stored_obj.tool_versions, tool_version) + assert collection_consists_of_objects(stored_obj.tool_dependencies, tool_dependency) + assert collection_consists_of_objects( + stored_obj.required_repositories, repository_repository_dependency_association) class TestRepositoryRepositoryDependencyAssociation(BaseTest): @@ -257,8 +259,8 @@ class TestToolVersion(BaseTest): stored_obj = get_stored_obj(session, cls_, obj.id) assert stored_obj.tool_shed_repository.id == repository.id - assert stored_obj.parent_tool_association == [tool_version_assoc1] - assert stored_obj.child_tool_association == [tool_version_assoc2] + assert collection_consists_of_objects(stored_obj.parent_tool_association, tool_version_assoc1) + assert collection_consists_of_objects(stored_obj.child_tool_association, tool_version_assoc2) delete_from_database(session, [obj, tool_version_assoc1, tool_version_assoc2]) @@ -276,7 +278,6 @@ class TestToolVersionAssociation(BaseTest): session.add(parent_tool_version) session.flush() - # TODO: why are these not mapped as relationships? obj = cls_() obj.tool_id = tool_version.id obj.parent_id = parent_tool_version.id diff --git a/test/unit/data/model/mapping/test_model_mapping.py b/test/unit/data/model/mapping/test_model_mapping.py index 3b307d2c520..608658e37dc 100644 --- a/test/unit/data/model/mapping/test_model_mapping.py +++ b/test/unit/data/model/mapping/test_model_mapping.py @@ -54,7 +54,7 @@ class TestPlanet(BaseTest): # BaseTest is a base class; we need it to get the t stored_obj = get_stored_obj(session, cls_, obj_id) # check ALL relationship-mapped fields assert stored_obj.star.id == star.id # test the relationship attribute star.id (note the dot operator) - assert stored_obj.satellites == [satellite] # verify collecion of related objects + assert collection_consists_of_objects(stored_obj.satellites, satellite) # verify collecion of related objects See other model tests in this module for examples of more complex setups. @@ -521,13 +521,16 @@ class TestDataset(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.job.id == job.id - assert stored_obj.actions == [dataset_permission] - assert stored_obj.active_history_associations == [history_dataset_association] + assert collection_consists_of_objects(stored_obj.actions, dataset_permission) + assert collection_consists_of_objects( + stored_obj.active_history_associations, history_dataset_association) assert stored_obj.purged_history_associations[0].id == hda.id - assert stored_obj.active_library_associations == [library_dataset_dataset_association] - assert stored_obj.hashes == [dataset_hash] - assert stored_obj.sources == [dataset_source] - assert stored_obj.library_associations == [library_dataset_dataset_association] + assert collection_consists_of_objects( + stored_obj.active_library_associations, library_dataset_dataset_association) + assert collection_consists_of_objects(stored_obj.hashes, dataset_hash) + assert collection_consists_of_objects(stored_obj.sources, dataset_source) + assert collection_consists_of_objects( + stored_obj.library_associations, library_dataset_dataset_association) assert collection_consists_of_objects( stored_obj.history_associations, hda, history_dataset_association) @@ -577,7 +580,7 @@ class TestDatasetCollection(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) - assert stored_obj.elements == [dataset_collection_element] + assert collection_consists_of_objects(stored_obj.elements, dataset_collection_element) class TestDatasetCollectionElement(BaseTest): @@ -734,7 +737,7 @@ class TestDatasetSource(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.dataset.id == dataset.id - assert stored_obj.hashes == [dataset_source_hash] + assert collection_consists_of_objects(stored_obj.hashes, dataset_source_hash) class TestDatasetSourceHash(BaseTest): @@ -968,7 +971,7 @@ class TestExtendedMetadata(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) - assert stored_obj.children == [extended_metadata_index] + assert collection_consists_of_objects(stored_obj.children, extended_metadata_index) class TestExtendedMetadataIndex(BaseTest): @@ -1064,7 +1067,7 @@ class TestFormDefinitionCurrent(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.latest_form.id == form_definition.id - assert stored_obj.forms == [form_definition] + assert collection_consists_of_objects(stored_obj.forms, form_definition) class TestFormValues(BaseTest): @@ -1152,7 +1155,8 @@ class TestGalaxySession(BaseTest): stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.user.id == user.id assert stored_obj.current_history.id == history.id - assert stored_obj.histories == [galaxy_session_history_association] + assert collection_consists_of_objects( + stored_obj.histories, galaxy_session_history_association) class TestGalaxySessionToHistoryAssociation(BaseTest): @@ -1265,9 +1269,9 @@ class TestGroup(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.id == obj_id - assert stored_obj.quotas == [group_quota_association] - assert stored_obj.roles == [group_role_association] - assert stored_obj.users == [user_group_association] + assert collection_consists_of_objects(stored_obj.quotas, group_quota_association) + assert collection_consists_of_objects(stored_obj.roles, group_role_association) + assert collection_consists_of_objects(stored_obj.users, user_group_association) class TestGroupQuotaAssociation(BaseTest): @@ -1409,23 +1413,32 @@ class TestHistory(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.user.id == user.id - assert stored_obj.datasets == [history_dataset_association] - assert stored_obj.exports == [job_export_history_archive] - assert stored_obj.active_datasets == [history_dataset_association] - assert stored_obj.active_dataset_collections == [history_dataset_collection_association] - assert stored_obj.visible_datasets == [history_dataset_association] - assert stored_obj.visible_dataset_collections == [history_dataset_collection_association] - assert stored_obj.tags == [history_tag_association] - assert stored_obj.annotations == [history_annotation_association] - assert stored_obj.ratings == [history_rating_association] + assert collection_consists_of_objects(stored_obj.datasets, history_dataset_association) + assert collection_consists_of_objects(stored_obj.exports, job_export_history_archive) + assert collection_consists_of_objects( + stored_obj.active_datasets, history_dataset_association) + assert collection_consists_of_objects( + stored_obj.active_dataset_collections, history_dataset_collection_association) + assert collection_consists_of_objects( + stored_obj.visible_datasets, history_dataset_association) + assert collection_consists_of_objects( + stored_obj.visible_dataset_collections, history_dataset_collection_association) + assert collection_consists_of_objects(stored_obj.tags, history_tag_association) + assert collection_consists_of_objects( + stored_obj.annotations, history_annotation_association) + assert collection_consists_of_objects(stored_obj.ratings, history_rating_association) # This doesn't test the average amount, just the mapping. assert stored_obj.average_rating == history_rating_association.rating assert stored_obj.users_shared_with_count == 1 - assert stored_obj.users_shared_with == [history_user_share_association] - assert stored_obj.default_permissions == [default_history_permissions] - assert stored_obj.galaxy_sessions == [galaxy_session_history_association] - assert stored_obj.workflow_invocations == [workflow_invocation] - assert stored_obj.jobs == [job] + assert collection_consists_of_objects( + stored_obj.users_shared_with, history_user_share_association) + assert collection_consists_of_objects( + stored_obj.default_permissions, default_history_permissions) + assert collection_consists_of_objects( + stored_obj.galaxy_sessions, galaxy_session_history_association) + assert collection_consists_of_objects( + stored_obj.workflow_invocations, workflow_invocation) + assert collection_consists_of_objects(stored_obj.jobs, job) def test_average_rating(self, session, history, user, history_rating_association_factory): _run_average_rating_test(session, history, user, history_rating_association_factory) @@ -1614,15 +1627,24 @@ class TestHistoryDatasetAssociation(BaseTest): assert stored_obj.extended_metadata.id == extended_metadata.id assert (stored_obj.hidden_beneath_collection_instance.id == history_dataset_collection_association.id) - assert stored_obj.copied_to_library_dataset_dataset_associations == [copied_to_ldda] - assert stored_obj.copied_to_history_dataset_associations == [copied_to_hda] - assert stored_obj.tags == [history_dataset_association_tag_association] - assert stored_obj.annotations == [history_dataset_association_annotation_association] - assert stored_obj.ratings == [history_dataset_association_rating_association] - assert stored_obj.dependent_jobs == [job_to_input_dataset_association] - assert stored_obj.creating_job_associations == [job_to_output_dataset_association] - assert stored_obj.implicitly_converted_datasets == [icda] - assert stored_obj.implicitly_converted_parent_datasets == [icpda] + assert collection_consists_of_objects( + stored_obj.copied_to_library_dataset_dataset_associations, copied_to_ldda) + assert collection_consists_of_objects( + stored_obj.copied_to_history_dataset_associations, copied_to_hda) + assert collection_consists_of_objects( + stored_obj.tags, history_dataset_association_tag_association) + assert collection_consists_of_objects( + stored_obj.annotations, history_dataset_association_annotation_association) + assert collection_consists_of_objects( + stored_obj.ratings, history_dataset_association_rating_association) + assert collection_consists_of_objects( + stored_obj.dependent_jobs, job_to_input_dataset_association) + assert collection_consists_of_objects( + stored_obj.creating_job_associations, job_to_output_dataset_association) + assert collection_consists_of_objects( + stored_obj.implicitly_converted_datasets, icda) + assert collection_consists_of_objects( + stored_obj.implicitly_converted_parent_datasets, icpda) delete_from_database(session, persisted) @@ -1909,13 +1931,13 @@ class TestHistoryDatasetCollectionAssociation(BaseTest): assert stored_obj.history.id == history.id assert (stored_obj.copied_from_history_dataset_collection_association.id == history_dataset_collection_association.id) - assert stored_obj.copied_to_history_dataset_collection_association == [copied_to_hdca] + assert collection_consists_of_objects(stored_obj.copied_to_history_dataset_collection_association, copied_to_hdca) assert stored_obj.job.id == job.id assert stored_obj.implicit_collection_jobs.id == implicit_collection_jobs.id - assert stored_obj.implicit_input_collections == [implicitly_created_dataset_collection_input] - assert stored_obj.tags == [history_dataset_collection_tag_association] - assert stored_obj.annotations == [history_dataset_collection_annotation_association] - assert stored_obj.ratings == [history_dataset_collection_rating_association] + assert collection_consists_of_objects(stored_obj.implicit_input_collections, implicitly_created_dataset_collection_input) + assert collection_consists_of_objects(stored_obj.tags, history_dataset_collection_tag_association) + assert collection_consists_of_objects(stored_obj.annotations, history_dataset_collection_annotation_association) + assert collection_consists_of_objects(stored_obj.ratings, history_dataset_collection_rating_association) assert stored_obj.job_state_summary # this is a view; TODO: can we test this better? delete_from_database(session, copied_to_hdca) @@ -2117,7 +2139,7 @@ class TestImplicitCollectionJobs(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) - assert stored_obj.jobs == [implicit_collection_jobs_job_association] + assert collection_consists_of_objects(stored_obj.jobs, implicit_collection_jobs_job_association) class TestImplicitCollectionJobsJobAssociation(BaseTest): @@ -2492,31 +2514,27 @@ class TestJob(BaseTest): assert stored_obj.library_folder_id == library_folder.id assert stored_obj.session_id == galaxy_session.id assert stored_obj.user_id == user.id - assert stored_obj.parameters == [job_parameter] - assert stored_obj.input_datasets == [job_to_input_dataset_association] - assert stored_obj.input_dataset_collections == [job_to_input_dataset_collection_association] - assert (stored_obj.input_dataset_collection_elements - == [job_to_input_dataset_collection_element_association]) - assert (stored_obj.output_dataset_collection_instances - == [job_to_output_dataset_collection_association]) - assert (stored_obj.output_dataset_collections - == [job_to_implicit_output_dataset_collection_association]) - assert stored_obj.post_job_actions == [post_job_action_association] - assert stored_obj.input_library_datasets == [job_to_input_library_dataset_association] - assert stored_obj.output_library_datasets == [job_to_output_library_dataset_association] - assert stored_obj.external_output_metadata == [job_external_output_metadata] - assert stored_obj.tasks == [task] - assert stored_obj.output_datasets == [job_to_output_dataset_association] + assert collection_consists_of_objects(stored_obj.parameters, job_parameter) + assert collection_consists_of_objects(stored_obj.input_datasets, job_to_input_dataset_association) + assert collection_consists_of_objects(stored_obj.input_dataset_collections, job_to_input_dataset_collection_association) + assert collection_consists_of_objects(stored_obj.input_dataset_collection_elements, job_to_input_dataset_collection_element_association) + assert collection_consists_of_objects(stored_obj.output_dataset_collection_instances, job_to_output_dataset_collection_association) + assert collection_consists_of_objects(stored_obj.output_dataset_collections, job_to_implicit_output_dataset_collection_association) + assert collection_consists_of_objects(stored_obj.post_job_actions, post_job_action_association) + assert collection_consists_of_objects(stored_obj.input_library_datasets, job_to_input_library_dataset_association) + assert collection_consists_of_objects(stored_obj.output_library_datasets, job_to_output_library_dataset_association) + assert collection_consists_of_objects(stored_obj.external_output_metadata, job_external_output_metadata) + assert collection_consists_of_objects(stored_obj.tasks, task) + assert collection_consists_of_objects(stored_obj.output_datasets, job_to_output_dataset_association) assert job_state_history in stored_obj.state_history # sufficient for test - assert stored_obj.text_metrics == [job_metric_text] - assert stored_obj.numeric_metrics == [job_metric_numeric] - assert stored_obj.interactivetool_entry_points == [interactive_tool_entry_point] + assert collection_consists_of_objects(stored_obj.text_metrics, job_metric_text) + assert collection_consists_of_objects(stored_obj.numeric_metrics, job_metric_numeric) + assert collection_consists_of_objects(stored_obj.interactivetool_entry_points, interactive_tool_entry_point) assert (stored_obj.implicit_collection_jobs_association == implicit_collection_jobs_job_association) assert stored_obj.container == job_container_association assert stored_obj.data_manager_association == data_manager_job_association - assert (stored_obj.history_dataset_collection_associations - == [history_dataset_collection_association]) + assert collection_consists_of_objects(stored_obj.history_dataset_collection_associations, history_dataset_collection_association) assert stored_obj.workflow_invocation_step == workflow_invocation_step @@ -3038,7 +3056,7 @@ class TestLibrary(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.root_folder.id == library_folder.id - assert stored_obj.actions == [library_permission] + assert collection_consists_of_objects(stored_obj.actions, library_permission) class TestLibraryDataset(BaseTest): @@ -3102,7 +3120,7 @@ class TestLibraryDataset(BaseTest): == library_dataset_dataset_association.id) assert stored_obj.folder.id == library_folder.id assert stored_obj.expired_datasets[0].id == ldda.id - assert stored_obj.actions == [library_dataset_permission] + assert collection_consists_of_objects(stored_obj.actions, library_dataset_permission) delete_from_database(session, ldda) @@ -3181,9 +3199,9 @@ class TestLibraryDatasetCollectionAssociation(BaseTest): stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.collection.id == dataset_collection.id assert stored_obj.folder.id == library_folder.id - assert stored_obj.tags == [library_dataset_collection_tag_association] - assert stored_obj.annotations == [library_dataset_collection_annotation_association] - assert stored_obj.ratings == [library_dataset_collection_rating_association] + assert collection_consists_of_objects(stored_obj.tags, library_dataset_collection_tag_association) + assert collection_consists_of_objects(stored_obj.annotations, library_dataset_collection_annotation_association) + assert collection_consists_of_objects(stored_obj.ratings, library_dataset_collection_rating_association) class TestLibraryDatasetCollectionRatingAssociation(BaseTest): @@ -3391,15 +3409,14 @@ class TestLibraryDatasetDatasetAssociation(BaseTest): == copied_from_ldda.id) assert stored_obj.extended_metadata.id == extended_metadata.id assert stored_obj.user.id == user.id - assert stored_obj.tags == [library_dataset_dataset_association_tag_association] - assert stored_obj.actions == [library_dataset_dataset_association_permission] - assert stored_obj.copied_to_history_dataset_associations == [copied_to_hda] - assert stored_obj.copied_to_library_dataset_dataset_associations == [copied_to_ldda] - assert stored_obj.implicitly_converted_datasets == [icda] - assert stored_obj.implicitly_converted_parent_datasets == [icpda] - assert stored_obj.dependent_jobs == [job_to_input_library_dataset_association] - assert (stored_obj.creating_job_associations - == [job_to_output_library_dataset_association]) + assert collection_consists_of_objects(stored_obj.tags, library_dataset_dataset_association_tag_association) + assert collection_consists_of_objects(stored_obj.actions, library_dataset_dataset_association_permission) + assert collection_consists_of_objects(stored_obj.copied_to_history_dataset_associations, copied_to_hda) + assert collection_consists_of_objects(stored_obj.copied_to_library_dataset_dataset_associations, copied_to_ldda) + assert collection_consists_of_objects(stored_obj.implicitly_converted_datasets, icda) + assert collection_consists_of_objects(stored_obj.implicitly_converted_parent_datasets, icpda) + assert collection_consists_of_objects(stored_obj.dependent_jobs, job_to_input_library_dataset_association) + assert collection_consists_of_objects(stored_obj.creating_job_associations, job_to_output_library_dataset_association) delete_from_database(session, persisted) @@ -3614,10 +3631,10 @@ class TestLibraryFolder(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.parent.id == library_folder.id - assert stored_obj.folders == [folder1] - assert stored_obj.active_folders == [folder1] - assert stored_obj.library_root == [library] - assert stored_obj.actions == [library_folder_permission] + assert collection_consists_of_objects(stored_obj.folders, folder1) + assert collection_consists_of_objects(stored_obj.active_folders, folder1) + assert collection_consists_of_objects(stored_obj.library_root, library) + assert collection_consists_of_objects(stored_obj.actions, library_folder_permission) # use identity equality instread of object equality. assert stored_obj.datasets[0].id == library_dataset.id assert stored_obj.active_datasets[0].id == library_dataset.id @@ -3943,12 +3960,12 @@ class TestPage(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.user.id == user.id - assert stored_obj.revisions == [page_revision] + assert collection_consists_of_objects(stored_obj.revisions, page_revision) assert stored_obj.latest_revision.id == page_revision.id - assert stored_obj.tags == [page_tag_association] - assert stored_obj.annotations == [page_annotation_association] - assert stored_obj.ratings == [page_rating_association] - assert stored_obj.users_shared_with == [page_user_share_association] + assert collection_consists_of_objects(stored_obj.tags, page_tag_association) + assert collection_consists_of_objects(stored_obj.annotations, page_annotation_association) + assert collection_consists_of_objects(stored_obj.ratings, page_rating_association) + assert collection_consists_of_objects(stored_obj.users_shared_with, page_user_share_association) # This doesn't test the average amount, just the mapping. assert stored_obj.average_rating == page_rating_association.rating @@ -4223,9 +4240,9 @@ class TestQuota(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) - assert stored_obj.default == [default_quota_association] - assert stored_obj.groups == [group_quota_association] - assert stored_obj.users == [user_quota_association] + assert collection_consists_of_objects(stored_obj.default, default_quota_association) + assert collection_consists_of_objects(stored_obj.groups, group_quota_association) + assert collection_consists_of_objects(stored_obj.users, user_quota_association) class TestRole(BaseTest): @@ -4267,9 +4284,9 @@ class TestRole(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) - assert stored_obj.dataset_actions == [dataset_permission] - assert stored_obj.groups == [group_role_association] - assert stored_obj.users == [user_role_association] + assert collection_consists_of_objects(stored_obj.dataset_actions, dataset_permission) + assert collection_consists_of_objects(stored_obj.groups, group_role_association) + assert collection_consists_of_objects(stored_obj.users, user_role_association) class TestStoredWorkflow(BaseTest): @@ -4352,14 +4369,14 @@ class TestStoredWorkflow(BaseTest): assert stored_obj.user.id == user.id assert stored_obj.latest_workflow.id == workflow.id assert stored_obj.workflows[0].id == wf.id - assert stored_obj.annotations == [stored_workflow_annotation_association] - assert stored_obj.ratings == [stored_workflow_rating_association] + assert collection_consists_of_objects(stored_obj.annotations, stored_workflow_annotation_association) + assert collection_consists_of_objects(stored_obj.ratings, stored_workflow_rating_association) # This doesn't test the average amount, just the mapping. assert stored_obj.average_rating == stored_workflow_rating_association.rating assert collection_consists_of_objects( stored_obj.tags, stored_workflow_tag_association, tag_assoc2) - assert stored_obj.owner_tags == [tag_assoc2] - assert stored_obj.users_shared_with == [stored_workflow_user_share_association] + assert collection_consists_of_objects(stored_obj.owner_tags, tag_assoc2) + assert collection_consists_of_objects(stored_obj.users_shared_with, stored_workflow_user_share_association) delete_from_database(session, [wf, tag_assoc2]) @@ -4556,7 +4573,7 @@ class TestTag(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.parent.id == parent_tag.id - assert stored_obj.children == [child_tag] + assert collection_consists_of_objects(stored_obj.children, child_tag) class TestTask(BaseTest): @@ -4633,8 +4650,8 @@ class TestTask(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.job.id == job.id - assert stored_obj.numeric_metrics == [task_metric_numeric] - assert stored_obj.text_metrics == [task_metric_text] + assert collection_consists_of_objects(stored_obj.numeric_metrics, task_metric_numeric) + assert collection_consists_of_objects(stored_obj.text_metrics, task_metric_text) class TestTaskMetricNumeric(BaseTest): @@ -4818,23 +4835,23 @@ class TestUser(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.values.id == form_values.id - assert stored_obj.addresses == [user_address] - assert stored_obj.cloudauthz == [cloud_authz] - assert stored_obj.custos_auth == [custos_authnz_token] - assert stored_obj.default_permissions == [default_user_permissions] - assert stored_obj.groups == [user_group_association] + assert collection_consists_of_objects(stored_obj.addresses, user_address) + assert collection_consists_of_objects(stored_obj.cloudauthz, cloud_authz) + assert collection_consists_of_objects(stored_obj.custos_auth, custos_authnz_token) + assert collection_consists_of_objects(stored_obj.default_permissions, default_user_permissions) + assert collection_consists_of_objects(stored_obj.groups, user_group_association) assert collection_consists_of_objects(stored_obj.histories, history1, history2) - assert stored_obj.active_histories == [history1] - assert stored_obj.galaxy_sessions == [galaxy_session] - assert stored_obj.quotas == [user_quota_association] - assert stored_obj.social_auth == [user_authnz_token] - assert stored_obj.stored_workflow_menu_entries == [swme] + assert collection_consists_of_objects(stored_obj.active_histories, history1) + assert collection_consists_of_objects(stored_obj.galaxy_sessions, galaxy_session) + assert collection_consists_of_objects(stored_obj.quotas, user_quota_association) + assert collection_consists_of_objects(stored_obj.social_auth, user_authnz_token) + assert collection_consists_of_objects(stored_obj.stored_workflow_menu_entries, swme) assert user_preference in stored_obj._preferences.values() - assert stored_obj.api_keys == [api_keys] - assert stored_obj.data_manager_histories == [data_manager_history_association] + assert collection_consists_of_objects(stored_obj.api_keys, api_keys) + assert collection_consists_of_objects(stored_obj.data_manager_histories, data_manager_history_association) assert collection_consists_of_objects(stored_obj.roles, private_user_role, non_private_user_role) - assert stored_obj.non_private_roles == [non_private_user_role] - assert stored_obj.stored_workflows == [stored_workflow] + assert collection_consists_of_objects(stored_obj.non_private_roles, non_private_user_role) + assert collection_consists_of_objects(stored_obj.stored_workflows, stored_workflow) delete_from_database(session, [history1, history2, swme, private_user_role, non_private_user_role]) @@ -5131,13 +5148,13 @@ class TestVisualization(BaseTest): stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.user.id == user.id assert stored_obj.latest_revision.id == visualization_revision.id - assert stored_obj.revisions == [revision2] - assert stored_obj.tags == [visualization_tag_association] - assert stored_obj.annotations == [visualization_annotation_association] - assert stored_obj.ratings == [visualization_rating_association] + assert collection_consists_of_objects(stored_obj.revisions, revision2) + assert collection_consists_of_objects(stored_obj.tags, visualization_tag_association) + assert collection_consists_of_objects(stored_obj.annotations, visualization_annotation_association) + assert collection_consists_of_objects(stored_obj.ratings, visualization_rating_association) # This doesn't test the average amount, just the mapping. assert stored_obj.average_rating == visualization_rating_association.rating - assert stored_obj.users_shared_with == [visualization_user_share_association] + assert collection_consists_of_objects(stored_obj.users_shared_with, visualization_user_share_association) delete_from_database(session, revision2) @@ -5467,18 +5484,16 @@ class TestWorkflowInvocation(BaseTest): assert stored_obj.workflow.id == workflow.id assert stored_obj.history.id == history.id - assert stored_obj.input_parameters == [workflow_request_input_parameter] - assert stored_obj.step_states == [workflow_request_step_state] - assert stored_obj.input_step_parameters == [workflow_request_input_step_parameter] - assert stored_obj.input_datasets == [workflow_request_to_input_dataset_association] - assert (stored_obj.input_dataset_collections - == [workflow_request_to_input_dataset_collection_association]) - assert stored_obj.subworkflow_invocations == [subworkflow_invocation_assoc] - assert stored_obj.steps == [workflow_invocation_step] - assert (stored_obj.output_dataset_collections - == [workflow_invocation_output_dataset_collection_association]) - assert stored_obj.output_datasets == [workflow_invocation_output_dataset_association] - assert stored_obj.output_values == [workflow_invocation_output_value] + assert collection_consists_of_objects(stored_obj.input_parameters, workflow_request_input_parameter) + assert collection_consists_of_objects(stored_obj.step_states, workflow_request_step_state) + assert collection_consists_of_objects(stored_obj.input_step_parameters, workflow_request_input_step_parameter) + assert collection_consists_of_objects(stored_obj.input_datasets, workflow_request_to_input_dataset_association) + assert collection_consists_of_objects(stored_obj.input_dataset_collections, workflow_request_to_input_dataset_collection_association) + assert collection_consists_of_objects(stored_obj.subworkflow_invocations, subworkflow_invocation_assoc) + assert collection_consists_of_objects(stored_obj.steps, workflow_invocation_step) + assert collection_consists_of_objects(stored_obj.output_dataset_collections, workflow_invocation_output_dataset_collection_association) + assert collection_consists_of_objects(stored_obj.output_datasets, workflow_invocation_output_dataset_association) + assert collection_consists_of_objects(stored_obj.output_values, workflow_invocation_output_value) delete_from_database(session, subworkflow_invocation_assoc) @@ -5721,10 +5736,8 @@ class TestWorkflowInvocationStep(BaseTest): assert stored_obj.workflow_step.id == workflow_step.id assert stored_obj.job.id == job.id assert stored_obj.implicit_collection_jobs.id == implicit_collection_jobs.id - assert (stored_obj.output_dataset_collections - == [workflow_invocation_step_output_dataset_collection_association]) - assert (stored_obj.output_datasets - == [workflow_invocation_step_output_dataset_association]) + assert collection_consists_of_objects(stored_obj.output_dataset_collections, workflow_invocation_step_output_dataset_collection_association) + assert collection_consists_of_objects(stored_obj.output_datasets, workflow_invocation_step_output_dataset_association) assert stored_obj.output_value.id == workflow_invocation_output_value.id def test_subworkflow_invocation_attribute( @@ -6205,7 +6218,7 @@ class TestWorkflowStep(BaseTest): assert stored_obj.workflow.id == workflow.id assert stored_obj.subworkflow.id == subworkflow.id assert stored_obj.dynamic_tool.id == dynamic_tool.id - assert stored_obj.output_connections == [workflow_step_connection_out] + assert collection_consists_of_objects(stored_obj.output_connections, workflow_step_connection_out) persisted = [subworkflow, workflow_step_connection_in, workflow_step_connection_out] delete_from_database(session, persisted) @@ -6351,7 +6364,7 @@ class TestWorkflowStepInput(BaseTest): with dbcleanup(session, obj) as obj_id: stored_obj = get_stored_obj(session, cls_, obj_id) assert stored_obj.workflow_step_id == workflow_step.id - assert stored_obj.connections == [workflow_step_connection] + assert collection_consists_of_objects(stored_obj.connections, workflow_step_connection) class TestWorkflowStepTagAssociation(BaseTest):