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'