Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy_test.selenium.test_library_landing
from .framework import (
    retry_assertion_during_transitions,
    selenium_test,
    SeleniumTestCase,
)
[docs]class LibraryLandingTestCase(SeleniumTestCase):
    requires_admin = True
[docs]    def setup_with_driver(self):
        super(LibraryLandingTestCase, self).setup_with_driver()
        self.admin_login()
        self.libraries_open()
[docs]    @selenium_test
    def test_create_new_close(self):
        num_displayed_libraries = self._num_displayed_libraries()
        self.libraries_index_click_create_new()
        self.wait_for_selector_visible(".new-row")
        self.screenshot("libraries_new")
        close_button = self.wait_for_selector_clickable(".cancel_library_btn")
        close_button.click()
        self.wait_for_overlays_cleared()
        assert self._num_displayed_libraries() == num_displayed_libraries
[docs]    @selenium_test
    def test_create_new(self):
        name = self._get_random_name(prefix="testcreatenew")
        self.libraries_index_create(name)
        # Must be showing at least one library now.
        self._assert_at_least_one_library_displayed()
        self._search_for_only_with_name(name)
[docs]    @selenium_test
    def test_rename(self):
        name = self._get_random_name(prefix="testprerename")
        self.libraries_index_create(name)
        self._search_for_only_with_name(name)
        edit_button = self.wait_for_selector_clickable(".edit_library_btn")
        edit_button.click()
        new_name = self._get_random_name(prefix="testpostrename")
        name_box = self.wait_for_selector_clickable(".input_library_name")
        name_box.send_keys(new_name)
        self.screenshot("libraries_rename")
        save_button = self.wait_for_selector_clickable(".save_library_btn")
        save_button.click()
        self._search_for_only_with_name(new_name)
[docs]    @selenium_test
    def test_sorting(self):
        # Throw in another library to ensure filtering is working...
        other = self._get_random_name(prefix="notthesame")
        self.libraries_index_create(other)
        self.wait_for_overlays_cleared()
        namebase = self._get_random_name(prefix="testsort")
        self.libraries_index_create(namebase + " b")
        self.wait_for_overlays_cleared()
        self.libraries_index_create(namebase + " a")
        self.wait_for_overlays_cleared()
        self.libraries_index_create(namebase + " c")
        self.screenshot("libraries_index")
        self.libraries_index_search_for(namebase)
        self._assert_num_displayed_libraries_is(3)
        self.screenshot("libraries_index_search")
        self._assert_names_are([namebase + " a", namebase + " b", namebase + " c"])
        self.libraries_index_sort_click()
        # TODO: Usability bug in libraries - should need to resort - it should
        # sort the entities on the screen.
        self.libraries_index_search_for(namebase)
        self._assert_names_are([namebase + " c", namebase + " b", namebase + " a"])
    def _search_for_only_with_name(self, name):
        self.libraries_index_search_for(name)
        self._assert_num_displayed_libraries_is(1)
    @retry_assertion_during_transitions
    def _assert_names_are(self, expected_names):
        names = [e.find_element_by_css_selector("td a").text for e in self.libraries_index_table_elements()]
        self.assertEqual(names, expected_names)
    @retry_assertion_during_transitions
    def _assert_at_least_one_library_displayed(self):
        assert self._num_displayed_libraries() > 0
    @retry_assertion_during_transitions
    def _assert_num_displayed_libraries_is(self, n):
        self.assertEqual(n, self._num_displayed_libraries())
    def _num_displayed_libraries(self):
        return len(self.libraries_index_table_elements())