New function was added: is_css_not_present This function works like is_css_present in that it will wait and can take in an optional argument to wait longer. This should be used everywhere INSTEAD of not is_css_present as in the latter case, you are telling selenium to wait for the thing you don't want to be there to either be there or time out.
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
#pylint: disable=C0111
|
|
#pylint: disable=W0621
|
|
|
|
from lettuce import world, step
|
|
from lettuce.django import django_url
|
|
from common import TEST_COURSE_ORG, TEST_COURSE_NAME
|
|
|
|
|
|
@step('I register for the course "([^"]*)"$')
|
|
def i_register_for_the_course(step, course):
|
|
cleaned_name = TEST_COURSE_NAME.replace(' ', '_')
|
|
url = django_url('courses/%s/%s/%s/about' % (TEST_COURSE_ORG, course, cleaned_name))
|
|
world.browser.visit(url)
|
|
|
|
intro_section = world.browser.find_by_css('section.intro')
|
|
register_link = intro_section.find_by_css('a.register')
|
|
register_link.click()
|
|
|
|
assert world.is_css_present('section.container.dashboard')
|
|
|
|
|
|
@step(u'I should see an empty dashboard message')
|
|
def i_should_see_empty_dashboard(step):
|
|
empty_dash_css = 'section.empty-dashboard-message'
|
|
assert world.is_css_present(empty_dash_css)
|
|
|
|
|
|
@step(u'I should( NOT)? see the course numbered "([^"]*)" in my dashboard$')
|
|
def i_should_see_that_course_in_my_dashboard(step, doesnt_appear, course):
|
|
course_link_css = 'section.my-courses a[href*="%s"]' % course
|
|
if doesnt_appear:
|
|
assert world.is_css_not_present(course_link_css)
|
|
else:
|
|
assert world.is_css_present(course_link_css)
|
|
|
|
|
|
@step(u'I unregister for the course numbered "([^"]*)"')
|
|
def i_unregister_for_that_course(step, course):
|
|
unregister_css = 'section.info a[href*="#unenroll-modal"][data-course-number*="%s"]' % course
|
|
world.css_click(unregister_css)
|
|
button_css = 'section#unenroll-modal input[value="Unregister"]'
|
|
world.css_click(button_css)
|