Tool shed functional test enhancements. Functional tests for displaying images on a tool's page. Updated test string in tool migration stage test.

This commit is contained in:
Dave Bouvier
2013-04-03 11:56:58 -04:00
parent 9f3568e974
commit 6eb98038d4
5 changed files with 216 additions and 2 deletions
+5
View File
@@ -838,6 +838,11 @@ class ShedTwillTestCase( TwillTestCase ):
self.visit_url( url )
self.check_for_strings( strings_displayed, strings_not_displayed )
def load_page_for_installed_tool( self, tool_guid, strings_displayed=[], strings_not_displayed=[] ):
url = '/tool_runner?tool_id=%s' % tool_guid
self.visit_galaxy_url( url )
self.check_for_strings( strings_displayed, strings_not_displayed )
def load_workflow_image_in_tool_shed( self, repository, workflow_name, changeset_revision=None, strings_displayed=[], strings_not_displayed=[] ):
if not changeset_revision:
changeset_revision = self.get_repository_tip( repository )
@@ -0,0 +1,86 @@
from tool_shed.base.twilltestcase import ShedTwillTestCase, common, os
import tool_shed.base.test_db_util as test_db_util
import logging
log = logging.getLogger(__name__)
repository_name = 'htseq_count_0140'
repository_description = "Converter: BED to GFF"
repository_long_description = "Convert bed to gff"
category_name = 'Test 0140 Tool Help Images'
category_description = 'Test 0140 Tool Help Images'
'''
1) Create and populate the htseq_count_0140 repository.
2) Visit the manage_repository page.
3) Simulate clicking the htseq_count tool button.
4) On the resulting display tool page, look for the image string similar to the following string where the encoded repository_id is previously determined:
src="/repository/static/images/<id>/count_modes.png"
'''
class TestToolHelpImages( ShedTwillTestCase ):
'''Test features related to tool help images.'''
def test_0000_initiate_users( self ):
"""Create necessary user accounts."""
self.logout()
self.login( email=common.test_user_1_email, username=common.test_user_1_name )
test_user_1 = test_db_util.get_user( common.test_user_1_email )
assert test_user_1 is not None, 'Problem retrieving user with email %s from the database' % test_user_1_email
test_user_1_private_role = test_db_util.get_private_role( test_user_1 )
self.logout()
self.login( email=common.admin_email, username=common.admin_username )
admin_user = test_db_util.get_user( common.admin_email )
assert admin_user is not None, 'Problem retrieving user with email %s from the database' % admin_email
admin_user_private_role = test_db_util.get_private_role( admin_user )
def test_0005_create_htseq_count_repository( self ):
'''Create and populate htseq_count_0140.'''
'''
We are at step 1 - Create and populate the htseq_count_0140 repository.
Create the htseq_count_0140 repository and upload the tarball.
'''
category = self.create_category( name=category_name, description=category_description )
self.logout()
self.login( email=common.test_user_1_email, username=common.test_user_1_name )
# Create a repository named htseq_count_0140 owned by user1.
repository = self.get_or_create_repository( name=repository_name,
description=repository_description,
long_description=repository_long_description,
owner=common.test_user_1_name,
category_id=self.security.encode_id( category.id ),
strings_displayed=[] )
# Upload htseq_count.tar to the repository.
self.upload_file( repository,
filename='htseq_count/htseq_count.tar',
filepath=None,
valid_tools_only=True,
uncompress_file=False,
remove_repo_files_not_in_tar=False,
commit_message='Uploaded htseq_count.tar.',
strings_displayed=[],
strings_not_displayed=[] )
def test_0010_load_tool_page( self ):
'''Load the tool page and check for the image.'''
'''
We are at step 2
Visit the manage_repository page and the tool page, and look for the image url
similar to the following string:
src="/repository/static/images/<id>/count_modes.png"
'''
repository = test_db_util.get_repository_by_name_and_owner( repository_name, common.test_user_1_name )
# Get the repository tip.
changeset_revision = self.get_repository_tip( repository )
self.display_manage_repository_page( repository )
# Generate the image path.
image_path = 'src="/repository/static/images/%s/count_modes.png"' % self.security.encode_id( repository.id )
# The repository uploaded in this test should only have one metadata revision, with one tool defined, which
# should be the tool that contains a link to the image.
repository_metadata = repository.metadata_revisions[ 0 ].metadata
tool_path = repository_metadata[ 'tools' ][ 0 ][ 'tool_config' ]
self.load_display_tool_page( repository, tool_path, changeset_revision, strings_displayed=[ image_path ], strings_not_displayed=[] )
@@ -1,7 +1,8 @@
from tool_shed.base.twilltestcase import ShedTwillTestCase, common, os
import tool_shed.base.test_db_util as test_db_util
import logging
log = logging.getLogger(__name__)
log = logging.getLogger( __name__ )
datatypes_repository_name = 'emboss_datatypes_0430'
datatypes_repository_description = 'Galaxy applicable datatypes for EMBOSS for test 0430'
@@ -0,0 +1,119 @@
from tool_shed.base.twilltestcase import ShedTwillTestCase, common, os
import tool_shed.base.test_db_util as test_db_util
import logging
log = logging.getLogger(__name__)
repository_name = 'htseq_count_0140'
repository_description = "Converter: BED to GFF"
repository_long_description = "Convert bed to gff"
category_name = 'Test 0140 Tool Help Images'
category_description = 'Test 0140 Tool Help Images'
'''
1) Create and populate the htseq_count_0140 repository.
2) Visit the manage_repository page, then the tool page, and look for the image string
similar to the following string where the encoded repository_id is previously determined:
src="/repository/static/images/<id>/count_modes.png"
Galaxy side:
1) Install the htseq_count repository from the tool shed into Galaxy.
2) In the center tool panel, look for the image string similar to the following string where the encoded_repository_id is previously determined as the installed ToolShedRepository id:
src="/tool_runner/static/images/<id>/count_modes.png"
'''
class TestToolHelpImages( ShedTwillTestCase ):
'''Test features related to tool help images.'''
def test_0000_initiate_users( self ):
"""Create necessary user accounts."""
self.logout()
self.login( email=common.test_user_1_email, username=common.test_user_1_name )
test_user_1 = test_db_util.get_user( common.test_user_1_email )
assert test_user_1 is not None, 'Problem retrieving user with email %s from the database' % test_user_1_email
test_user_1_private_role = test_db_util.get_private_role( test_user_1 )
self.logout()
self.login( email=common.admin_email, username=common.admin_username )
admin_user = test_db_util.get_user( common.admin_email )
assert admin_user is not None, 'Problem retrieving user with email %s from the database' % admin_email
admin_user_private_role = test_db_util.get_private_role( admin_user )
def test_0005_create_htseq_count_repository( self ):
'''Create and populate htseq_count_0140.'''
'''
We are at step 1 - Create and populate the htseq_count_0140 repository.
Create the htseq_count_0140 repository and upload the tarball.
'''
category = self.create_category( name=category_name, description=category_description )
self.logout()
self.login( email=common.test_user_1_email, username=common.test_user_1_name )
# Create a repository named htseq_count_0140 owned by user1.
repository = self.get_or_create_repository( name=repository_name,
description=repository_description,
long_description=repository_long_description,
owner=common.test_user_1_name,
category_id=self.security.encode_id( category.id ),
strings_displayed=[] )
if self.repository_is_new( repository ):
# Upload htseq_count.tar to the repository if it hasn't already been populated.
self.upload_file( repository,
filename='htseq_count/htseq_count.tar',
filepath=None,
valid_tools_only=True,
uncompress_file=False,
remove_repo_files_not_in_tar=False,
commit_message='Uploaded htseq_count.tar.',
strings_displayed=[],
strings_not_displayed=[] )
def test_0010_load_tool_page( self ):
'''Load the tool page and check for the image URL.'''
'''
This is a duplicate of test method _0010 in test_0140_tool_help_images.
'''
repository = test_db_util.get_repository_by_name_and_owner( repository_name, common.test_user_1_name )
# Get the repository tip.
changeset_revision = self.get_repository_tip( repository )
self.display_manage_repository_page( repository )
# Generate the image path.
image_path = 'src="/repository/static/images/%s/count_modes.png"' % self.security.encode_id( repository.id )
# The repository uploaded in this test should only have one metadata revision, with one tool defined, which
# should be the tool that contains a link to the image.
repository_metadata = repository.metadata_revisions[ 0 ].metadata
tool_path = repository_metadata[ 'tools' ][ 0 ][ 'tool_config' ]
self.load_display_tool_page( repository, tool_path, changeset_revision, strings_displayed=[ image_path ], strings_not_displayed=[] )
def test_0015_install_htseq_count_repository( self ):
'''Install the htseq_count_0140 repository into Galaxy.'''
'''
We are at step 1 - Install the htseq_count_0140 repository from the tool shed into Galaxy.
'''
repository = test_db_util.get_repository_by_name_and_owner( repository_name, common.test_user_1_name )
self.galaxy_logout()
self.galaxy_login( email=common.admin_email, username=common.admin_username )
self.install_repository( 'htseq_count_0140',
'user1',
category_name,
strings_displayed=[],
install_tool_dependencies=False,
install_repository_dependencies=False )
def test_0020_verify_tool_image_link( self ):
'''Load the tool page and verify the image link.'''
'''
We are at step 2
In the center tool panel, look for the image string similar to the following string where the
encoded_repository_id is previously determined as the installed ToolShedRepository id:
src="/tool_runner/static/images/<id>/count_modes.png"
'''
repository = test_db_util.get_installed_repository_by_name_owner( repository_name, common.test_user_1_name )
image_path = 'src="/tool_runner/static/images/%s/count_modes.png"' % self.security.encode_id( repository.id )
# The repository uploaded in this test should only define one tool, which should be the tool that contains a link to an image.
repository_metadata = repository.metadata
tool_id = repository_metadata[ 'tools' ][ 0 ][ 'guid' ]
self.load_page_for_installed_tool( tool_id, strings_displayed=[ image_path ] )
@@ -1,8 +1,10 @@
from tool_shed.base.twilltestcase import ShedTwillTestCase, common, os
import tool_shed.base.test_db_util as test_db_util
class TestToolMigrationStages( ShedTwillTestCase ):
'''Verify that the migration stages display correctly.'''
def test_0000_initiate_users( self ):
"""Create necessary user accounts and login as an admin user."""
self.logout()
@@ -15,11 +17,12 @@ class TestToolMigrationStages( ShedTwillTestCase ):
admin_user = test_db_util.get_user( common.admin_email )
assert admin_user is not None, 'Problem retrieving user with email %s from the database' % common.admin_email
admin_user_private_role = test_db_util.get_private_role( admin_user )
def test_0005_load_migration_stages_page( self ):
'''Load the migration page and check for the appropriate migration stages.'''
stages = [
'emboss_5', 'emboss_datatypes', 'emboss', '5.0.0', '0002_tools.sh',
'freebayes', '0.9.4_a46483351fd0196637614121868fb5c386612b55', 'samtools', '0.1.18', 'FreeBayes requires g++',
'freebayes', '0.9.4_9696d0ce8a962f7bb61c4791be5ce44312b81cf8', 'samtools', '0.1.18', 'FreeBayes requires g++',
'ncurses', 'zlib', '0003_tools.sh',
'ncbi_blast_plus', 'blast_datatypes', 'blast+', '2.2.26+', 'blast.ncbi.nlm.nih.gov', 'NCBI BLAST+ tools', '0004_tools.sh',
'bwa_wrappers', '0.5.9', 'zlib and libpthread', 'Map with BWA for Illumina', '0005_tools.sh',