def registerTestSetup(): from zope.interface import classImplements from schooltool.testing import registry def haveCalendar(): from schooltool.app.app import SchoolToolApplication from schooltool.app.interfaces import IHaveCalendar if not IHaveCalendar.implementedBy(SchoolToolApplication): classImplements(SchoolToolApplication, IHaveCalendar) registry.register('CalendarComponents', haveCalendar) def haveTimetables(): from schooltool.timetable.interfaces import IHaveTimetables from schooltool.timetable.interfaces import IHaveSchedule from schooltool.schoolyear.schoolyear import SchoolYear if not IHaveTimetables.implementedBy(SchoolYear): classImplements(SchoolYear, IHaveTimetables) from schooltool.course.section import Section if not IHaveTimetables.implementedBy(Section): classImplements(Section, IHaveSchedule) registry.register('TimetablesComponents', haveTimetables)
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def addSchoolYear(browser, title, first, last, **kw): browser.open('http://localhost/schoolyears') browser.query.link('School Year').click() browser.query.name('form.widgets.title').type(title) browser.query.name('form.widgets.first').ui.enter_date(first) browser.query.name('form.widgets.last').ui.enter_date(last) for group_id in kw.get('copy_groups', []): sel = '//input[@name="groups" and @value="%s"]' % group_id browser.query.xpath(sel).click() for group_id in kw.get('copy_members', []): sel = '//input[@name="members" and @value="%s"]' % group_id browser.query.xpath(sel).click() if kw.get('copy_courses'): browser.query.name('importAllCourses').click() if kw.get('copy_timetables'): browser.query.name('importAllTimetables').click() page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'schoolyear.add', addSchoolYear))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def addTerm(browser, schoolyear, title, first, last, holidays=(), weekends=()): browser.open('http://localhost/terms') browser.query.link(schoolyear).click() browser.query.link('Term').click() browser.query.name('form.widgets.title').type(title) browser.query.name('form.widgets.first').ui.enter_date(first) browser.query.name('form.widgets.last').ui.enter_date(last) page = browser.query.tag('html') browser.query.button('Next').click() browser.wait(lambda: page.expired) for date in holidays: checkbox = browser.query.css('input[value="%s"]' % date) td = browser.driver.execute_script( 'return $(arguments[0]).closest("td")', checkbox)[0] td.click() for day in weekends: page = browser.query.tag('html') browser.query.css('input[value="%s"]' % day).click() browser.wait(lambda: page.expired) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'term.add', addTerm))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def addSchoolYear(browser, title, first, last, **kw): browser.open('http://localhost/schoolyears') browser.query.link('School Year').click() browser.query.name('form.widgets.title').type(title) browser.query.name('form.widgets.first').ui.enter_date(first) browser.query.name('form.widgets.last').ui.enter_date(last) for group_id in kw.get('copy_groups', []): sel = '//input[@name="groups" and @value="%s"]' % group_id browser.query.xpath(sel).click() for group_id in kw.get('copy_members', []): sel = '//input[@name="members" and @value="%s"]' % group_id browser.query.xpath(sel).click() if kw.get('copy_courses'): browser.query.name('importAllCourses').click() if kw.get('copy_timetables'): browser.query.name('importAllTimetables').click() page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'schoolyear.add', addSchoolYear))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def printGradebook(browser, show_validation=False, hide_homeroom=False): print_gradebook(browser, show_validation, hide_homeroom) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'gradebook.worksheet.pprint', printGradebook)) def score(browser, student, activity, grade): driver = browser.driver row_index = None column_index = None sel = '.students tbody td:first-child a.popup_link' # XXX: reverse in tests if ', ' in student: student = ' '.join(reversed(student.split(', '))) for index, link in enumerate(driver.execute_script( 'return $(arguments[0])', sel)): if student == link.get_attribute('title'): row_index = index break sel = '.grades thead a.popup_link' for index, link in enumerate(driver.execute_script( 'return $(arguments[0])', sel)): if activity == link.text: column_index = index break sel = '.grades tbody tr' grade_row_groups = group_double_rows(browser.driver.execute_script( 'return $(arguments[0])', sel)) row = grade_row_groups[row_index][-1] sel = 'td:nth-child(%d)' % (column_index + 1) raw_cell = driver.execute_script('return $(arguments[0]).find(arguments[1])', row, sel)[0] cell = WebElement(raw_cell) cell.click() sel = '.ui-dialog:visible' if not driver.execute_script('return $(arguments[0])', sel): cell.query.tag('input').type(browser.keys.DELETE, grade) sel = 'ul.ui-autocomplete' driver.execute_script( '$(arguments[0]).find(arguments[1]).hide()', cell, sel) else: driver.execute_script( 'CKEDITOR.instances["form-widgets-value"].setData(arguments[0])', grade) browser.query.css('.comment-cell-submit').click() registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'gradebook.worksheet.score', score))
def registerTestSetup(): from schooltool.testing import registry def addSchoolYearContainer(app): from schooltool.schoolyear.schoolyear import SchoolYearContainer from schooltool.schoolyear.schoolyear import SCHOOLYEAR_CONTAINER_KEY app[SCHOOLYEAR_CONTAINER_KEY] = SchoolYearContainer() registry.register('ApplicationContainers', addSchoolYearContainer)
def registerTestSetup(): from schooltool.testing import registry def addDefaultCategories(app): from schooltool.gradebook.gradebook import GradebookInit gb_init = GradebookInit(app) gb_init() registry.register('DefaultCategories', addDefaultCategories)
def registerTestSetup(): from zope.interface import classImplements from schooltool.testing import registry def haveCalendar(): from schooltool.group import group from schooltool.app.interfaces import IHaveCalendar if not IHaveCalendar.implementedBy(group.Group): classImplements(group.Group, IHaveCalendar) registry.register('CalendarComponents', haveCalendar)
def registerTestSetup(): from zope.interface import classImplements from schooltool.testing import registry def haveCalendar(): from schooltool.group import group from schooltool.app.interfaces import IHaveCalendar if not IHaveCalendar.implementedBy(group.Group): classImplements(group.Group, IHaveCalendar) registry.register("CalendarComponents", haveCalendar)
def registerTestSetup(): from zope.interface import classImplements from schooltool.testing import registry def addResourceContainer(app): from schooltool.resource import resource app['resources'] = resource.ResourceContainer() registry.register('ApplicationContainers', addResourceContainer) def haveCalendar(): from schooltool.resource import resource from schooltool.app.interfaces import IHaveCalendar if not IHaveCalendar.implementedBy(resource.Resource): classImplements(resource.Resource, IHaveCalendar) registry.register('CalendarComponents', haveCalendar)
def registerTestSetup(): from zope.interface import classImplements from schooltool.testing import registry def addPersonContainer(app): from schooltool.person import person app['persons'] = person.PersonContainer() registry.register('ApplicationContainers', addPersonContainer) def haveCalendar(): from schooltool.person import person from schooltool.app.interfaces import IHaveCalendar if not IHaveCalendar.implementedBy(person.Person): classImplements(person.Person, IHaveCalendar) registry.register('CalendarComponents', haveCalendar)
def registerTestSetup(): from zope.interface import classImplements from schooltool.testing import registry def haveCalendar(): from schooltool.course import section from schooltool.app.interfaces import IHaveCalendar if not IHaveCalendar.implementedBy(section.Section): classImplements(section.Section, IHaveCalendar) registry.register('CalendarComponents', haveCalendar) def bookResources(): from schooltool.course import section from schooltool.resource.interfaces import IBookResources if not IBookResources.implementedBy(section.Section): classImplements(section.Section, IBookResources) registry.register('ResourceComponents', bookResources)
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def addTerm(browser, schoolyear, title, first, last, holidays=(), weekends=()): browser.open('http://localhost/terms') browser.query.link(schoolyear).click() browser.query.link('Term').click() browser.query.name('form.widgets.title').type(title) browser.query.name('form.widgets.first').ui.enter_date(first) browser.query.name('form.widgets.last').ui.enter_date(last) page = browser.query.tag('html') browser.query.button('Next').click() browser.wait(lambda: page.expired) for date in holidays: checkbox = browser.query.css('input[value="%s"]' % date) td = browser.driver.execute_script( 'return $(arguments[0]).closest("td")', checkbox)[0] td.click() for day in weekends: page = browser.query.tag('html') browser.query.css('input[value="%s"]' % day).click() browser.wait(lambda: page.expired) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'term.add', addTerm))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def importXLS(browser, filename): browser.query.link("School").click() browser.query.link("Import XLS").click() if filename: import pkg_resources elem = browser.query.name("xlsfile") browser.query.name("xlsfile").type(filename) page = browser.query.tag("html") browser.query.button("Submit").click() browser.wait(lambda: page.expired) registry.register("SeleniumHelpers", lambda: schooltool.testing.selenium.registerBrowserUI("import_xls", importXLS))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium import selenium.webdriver.common.keys from selenium.webdriver.support.select import Select def type_in_date(element, date): keys = selenium.webdriver.common.keys.Keys element.type(keys.DELETE, date, keys.ENTER) browser = element.browser if browser is not None: browser.wait_no(lambda: browser.query.id('ui-datepicker-div').is_displayed()) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerElementUI('enter_date', type_in_date)) def select_option(element, option): select = Select(element) select.select_by_visible_text(option) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerElementUI('select_option', select_option)) def set_value(element, value): tag = element.tag_name css_class = element.get_attribute('class') if 'date-field' in css_class: element.ui.enter_date(value) elif tag in ('select',): element.ui.select_option(value) else: element.type(value) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerElementUI('set_value', set_value))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def login(browser, username, password): browser.open('http://localhost') browser.query.link('Log in').click() browser.query.name('username').type(username) browser.query.name('password').type(password) page = browser.query.tag('html') browser.query.button('Log in').click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'login', login)) def addPerson(browser, first_name, last_name, username, password, **kw): optional = ( 'prefix', 'middle_name', 'suffix', 'preferred_name', 'gender', 'birth_date', 'ID', 'ethnicity', 'language', 'placeofbirth', 'citizenship', 'group', 'advisor', ) browser.open('http://localhost/persons') page = browser.query.tag('html') browser.query.link('Person').click() browser.wait(lambda: page.expired) browser.query.name('form.widgets.first_name').type(first_name) browser.query.name('form.widgets.last_name').type(last_name) browser.query.name('form.widgets.username').type(username) browser.query.name('form.widgets.password').type(password) browser.query.name('form.widgets.confirm').type(password) for name in optional: if name in kw: value = kw[name] widget_id = ''.join(['form-widgets-', name]) browser.query.id(widget_id).ui.set_value(value) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.add', addPerson)) def addAdvisors(browser, username, advisors, state=None, date=None): browser.open('http://localhost/persons/%s/advisors.html' % username) add_temporal_relationship(browser, advisors, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.advisors.add', addAdvisors)) def addAdvisees(browser, username, advisees, state=None, date=None): browser.open('http://localhost/persons/%s/advisees.html' % username) add_temporal_relationship(browser, advisees, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.advisees.add', addAdvisees)) def printSectionTrees(browser): accordion_header = browser.query_all.css('.ui-accordion-header')[3] accordion_header.click() accordion_content = browser.query_all.css('div.ui-accordion-content')[3] browser.wait(accordion_content.is_displayed) for block in accordion_content.query_all.css('.info-block'): print block.query.tag('h3').text tree = block.query.css('.tree_list > ul') print_tree(tree) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.print_section_trees', printSectionTrees)) def printGroupTrees(browser): accordion_header = browser.query_all.css('.ui-accordion-header')[4] accordion_header.click() accordion_content = browser.query_all.css('div.ui-accordion-content')[4] browser.wait(accordion_content.is_displayed) print accordion_content.query.tag('h3').text tree = accordion_content.query.css('.tree_list > ul') print_tree(tree) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.print_group_trees', printGroupTrees))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def addGroup(browser, schoolyear, title, **kw): optional = ( 'description', ) browser.query.link('School').click() browser.query.link('Groups').click() browser.query.link(schoolyear).click() browser.query.link('Group').click() browser.query.name('form.widgets.title').type(title) for name in optional: if name in kw: value = kw[name] widget_id = ''.join(['form-widgets-', name]) browser.query.id(widget_id).ui.set_value(value) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'group.add', addGroup)) def addMembers(browser, schoolyear, group, members, state=None, date=None): browser.ui.group.go(schoolyear, group) selector = '//a[@title="Edit members for this group"]' browser.query.xpath(selector).click() add_temporal_relationship(browser, members, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'group.members.add', addMembers)) def removeMembers(browser, schoolyear, group, members, state=None, date=None): browser.ui.group.go(schoolyear, group) selector = '//a[@title="Edit members for this group"]' browser.query.xpath(selector).click() if state is None: state = 'Removed' if group != 'Students' else 'Withdrawn' remove_temporal_relationship(browser, members, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'group.members.remove', removeMembers)) def visitGroup(browser, schoolyear, group): browser.open('http://localhost/groups') browser.query.link(schoolyear).click() browser.query.id('SEARCH').type(group) table = browser.query.css('form table') browser.query.name('SEARCH_BUTTON').click() browser.wait(lambda: table.expired) # XXX: Click Show All here in case there are lots of groups sel = '//a[text()="%s"]' % group page = browser.query.tag('html') browser.query.xpath(sel).click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'group.go', visitGroup))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def login(browser, username, password): browser.open('http://localhost') browser.query.link('Log in').click() browser.query.name('username').type(username) browser.query.name('password').type(password) page = browser.query.tag('html') browser.query.button('Log in').click() browser.wait(lambda: page.expired) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI('login', login)) def addPerson(browser, first_name, last_name, username, password, **kw): optional = ( 'prefix', 'middle_name', 'suffix', 'preferred_name', 'gender', 'birth_date', 'ID', 'ethnicity', 'language', 'placeofbirth', 'citizenship', 'group', 'advisor', ) browser.open('http://localhost/persons') page = browser.query.tag('html') browser.query.link('Person').click() browser.wait(lambda: page.expired) browser.query.name('form.widgets.first_name').type(first_name) browser.query.name('form.widgets.last_name').type(last_name) browser.query.name('form.widgets.username').type(username) browser.query.name('form.widgets.password').type(password) browser.query.name('form.widgets.confirm').type(password) for name in optional: if name in kw: value = kw[name] widget_id = ''.join(['form-widgets-', name]) browser.query.id(widget_id).ui.set_value(value) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.add', addPerson)) def addAdvisors(browser, username, advisors, state=None, date=None): browser.open('http://localhost/persons/%s/advisors.html' % username) add_temporal_relationship(browser, advisors, state, date) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.advisors.add', addAdvisors)) def addAdvisees(browser, username, advisees, state=None, date=None): browser.open('http://localhost/persons/%s/advisees.html' % username) add_temporal_relationship(browser, advisees, state, date) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.advisees.add', addAdvisees))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def addCourse(browser, schoolyear, title, **kw): optional = ( 'description', 'course_id', 'government_id', 'credits', 'level', ) browser.query.link('School').click() browser.query.link('Courses').click() browser.query.link(schoolyear).click() browser.query.link('Course').click() browser.query.name('form.widgets.title').type(title) for name in optional: if name in kw: value = kw[name] widget_id = ''.join(['form-widgets-', name]) browser.query.id(widget_id).ui.set_value(value) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'course.add', addCourse)) def addSection(browser, schoolyear, term, course, title=None, ends=None, location=None, **kw): optional = ( 'description', ) browser.query.link('School').click() browser.query.link('Sections').click() browser.query.link(schoolyear).click() browser.query.link('Section').click() if title is not None: browser.query.name('form.widgets.title').type(title) browser.query.id('courses-widgets-course').ui.select_option(course) browser.query.id('terms-widgets-starts').ui.select_option(term) ends_widget = browser.query.id('terms-widgets-ends') if ends is None: ends_widget.ui.select_option(term) else: ends_widget.ui.select_option(ends) if location is not None: browser.query.id('location-widgets-location').ui.select_option( location) for name in optional: if name in kw: value = kw[name] widget_id = ''.join(['form-widgets-', name]) browser.query.id(widget_id).ui.set_value(value) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) redirect = browser.url title = browser.query.tag('h2').text if 'instructors' in kw: browser.ui.section.instructors.add( schoolyear, term, title, kw['instructors'], kw.get('instructors_state'), kw.get('instructors_date')) if 'students' in kw: browser.ui.section.students.add( schoolyear, term, title, kw['students'], kw.get('students_state'), kw.get('students_date')) browser.open(redirect) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'section.add', addSection)) def addInstructors(browser, schoolyear, term, section, instructors, state=None, date=None): browser.ui.section.go(schoolyear, term, section) selector = '//a[@title="Edit instructors for this section"]' browser.query.xpath(selector).click() add_temporal_relationship(browser, instructors, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'section.instructors.add', addInstructors)) def removeInstructors(browser, schoolyear, term, section, instructors, state=None, date=None): browser.ui.section.go(schoolyear, term, section) selector = '//a[@title="Edit instructors for this section"]' browser.query.xpath(selector).click() if state is None: state = 'Withdrawn' remove_temporal_relationship(browser, instructors, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'section.instructors.remove', removeInstructors)) def addStudents(browser, schoolyear, term, section, students, state=None, date=None): browser.ui.section.go(schoolyear, term, section) selector = '//a[@title="Edit students for this section"]' browser.query.xpath(selector).click() add_temporal_relationship(browser, students, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'section.students.add', addStudents)) def removeStudents(browser, schoolyear, term, section, students, state=None, date=None): browser.ui.section.go(schoolyear, term, section) selector = '//a[@title="Edit students for this section"]' browser.query.xpath(selector).click() if state is None: state = 'Withdrawn' remove_temporal_relationship(browser, students, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'section.students.remove', removeStudents)) def visitSection(browser, schoolyear, term, section): browser.open('http://localhost/sections') browser.query.link(schoolyear).click() selector = 'input.text-widget' browser.query.css(selector).type(section) table = browser.query.css('form table') browser.query.name('SEARCH_BUTTON').click() browser.wait(lambda: table.expired) # XXX: Click Show All here in case there are lots of sections selector = ('//td[following-sibling::*[contains(text(),"%s")]]' '/a[text()="%s"]') % (term, section) page = browser.query.tag('html') browser.query.xpath(selector).click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'section.go', visitSection)) def printInstructorsTable(browser, schoolyear, term, section): browser.ui.section.go(schoolyear, term, section) sel = '#section_instruction_person_table-ajax-view-context-instructors-section_instruction_person_table- table.data' table = browser.query.css(sel) print_table(table) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'section.instructors.print_table', printInstructorsTable)) def printStudentsTable(browser, schoolyear, term, section): browser.ui.section.go(schoolyear, term, section) sel = '#section_membership_person_table-ajax-view-context-members-section_membership_person_table- table.data' table = browser.query.css(sel) print_table(table) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'section.students.print_table', printStudentsTable))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def login(browser, username, password): browser.open('http://localhost') browser.query.link('Log in').click() browser.query.name('username').type(username) browser.query.name('password').type(password) page = browser.query.tag('html') browser.query.button('Log in').click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'login', login)) def addPerson(browser, first_name, last_name, username, password, **kw): optional = ( 'prefix', 'middle_name', 'suffix', 'preferred_name', 'gender', 'birth_date', 'ID', 'ethnicity', 'language', 'placeofbirth', 'citizenship', 'group', 'advisor', ) browser.open('http://localhost/persons') page = browser.query.tag('html') browser.query.link('Person').click() browser.wait(lambda: page.expired) browser.query.name('form.widgets.first_name').type(first_name) browser.query.name('form.widgets.last_name').type(last_name) browser.query.name('form.widgets.username').type(username) browser.query.name('form.widgets.password').type(password) browser.query.name('form.widgets.confirm').type(password) for name in optional: if name in kw: value = kw[name] widget_id = ''.join(['form-widgets-', name]) browser.query.id(widget_id).ui.set_value(value) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.add', addPerson)) def addAdvisors(browser, username, advisors, state=None, date=None): browser.open('http://localhost/persons/%s/advisors.html' % username) add_temporal_relationship(browser, advisors, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.advisors.add', addAdvisors)) def addAdvisees(browser, username, advisees, state=None, date=None): browser.open('http://localhost/persons/%s/advisees.html' % username) add_temporal_relationship(browser, advisees, state, date) registry.register('SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'person.advisees.add', addAdvisees))
def registerSeleniumSetup(): try: import selenium except ImportError: return from schooltool.testing import registry import schooltool.testing.selenium def addGroup(browser, schoolyear, title, **kw): optional = ('description', ) browser.query.link('School').click() browser.query.link('Groups').click() browser.query.link(schoolyear).click() browser.query.link('Group').click() browser.query.name('form.widgets.title').type(title) for name in optional: if name in kw: value = kw[name] widget_id = ''.join(['form-widgets-', name]) browser.query.id(widget_id).ui.set_value(value) page = browser.query.tag('html') browser.query.button('Submit').click() browser.wait(lambda: page.expired) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'group.add', addGroup)) def addMembers(browser, schoolyear, group, members, state=None, date=None): browser.ui.group.go(schoolyear, group) selector = '//a[@title="Edit members for this group"]' browser.query.xpath(selector).click() add_temporal_relationship(browser, members, state, date) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'group.members.add', addMembers)) def removeMembers(browser, schoolyear, group, members, state=None, date=None): browser.ui.group.go(schoolyear, group) selector = '//a[@title="Edit members for this group"]' browser.query.xpath(selector).click() if state is None: state = 'Removed' if group != 'Students' else 'Withdrawn' remove_temporal_relationship(browser, members, state, date) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'group.members.remove', removeMembers)) def visitGroup(browser, schoolyear, group): browser.open('http://localhost/groups') browser.query.link(schoolyear).click() browser.query.id('SEARCH').type(group) table = browser.query.css('form table') browser.query.name('SEARCH_BUTTON').click() browser.wait(lambda: table.expired) # XXX: Click Show All here in case there are lots of groups sel = '//a[text()="%s"]' % group page = browser.query.tag('html') browser.query.xpath(sel).click() browser.wait(lambda: page.expired) registry.register( 'SeleniumHelpers', lambda: schooltool.testing.selenium.registerBrowserUI( 'group.go', visitGroup))