示例#1
0
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)
示例#2
0
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))
示例#3
0
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))
示例#4
0
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))
示例#5
0
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))
示例#6
0
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))
示例#7
0
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)
示例#8
0
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)
示例#9
0
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)
示例#10
0
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)
示例#11
0
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)
示例#12
0
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)
示例#13
0
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)
示例#14
0
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)
示例#15
0
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)
示例#16
0
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)
示例#17
0
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))
示例#18
0
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))
示例#19
0
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)
示例#20
0
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))
示例#21
0
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))
示例#22
0
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))
示例#23
0
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))
示例#24
0
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))
示例#25
0
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))
示例#26
0
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))