/test/functional/test_library_templates.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 740 lines · 687 code · 17 blank · 36 comment · 14 complexity · fde7ed76caaeb1b62259f37bbee4e6fd MD5 · raw file

  1. from base.twilltestcase import TwillTestCase
  2. from base.test_db_util import (
  3. get_user,
  4. get_private_role,
  5. get_form,
  6. get_library,
  7. get_folder,
  8. get_user_address,
  9. get_latest_ldda_by_name,
  10. get_latest_hda,
  11. mark_obj_deleted,
  12. refresh
  13. )
  14. import galaxy.model
  15. AddressField_form = None
  16. CheckboxField_form = None
  17. SelectField_form = None
  18. TextArea_form = None
  19. TextField_form = None
  20. WorkflowField_form = None
  21. address_field_name = checkbox_field_name = select_field_name = None
  22. workflow_field_name = textfield_name = textarea_name = None
  23. user_address1 = user_address2 = None
  24. ldda1 = library1 = library2 = library3 = library4 = library5 = library6 = None
  25. folder1 = folder2 = folder3 = folder4 = folder5 = folder6 = None
  26. admin_user = None
  27. regular_user1 = regular_user2 = regular_user3 = None
  28. class TestLibraryFeatures( TwillTestCase ):
  29. def test_000_initiate_users( self ):
  30. """Ensuring all required user accounts exist"""
  31. self.logout()
  32. self.login( email='test1@bx.psu.edu', username='regular-user1' )
  33. global regular_user1
  34. regular_user1 = get_user( 'test1@bx.psu.edu' )
  35. assert regular_user1 is not None, 'Problem retrieving user with email "test1@bx.psu.edu" from the database'
  36. global regular_user1_private_role
  37. regular_user1_private_role = get_private_role( regular_user1 )
  38. self.logout()
  39. self.login( email='test2@bx.psu.edu', username='regular-user2' )
  40. global regular_user2
  41. regular_user2 = get_user( 'test2@bx.psu.edu' )
  42. assert regular_user2 is not None, 'Problem retrieving user with email "test2@bx.psu.edu" from the database'
  43. global regular_user2_private_role
  44. regular_user2_private_role = get_private_role( regular_user2 )
  45. self.logout()
  46. self.login( email='test3@bx.psu.edu', username='regular-user3' )
  47. global regular_user3
  48. regular_user3 = get_user( 'test3@bx.psu.edu' )
  49. assert regular_user3 is not None, 'Problem retrieving user with email "test3@bx.psu.edu" from the database'
  50. global regular_user3_private_role
  51. regular_user3_private_role = get_private_role( regular_user3 )
  52. self.logout()
  53. self.login( email='test@bx.psu.edu', username='admin-user' )
  54. global admin_user
  55. admin_user = get_user( 'test@bx.psu.edu' )
  56. assert admin_user is not None, 'Problem retrieving user with email "test@bx.psu.edu" from the database'
  57. global admin_user_private_role
  58. admin_user_private_role = get_private_role( admin_user )
  59. def test_005_create_library_templates( self ):
  60. """Testing creating several LibraryInformationTemplate form definitions"""
  61. # Logged in as admin_user
  62. for type in [ 'AddressField', 'CheckboxField', 'SelectField', 'TextArea', 'TextField', 'WorkflowField' ]:
  63. field_name = type.lower()
  64. form_desc = '%s description' % type
  65. num_options = 0
  66. if type == 'SelectField':
  67. # Pass number of options we want in our SelectField
  68. num_options = 2
  69. # Create form for library template
  70. self.create_form( name=type,
  71. description=form_desc,
  72. form_type=galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE,
  73. field_type=type,
  74. num_options=num_options,
  75. field_name=field_name )
  76. # Get all of the new form definitions for later use
  77. global AddressField_form
  78. AddressField_form = get_form( 'AddressField' )
  79. # NOTE: each of these names need to be the same as field_name defined above
  80. # for each type.
  81. global address_field_name
  82. address_field_name = 'addressfield'
  83. global CheckboxField_form
  84. CheckboxField_form = get_form( 'CheckboxField' )
  85. global checkbox_field_name
  86. checkbox_field_name = 'checkboxfield'
  87. global SelectField_form
  88. SelectField_form = get_form( 'SelectField' )
  89. global select_field_name
  90. select_field_name = 'selectfield'
  91. global TextArea_form
  92. TextArea_form = get_form( 'TextArea' )
  93. global textarea_name
  94. textarea_name = 'textarea'
  95. global TextField_form
  96. TextField_form = get_form( 'TextField' )
  97. global textfield_name
  98. textfield_name = 'textfield'
  99. global WorkflowField_form
  100. WorkflowField_form = get_form( 'WorkflowField' )
  101. global workflow_field_name
  102. workflow_field_name = 'workflowfield'
  103. def test_010_create_libraries( self ):
  104. """Testing creating a new library for each template"""
  105. # Logged in as admin_user
  106. # library1 -> AddressField
  107. # library2 -> CheckboxField
  108. # library3 -> SelectField
  109. # library4 -> TextArea
  110. # library5 -> TextField
  111. # library6 -> WorkflowField
  112. for index, form in enumerate( [ AddressField_form, CheckboxField_form, SelectField_form, TextArea_form, TextField_form, WorkflowField_form ] ):
  113. name = 'library%s' % str( index + 1 )
  114. description = '%s description' % name
  115. synopsis = '%s synopsis' % name
  116. self.create_library( name=name, description=description, synopsis=synopsis )
  117. # Get the libraries for later use
  118. global library1
  119. library1 = get_library( 'library1', 'library1 description', 'library1 synopsis' )
  120. global library2
  121. library2 = get_library( 'library2', 'library2 description', 'library2 synopsis' )
  122. global library3
  123. library3 = get_library( 'library3', 'library3 description', 'library3 synopsis' )
  124. global library4
  125. library4 = get_library( 'library4', 'library4 description', 'library4 synopsis' )
  126. global library5
  127. library5 = get_library( 'library5', 'library5 description', 'library5 synopsis' )
  128. global library6
  129. library6 = get_library( 'library6', 'library6 description', 'library6 synopsis' )
  130. def test_015_add_template_to_library1( self ):
  131. """Testing add an inheritable template containing an AddressField to library1"""
  132. # Logged in as admin_user
  133. # Add a template containing an AddressField to library1
  134. self.add_template( cntrller='library_admin',
  135. item_type='library',
  136. form_type=galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE.replace( ' ', '+' ),
  137. form_id=self.security.encode_id( AddressField_form.id ),
  138. form_name=AddressField_form.name,
  139. library_id=self.security.encode_id( library1.id ) )
  140. def test_020_add_folder_to_library1( self ):
  141. """Testing adding a folder to library1"""
  142. # Logged in as admin_user
  143. # Add a folder to library1
  144. folder = library1.root_folder
  145. name = "folder"
  146. description = "folder description"
  147. self.add_folder( 'library_admin',
  148. self.security.encode_id( library1.id ),
  149. self.security.encode_id( folder.id ),
  150. name=name,
  151. description=description )
  152. global folder1
  153. folder1 = get_folder( folder.id, name, description )
  154. def test_025_check_library1( self ):
  155. """Checking library1 and its root folder"""
  156. # Logged in as admin_user
  157. self.browse_library( cntrller='library_admin',
  158. library_id=self.security.encode_id( library1.id ),
  159. strings_displayed=[ folder1.name, folder1.description ] )
  160. # Make sure the template and contents were inherited to folder1
  161. self.folder_info( cntrller='library_admin',
  162. folder_id=self.security.encode_id( folder1.id ),
  163. library_id=self.security.encode_id( library1.id ),
  164. template_refresh_field_name=address_field_name,
  165. strings_displayed=[ AddressField_form.name,
  166. 'This is an inherited template and is not required to be used with this folder' ] )
  167. def test_030_add_dataset_to_folder1( self ):
  168. """Testing adding a ldda1 to folder1, and adding a new UserAddress on the upload form."""
  169. # Logged in as admin_user
  170. # The AddressField template should be inherited to the library dataset upload form. Passing
  171. # the value 'new' should submit the form via refresh_on_change and allow new UserAddress information
  172. # to be posted as part of the upload.
  173. filename = '1.bed'
  174. ldda_message = '1.bed message'
  175. short_desc = 'Office'
  176. self.upload_library_dataset( cntrller='library_admin',
  177. library_id=self.security.encode_id( library1.id ),
  178. folder_id=self.security.encode_id( folder1.id ),
  179. filename=filename,
  180. file_type='bed',
  181. dbkey='hg18',
  182. template_refresh_field_name=address_field_name,
  183. ldda_message=ldda_message,
  184. template_refresh_field_contents='new',
  185. template_fields=[ ( '%s_short_desc' % address_field_name, short_desc ),
  186. ( '%s_name' % address_field_name, 'Dick' ),
  187. ( '%s_institution' % address_field_name, 'PSU' ),
  188. ( '%s_address' % address_field_name, '32 O Street' ),
  189. ( '%s_city' % address_field_name, 'Anywhere' ),
  190. ( '%s_state' % address_field_name, 'AK' ),
  191. ( '%s_postal_code' % address_field_name, '0000000' ),
  192. ( '%s_country' % address_field_name, 'USA' ) ],
  193. strings_displayed=[ 'Upload files' ] )
  194. global user_address1
  195. user_address1 = get_user_address( admin_user, short_desc )
  196. assert user_address1 is not None, 'Problem retrieving user_address1 from the database'
  197. global ldda1
  198. ldda1 = get_latest_ldda_by_name( filename )
  199. assert ldda1 is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda1 from the database'
  200. self.browse_library( cntrller='library_admin',
  201. library_id=self.security.encode_id( library1.id ),
  202. strings_displayed=[ ldda1.name, ldda1.message, 'bed' ] )
  203. # Make sure the library template contents were correctly saved
  204. self.ldda_edit_info( 'library_admin',
  205. self.security.encode_id( library1.id ),
  206. self.security.encode_id( folder1.id ),
  207. self.security.encode_id( ldda1.id ),
  208. ldda1.name,
  209. strings_displayed=[ 'Dick' ] )
  210. def test_035_edit_contents_of_ldda1_tempplate( self ):
  211. """Testing editing the contents of ldda1 AddressField template by adding a new user_address"""
  212. short_desc = 'Home'
  213. # Now add a new user_address to ldda1
  214. self.ldda_edit_info( 'library_admin',
  215. self.security.encode_id( library1.id ),
  216. self.security.encode_id( folder1.id ),
  217. self.security.encode_id( ldda1.id ),
  218. ldda1.name,
  219. template_refresh_field_name=address_field_name,
  220. template_refresh_field_contents='new',
  221. template_fields=[ ( '%s_short_desc' % address_field_name, short_desc ),
  222. ( '%s_name' % address_field_name, 'Richard' ),
  223. ( '%s_institution' % address_field_name, 'PSU' ),
  224. ( '%s_address' % address_field_name, '32 O Street' ),
  225. ( '%s_city' % address_field_name, 'Anywhere' ),
  226. ( '%s_state' % address_field_name, 'AK' ),
  227. ( '%s_postal_code' % address_field_name, '0000000' ),
  228. ( '%s_country' % address_field_name, 'USA' ) ],
  229. strings_displayed=[ short_desc ] )
  230. global user_address2
  231. user_address2 = get_user_address( admin_user, short_desc )
  232. assert user_address2 is not None, 'Problem retrieving user_address2 from the database'
  233. def test_040_edit_contents_of_folder1_template( self ):
  234. """Testing editing the contents of folder1 AddressField template"""
  235. # Make sure the template and contents were inherited to folder1
  236. self.folder_info( cntrller='library_admin',
  237. folder_id=self.security.encode_id( folder1.id ),
  238. library_id=self.security.encode_id( library1.id ),
  239. template_refresh_field_name=address_field_name,
  240. template_refresh_field_contents=str( user_address2.id ),
  241. strings_displayed=[ AddressField_form.name,
  242. 'This is an inherited template and is not required to be used with this folder' ],
  243. strings_displayed_after_submit=[ 'Richard' ] )
  244. def test_045_add_dataset_to_folder1( self ):
  245. """Testing adding another ldda to folder1"""
  246. # The upload form should now inherit user_address2 on the upload form
  247. filename = '2.bed'
  248. ldda_message = '2.bed message'
  249. self.upload_library_dataset( cntrller='library_admin',
  250. library_id=self.security.encode_id( library1.id ),
  251. folder_id=self.security.encode_id( folder1.id ),
  252. filename=filename,
  253. file_type='bed',
  254. dbkey='hg18',
  255. template_refresh_field_name=address_field_name,
  256. ldda_message=ldda_message,
  257. strings_displayed=[ 'Upload files' ] )
  258. # Make sure user_address2 is associated with ldda.
  259. self.ldda_edit_info( cntrller='library_admin',
  260. library_id=self.security.encode_id( library1.id ),
  261. folder_id=self.security.encode_id( folder1.id ),
  262. ldda_id=self.security.encode_id( ldda1.id ),
  263. ldda_name=ldda1.name,
  264. template_refresh_field_name=address_field_name,
  265. strings_displayed=[ user_address2.desc ] )
  266. def test_050_add_template_to_library2( self ):
  267. """ Testing add an inheritable template containing an CheckboxField to library2"""
  268. # Add a template containing an CheckboxField to library1
  269. self.add_template( cntrller='library_admin',
  270. item_type='library',
  271. form_type=galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE.replace( ' ', '+' ),
  272. form_id=self.security.encode_id( CheckboxField_form.id ),
  273. form_name=CheckboxField_form.name,
  274. library_id=self.security.encode_id( library2.id ) )
  275. # Check the CheckboxField to make sure the template contents are inherited
  276. self.library_info( 'library_admin',
  277. self.security.encode_id( library2.id ),
  278. template_fields=[ ( checkbox_field_name, '1' ) ] )
  279. def test_055_add_folder2_to_library2( self ):
  280. """Testing adding a folder to library2"""
  281. # Logged in as admin_user
  282. # Add a folder to library2
  283. folder = library2.root_folder
  284. name = "folder"
  285. description = "folder description"
  286. self.add_folder( 'library_admin',
  287. self.security.encode_id( library2.id ),
  288. self.security.encode_id( folder.id ),
  289. name=name,
  290. description=description )
  291. global folder2
  292. folder2 = get_folder( folder.id, name, description )
  293. def test_060_check_library2( self ):
  294. """Checking library2 and its root folder"""
  295. # Logged in as admin_user
  296. self.browse_library( cntrller='library_admin',
  297. library_id=self.security.encode_id( library2.id ),
  298. strings_displayed=[ folder2.name, folder2.description ] )
  299. def test_065_save_folder2_inherited_template( self ):
  300. """Saving the inherited template for folder2"""
  301. # Logged in as admin_user
  302. # Save the inherited template
  303. self.folder_info( cntrller='library_admin',
  304. folder_id=self.security.encode_id( folder2.id ),
  305. library_id=self.security.encode_id( library2.id ),
  306. template_fields=[ ( checkbox_field_name, '1' ) ],
  307. strings_displayed=[ CheckboxField_form.name,
  308. 'This is an inherited template and is not required to be used with this folder' ] )
  309. def test_070_add_ldda_to_folder2( self ):
  310. """
  311. Testing adding a new library dataset to library2's folder, making sure the CheckboxField is
  312. checked on the upload form.
  313. """
  314. # Logged in as admin_user
  315. filename = '1.bed'
  316. ldda_message = '1.bed message'
  317. self.upload_library_dataset( cntrller='library_admin',
  318. library_id=self.security.encode_id( library2.id ),
  319. folder_id=self.security.encode_id( folder2.id ),
  320. filename=filename,
  321. file_type='bed',
  322. dbkey='hg18',
  323. ldda_message=ldda_message,
  324. strings_displayed=[ 'CheckboxField', 'checked' ] )
  325. ldda = get_latest_ldda_by_name( filename )
  326. assert ldda is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda from the database'
  327. self.browse_library( cntrller='library_admin',
  328. library_id=self.security.encode_id( library2.id ),
  329. strings_displayed=[ ldda.name, ldda.message, 'bed' ] )
  330. # Make sure the library template contents were correctly saved
  331. self.ldda_edit_info( 'library_admin',
  332. self.security.encode_id( library2.id ),
  333. self.security.encode_id( folder2.id ),
  334. self.security.encode_id( ldda.id ),
  335. ldda.name,
  336. strings_displayed=[ 'CheckboxField', 'checked' ] )
  337. def test_080_add_template_to_library3( self ):
  338. """ Testing add an inheritable template containing an SelectField to library3"""
  339. # Logged in as admin_user
  340. self.add_template( cntrller='library_admin',
  341. item_type='library',
  342. form_type=galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE.replace( ' ', '+' ),
  343. form_id=self.security.encode_id( SelectField_form.id ),
  344. form_name=SelectField_form.name,
  345. library_id=self.security.encode_id( library3.id ) )
  346. # Select the 2nd option in the SelectField to make sure the template contents are inherited
  347. # SelectField option names are zero-based
  348. self.library_info( 'library_admin',
  349. self.security.encode_id( library3.id ),
  350. template_fields=[ ( select_field_name, 'Option1' ) ] )
  351. def test_085_add_folder3_to_library3( self ):
  352. """Testing adding a folder to library3"""
  353. # Logged in as admin_user
  354. # Add a folder to library3
  355. folder = library3.root_folder
  356. name = "folder"
  357. description = "folder description"
  358. self.add_folder( 'library_admin',
  359. self.security.encode_id( library3.id ),
  360. self.security.encode_id( folder.id ),
  361. name=name,
  362. description=description )
  363. global folder3
  364. folder3 = get_folder( folder.id, name, description )
  365. def test_090_check_library3( self ):
  366. """Checking library3 and its root folder"""
  367. # Logged in as admin_user
  368. self.browse_library( cntrller='library_admin',
  369. library_id=self.security.encode_id( library3.id ),
  370. strings_displayed=[ folder3.name, folder3.description ] )
  371. def test_095_save_folder3_inherited_template( self ):
  372. """Saving the inherited template for folder3"""
  373. # Logged in as admin_user
  374. # Save the inherited template
  375. self.folder_info( cntrller='library_admin',
  376. folder_id=self.security.encode_id( folder3.id ),
  377. library_id=self.security.encode_id( library3.id ),
  378. template_fields=[ ( select_field_name, 'Option1' ) ],
  379. strings_displayed=[ SelectField_form.name,
  380. 'This is an inherited template and is not required to be used with this folder',
  381. 'Option1' ] )
  382. def test_100_add_ldda_to_folder3( self ):
  383. """
  384. Testing adding a new library dataset to library3's folder, making sure the SelectField setting is correct on the upload form.
  385. """
  386. filename = '3.bed'
  387. ldda_message = '3.bed message'
  388. # Logged in as admin_user
  389. self.upload_library_dataset( cntrller='library_admin',
  390. library_id=self.security.encode_id( library3.id ),
  391. folder_id=self.security.encode_id( folder3.id ),
  392. filename=filename,
  393. file_type='bed',
  394. dbkey='hg18',
  395. ldda_message=ldda_message,
  396. strings_displayed=[ 'SelectField', 'selected>Option1' ] )
  397. ldda = get_latest_ldda_by_name( filename )
  398. assert ldda is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda from the database'
  399. self.browse_library( cntrller='library_admin',
  400. library_id=self.security.encode_id( library3.id ),
  401. strings_displayed=[ ldda.name, ldda.message, 'bed' ] )
  402. # Make sure the library template contents were correctly saved
  403. self.ldda_edit_info( 'library_admin',
  404. self.security.encode_id( library3.id ),
  405. self.security.encode_id( folder3.id ),
  406. self.security.encode_id( ldda.id ),
  407. ldda.name,
  408. strings_displayed=[ 'SelectField', 'Option1' ] )
  409. # Import a dataset from the current history
  410. filename = '8.bed'
  411. self.new_history( name='import with SelectField' )
  412. self.upload_file( filename )
  413. hda = get_latest_hda()
  414. self.upload_library_dataset( cntrller='library_admin',
  415. library_id=self.security.encode_id( library3.id ),
  416. folder_id=self.security.encode_id( folder3.id ),
  417. upload_option='import_from_history',
  418. hda_ids=self.security.encode_id( hda.id ),
  419. strings_displayed=[ '<select name="%s" last_selected_value="Option1">' % select_field_name ] )
  420. ldda = get_latest_ldda_by_name( filename )
  421. assert ldda is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda from the database'
  422. self.browse_library( cntrller='library_admin',
  423. library_id=self.security.encode_id( library3.id ),
  424. strings_displayed=[ ldda.name, 'bed' ] )
  425. # Make sure the library template contents were correctly saved
  426. self.ldda_edit_info( 'library_admin',
  427. self.security.encode_id( library3.id ),
  428. self.security.encode_id( folder3.id ),
  429. self.security.encode_id( ldda.id ),
  430. ldda.name,
  431. strings_displayed=[ 'SelectField', 'Option1' ] )
  432. def test_105_add_template_to_library4( self ):
  433. """ Testing add an inheritable template containing an TextArea to library4"""
  434. # Logged in as admin_user
  435. # Add an inheritable template to library4
  436. self.add_template( cntrller='library_admin',
  437. item_type='library',
  438. form_type=galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE.replace( ' ', '+' ),
  439. form_id=self.security.encode_id( TextArea_form.id ),
  440. form_name=TextArea_form.name,
  441. library_id=self.security.encode_id( library4.id ) )
  442. # Select the 2nd option in the SelectField to make sure the template contents are inherited
  443. self.library_info( 'library_admin',
  444. self.security.encode_id( library4.id ),
  445. template_fields=[ ( textarea_name, 'This text should be inherited' ) ] )
  446. def test_110_add_folder4_to_library4( self ):
  447. """Testing adding a folder to library4"""
  448. # Logged in as admin_user
  449. # Add a folder to library4
  450. folder = library4.root_folder
  451. name = "folder"
  452. description = "folder description"
  453. self.add_folder( 'library_admin',
  454. self.security.encode_id( library4.id ),
  455. self.security.encode_id( folder.id ),
  456. name=name,
  457. description=description )
  458. global folder4
  459. folder4 = get_folder( folder.id, name, description )
  460. def test_115_save_folder4_inherited_template( self ):
  461. """Saving the inherited template for folder4"""
  462. # Logged in as admin_user
  463. # Save the inherited template
  464. self.folder_info( cntrller='library_admin',
  465. folder_id=self.security.encode_id( folder4.id ),
  466. library_id=self.security.encode_id( library4.id ),
  467. template_fields=[ ( textarea_name, 'This text should be inherited' ) ],
  468. strings_displayed=[ TextArea_form.name,
  469. 'This is an inherited template and is not required to be used with this folder',
  470. 'This text should be inherited' ] )
  471. def test_120_add_ldda_to_folder4( self ):
  472. """
  473. Testing adding a new library dataset to library4's folder, making sure the TextArea setting is correct on the upload form.
  474. """
  475. filename = '4.bed'
  476. ldda_message = '4.bed message'
  477. # Logged in as admin_user
  478. self.upload_library_dataset( cntrller='library_admin',
  479. library_id=self.security.encode_id( library4.id ),
  480. folder_id=self.security.encode_id( folder4.id ),
  481. filename=filename,
  482. file_type='bed',
  483. dbkey='hg18',
  484. ldda_message=ldda_message,
  485. strings_displayed=[ 'TextArea', 'This text should be inherited' ] )
  486. ldda = get_latest_ldda_by_name( filename )
  487. assert ldda is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda from the database'
  488. self.browse_library( cntrller='library_admin',
  489. library_id=self.security.encode_id( library4.id ),
  490. strings_displayed=[ ldda.name, ldda.message, 'bed' ] )
  491. # Make sure the library template contents were correctly saved
  492. self.ldda_edit_info( 'library_admin',
  493. self.security.encode_id( library4.id ),
  494. self.security.encode_id( folder4.id ),
  495. self.security.encode_id( ldda.id ),
  496. ldda.name,
  497. strings_displayed=[ 'TextArea', 'This text should be inherited' ] )
  498. def test_125_add_template_to_library5( self ):
  499. """ Testing add an inheritable template containing an TextField to library5"""
  500. # Add an inheritable template to library5
  501. self.add_template( cntrller='library_admin',
  502. item_type='library',
  503. form_type=galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE.replace( ' ', '+' ),
  504. form_id=self.security.encode_id( TextField_form.id ),
  505. form_name=TextField_form.name,
  506. library_id=self.security.encode_id( library5.id ) )
  507. # Select the 2nd option in the SelectField to make sure the template contents are inherited
  508. self.library_info( 'library_admin',
  509. self.security.encode_id( library5.id ),
  510. template_fields=[ ( textfield_name, 'This text should be inherited' ) ] )
  511. def test_130_add_folder5_to_library5( self ):
  512. """Testing adding a folder to library5"""
  513. # Logged in as admin_user
  514. # Add a folder to library5
  515. folder = library5.root_folder
  516. name = "folder"
  517. description = "folder description"
  518. self.add_folder( 'library_admin',
  519. self.security.encode_id( library5.id ),
  520. self.security.encode_id( folder.id ),
  521. name=name,
  522. description=description )
  523. global folder5
  524. folder5 = get_folder( folder.id, name, description )
  525. def test_135_save_folder5_inherited_template( self ):
  526. """Saving the inherited template for folder5"""
  527. # Logged in as admin_user
  528. # Save the inherited template
  529. self.folder_info( cntrller='library_admin',
  530. folder_id=self.security.encode_id( folder5.id ),
  531. library_id=self.security.encode_id( library5.id ),
  532. template_fields=[ ( textfield_name, 'This text should be inherited' ) ],
  533. strings_displayed=[ TextField_form.name,
  534. 'This is an inherited template and is not required to be used with this folder',
  535. 'This text should be inherited' ] )
  536. def test_140_add_ldda_to_folder5( self ):
  537. """
  538. Testing adding a new library dataset to library5's folder, making sure the TextField setting is correct on the upload form.
  539. """
  540. # Logged in as admin_user
  541. filename = '5.bed'
  542. ldda_message = '5.bed message'
  543. self.upload_library_dataset( cntrller='library_admin',
  544. library_id=self.security.encode_id( library5.id ),
  545. folder_id=self.security.encode_id( folder5.id ),
  546. filename=filename,
  547. file_type='bed',
  548. dbkey='hg18',
  549. ldda_message=ldda_message,
  550. strings_displayed=[ 'TextField', 'This text should be inherited' ] )
  551. ldda = get_latest_ldda_by_name( filename )
  552. assert ldda is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda from the database'
  553. self.browse_library( cntrller='library_admin',
  554. library_id=self.security.encode_id( library5.id ),
  555. strings_displayed=[ ldda.name, ldda.message, 'bed' ] )
  556. # Make sure the library template contents were correctly saved
  557. self.ldda_edit_info( 'library_admin',
  558. self.security.encode_id( library5.id ),
  559. self.security.encode_id( folder5.id ),
  560. self.security.encode_id( ldda.id ),
  561. ldda.name,
  562. strings_displayed=[ 'TextField', 'This text should be inherited' ] )
  563. def test_145_edit_library5_template_layout( self ):
  564. """Test editing the layout of library5's template"""
  565. # Currently there is only a TextField, and we'll add a TextArea.
  566. self.edit_template( cntrller='library_admin',
  567. item_type='library',
  568. form_type=galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE.replace( ' ', '+' ),
  569. library_id=self.security.encode_id( library5.id ),
  570. field_type='TextArea',
  571. field_label_1=TextArea_form.name,
  572. field_helptext_1='%s help' % TextArea_form.name,
  573. field_default_1='%s default' % TextArea_form.name )
  574. def test_150_add_ldda_to_library5( self ):
  575. """
  576. Testing adding a new library dataset to library5's folder, making sure the TextField and new TextArea settings are correct on the upload form.
  577. """
  578. filename = '6.bed'
  579. ldda_message = '6.bed message'
  580. # Logged in as admin_user
  581. self.upload_library_dataset( cntrller='library_admin',
  582. library_id=self.security.encode_id( library5.id ),
  583. folder_id=self.security.encode_id( library5.root_folder.id ),
  584. filename=filename,
  585. file_type='bed',
  586. dbkey='hg18',
  587. ldda_message=ldda_message,
  588. strings_displayed=[ 'TextField',
  589. 'This text should be inherited',
  590. 'TextArea' ] )
  591. ldda = get_latest_ldda_by_name( filename )
  592. assert ldda is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda from the database'
  593. self.browse_library( cntrller='library_admin',
  594. library_id=self.security.encode_id( library5.id ),
  595. strings_displayed=[ ldda.name, ldda.message, 'bed' ] )
  596. # Make sure the library template contents were correctly saved
  597. self.ldda_edit_info( 'library_admin',
  598. self.security.encode_id( library5.id ),
  599. self.security.encode_id( library5.root_folder.id ),
  600. self.security.encode_id( ldda.id ),
  601. ldda.name,
  602. strings_displayed=[ 'TextField',
  603. 'This text should be inherited',
  604. 'TextArea' ] )
  605. def test_155_add_template_to_library6( self ):
  606. """ Testing add an inheritable template containing an WorkflowField to library6"""
  607. # Add an inheritable template to library6
  608. # We won't select an option since we have no workflow to select
  609. self.add_template( cntrller='library_admin',
  610. item_type='library',
  611. form_type=galaxy.model.FormDefinition.types.LIBRARY_INFO_TEMPLATE.replace( ' ', '+' ),
  612. form_id=self.security.encode_id( WorkflowField_form.id ),
  613. form_name=WorkflowField_form.name,
  614. library_id=self.security.encode_id( library6.id ) )
  615. def test_160_add_folder6_to_library6( self ):
  616. """Testing adding a folder to library6"""
  617. # Logged in as admin_user
  618. # Add a folder to library5
  619. folder = library6.root_folder
  620. name = "folder"
  621. description = "folder description"
  622. self.add_folder( 'library_admin',
  623. self.security.encode_id( library6.id ),
  624. self.security.encode_id( folder.id ),
  625. name=name,
  626. description=description )
  627. global folder6
  628. folder6 = get_folder( folder.id, name, description )
  629. def test_165_save_folder6_inherited_template( self ):
  630. """Saving the inherited template for folder6"""
  631. # Logged in as admin_user
  632. # Save the inherited template - we won't select an option since we have no workflow to select
  633. self.folder_info( cntrller='library_admin',
  634. folder_id=self.security.encode_id( folder6.id ),
  635. library_id=self.security.encode_id( library6.id ),
  636. template_fields=[ ( workflow_field_name, 'none' ) ],
  637. strings_displayed=[ WorkflowField_form.name,
  638. 'This is an inherited template and is not required to be used with this folder',
  639. 'none' ] )
  640. def test_170_add_ldda_to_folder6( self ):
  641. """
  642. Testing adding a new library dataset to library6's folder, making sure the WorkflowField setting is correct on the upload form.
  643. """
  644. # Logged in as admin_user
  645. filename = '7.bed'
  646. ldda_message = '7.bed message'
  647. self.upload_library_dataset( cntrller='library_admin',
  648. library_id=self.security.encode_id( library6.id ),
  649. folder_id=self.security.encode_id( folder6.id ),
  650. filename=filename,
  651. file_type='bed',
  652. dbkey='hg18',
  653. ldda_message=ldda_message,
  654. strings_displayed=[ 'WorkflowField', 'none' ] )
  655. ldda = get_latest_ldda_by_name( filename )
  656. assert ldda is not None, 'Problem retrieving LibraryDatasetDatasetAssociation ldda from the database'
  657. self.browse_library( cntrller='library_admin',
  658. library_id=self.security.encode_id( library6.id ),
  659. strings_displayed=[ ldda.name, ldda.message, 'bed' ] )
  660. # Make sure the library template contents were correctly saved
  661. self.ldda_edit_info( 'library_admin',
  662. self.security.encode_id( library6.id ),
  663. self.security.encode_id( folder6.id ),
  664. self.security.encode_id( ldda.id ),
  665. ldda.name,
  666. strings_displayed=[ 'WorkflowField', 'none' ] )
  667. def test_999_reset_data_for_later_test_runs( self ):
  668. """Reseting data to enable later test runs to pass"""
  669. # Logged in as admin_user
  670. ##################
  671. # Delete all form definitions
  672. ##################
  673. for form in [ AddressField_form, CheckboxField_form, SelectField_form, TextArea_form, TextField_form, WorkflowField_form ]:
  674. self.mark_form_deleted( self.security.encode_id( form.form_definition_current.id ) )
  675. ##################
  676. # Mark all user_addresses deleted
  677. ##################
  678. for user_address in [ user_address1, user_address2 ]:
  679. mark_obj_deleted( user_address )
  680. ##################
  681. # Purge all libraries
  682. ##################
  683. for library in [ library1, library2, library3, library4, library5, library6 ]:
  684. self.delete_library_item( 'library_admin',
  685. self.security.encode_id( library.id ),
  686. self.security.encode_id( library.id ),
  687. library.name,
  688. item_type='library' )
  689. self.purge_library( self.security.encode_id( library.id ), library.name )
  690. ##################
  691. # Make sure all users are associated only with their private roles
  692. ##################
  693. for user in [ admin_user, regular_user1, regular_user2, regular_user3 ]:
  694. refresh( user )
  695. if len( user.roles) != 1:
  696. raise AssertionError( '%d UserRoleAssociations are associated with %s ( should be 1 )' % ( len( user.roles ), user.email ) )
  697. self.logout()