Exemple #1
0
class TestHeavySelect2MultipleWidget(object):
    url = reverse('heavy_select2_multiple_widget')
    form = forms.HeavySelect2MultipleWidgetForm()
    widget_cls = HeavySelect2MultipleWidget

    @pytest.mark.xfail(
        bool(os.environ.get('CI', False)),
        reason='https://bugs.chromium.org/p/chromedriver/issues/detail?id=1772'
    )
    def test_widgets_selected_after_validation_error(self, db, live_server,
                                                     driver):
        driver.get(live_server + self.url)
        WebDriverWait(driver, 3).until(
            expected_conditions.presence_of_element_located(
                (By.ID, 'id_title')))
        title = driver.find_element_by_id('id_title')
        title.send_keys('fo')
        genres, fartists = driver.find_elements_by_css_selector(
            '.select2-selection--multiple')
        genres.click()
        genres.send_keys('o')  # results are Zero One Two Four
        # select second element - One
        driver.find_element_by_css_selector(
            '.select2-results li:nth-child(2)').click()
        genres.submit()
        # there is a ValidationError raised, check for it
        errstring = WebDriverWait(driver, 3).until(
            expected_conditions.presence_of_element_located(
                (By.CSS_SELECTOR, 'ul.errorlist li'))).text
        assert errstring == "Title must have more than 3 characters."
        # genres should still have One as selected option
        result_title = driver.find_element_by_css_selector(
            '.select2-selection--multiple li').get_attribute('title')
        assert result_title == 'One'
class TestHeavySelect2MultipleWidget(object):
    url = reverse('heavy_select2_multiple_widget')
    form = forms.HeavySelect2MultipleWidgetForm()
    widget_cls = HeavySelect2MultipleWidget

    def test_widgets_selected_after_validation_error(self, db, live_server,
                                                     driver):
        driver.get(live_server + self.url)
        title = driver.find_element_by_id('id_title')
        title.send_keys('fo')
        genres, fartists = driver.find_elements_by_css_selector(
            '.select2-selection--multiple')
        genres.click()
        genres.send_keys('o')  # results are Zero One Two Four
        # select second element - One
        driver.find_element_by_css_selector(
            '.select2-results li:nth-child(2)').click()
        genres.submit()
        # there is a ValidationError raised, check for it
        errstring = driver.find_element_by_css_selector('ul.errorlist li').text
        assert errstring == "Title must have more than 3 characters."
        # genres should still have One as selected option
        result_title = driver.find_element_by_css_selector(
            '.select2-selection--multiple li').get_attribute('title')
        assert result_title == 'One'