Esempio n. 1
0
 def test_list_ordering(self):
     currentperiodbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()
     for short_name in ('week1', 'week2', 'week3'):
         currentperiodbuilder.add_assignment(short_name)\
             .add_group().add_examiners(self.examiner1)
     response = self._getas('examiner1')
     self.assertEquals(response.status_code, 200)
     html = response.content
     self.assertEquals(len(cssFind(html, '.active-assignment-listing-item')), 3)
     names = [name.text.strip() for name in cssFind(html, '.assignmentname')]
     self.assertEquals(names, [
         'duck1010.active - week3',
         'duck1010.active - week2',
         'duck1010.active - week1'])
Esempio n. 2
0
 def test_deadline_ordering(self):
     groupbuilder = self.week1builder.add_group(
             examiners=[self.examiner1])
     deadline2 = groupbuilder.add_deadline_in_x_weeks(weeks=1).deadline
     deadline3 = groupbuilder.add_deadline_in_x_weeks(weeks=2).deadline
     deadline1 = groupbuilder.add_deadline_x_weeks_ago(weeks=1).deadline
     with self.settings(DATETIME_FORMAT=_DJANGO_ISODATETIMEFORMAT, USE_L10N=False):
         response = self._getas('examiner1', groupbuilder.group.id)
     self.assertEquals(response.status_code, 200)
     html = response.content
     prefixes = map(lambda element: element.text.strip(), cssFind(html, '.deadline-header-prefix'))
     self.assertEquals(prefixes, ['Deadline 3', 'Deadline 2', 'Deadline 1'])
     datetimes = map(lambda element: element.text.strip(), cssFind(html, '.deadline-datetime'))
     self.assertEquals(datetimes,
         [_isoformat_datetime(deadline.deadline) for deadline in (deadline3, deadline2, deadline1)])
Esempio n. 3
0
 def test_deadline_render_no_text(self):
     groupbuilder = self.week1builder.add_group(
             examiners=[self.examiner1])
     deadlinebuilder = groupbuilder.add_deadline_in_x_weeks(weeks=1)
     response = self._getas('examiner1', groupbuilder.group.id)
     html = response.content
     self.assertEquals(len(cssFind(html, '.deadlinebox .deadline-text')), 0)
Esempio n. 4
0
 def test_filemeta_links_multi(self):
     deliverybuilder = self.week1builder\
         .add_group(examiners=[self.examiner1])\
         .add_deadline_x_weeks_ago(weeks=1)\
         .add_delivery_x_hours_before_deadline(hours=1)
     deliverybuilder.add_filemeta( filename='b.txt', data='test')
     deliverybuilder.add_filemeta(filename='a.txt', data='test')
     response = self._getas('examiner1', deliverybuilder.delivery.id)
     html = response.content
     self.assertTrue(cssExists(html, '.delivery_files'))
     self.assertEquals(len(cssFind(html, '.delivery_files a')), 3) # One for the "Download files"-button and one for each file
     self.assertTrue(cssExists(html, '.delivery_files .btn'))
     self.assertEquals(cssGet(html, '.delivery_files .btn').text.strip(),
         'Download files')
     filenames = map(lambda e: e.text.strip(), cssFind(html, '.delivery_files ul li'))
     self.assertEquals(filenames, ['a.txt', 'b.txt'])
Esempio n. 5
0
    def test_render(self):
        myregistry = GradingSystemPluginRegistry()
        myregistry.add(MockPointsPluginApi)
        self.assignmentbuilder.update(grading_system_plugin_id=MockPointsPluginApi.id)
        with patch('devilry.apps.core.models.assignment.gradingsystempluginregistry', myregistry):
            response = self.get_as(self.admin1)
            self.assertEquals(response.status_code, 200)
            html = response.content
            self.assertEquals(cssGet(html, '.page-header h1').text.strip(),
                'How are results presented to the student?')
            self.assertEquals(len(cssFind(html, '.devilry_gradingsystem_verbose_selectbox')), 3)

            self.assertEquals(cssGet(html, '.passed-failed_points_to_grade_mapper_box h2').text.strip(),
                'As passed or failed')
            self.assertEquals(cssGet(html, '.passed-failed_points_to_grade_mapper_box a.btn')['href'],
                '?points_to_grade_mapper=passed-failed')

            self.assertEquals(cssGet(html, '.raw-points_points_to_grade_mapper_box h2').text.strip(),
                'As points')
            self.assertEquals(cssGet(html, '.raw-points_points_to_grade_mapper_box a.btn')['href'],
                '?points_to_grade_mapper=raw-points')

            self.assertEquals(cssGet(html, '.custom-table_points_to_grade_mapper_box h2').text.strip(),
                'As a text looked up in a custom table')
            self.assertEquals(cssGet(html, '.custom-table_points_to_grade_mapper_box a.btn')['href'],
                '?points_to_grade_mapper=custom-table')
Esempio n. 6
0
 def test_assignmentadmin(self):
     self.assignmentbuilder.add_admins(self.admin1)
     response = self.get_as(self.admin1)
     html = response.content
     breadcrumb = cssFind(html, 'ol.breadcrumb li')
     self.assertEquals(len(breadcrumb), 4)
     self.assertEquals(breadcrumb[0].text, 'Home')
     self.assertEquals(breadcrumb[1].text, 'Subject administrator')
     self.assertEquals(breadcrumb[2].text, 'duck1010.active.myassignment')
     self.assertEquals(breadcrumb[3].text, 'Grading system')
Esempio n. 7
0
 def test_delivery_order(self):
     groupbuilder = self.week1builder.add_group(
             examiners=[self.examiner1])
     deadlinebuilder = groupbuilder.add_deadline_in_x_weeks(weeks=1)
     delivery1 = deadlinebuilder.add_delivery_x_hours_before_deadline(hours=10).delivery
     delivery2 = deadlinebuilder.add_delivery_x_hours_before_deadline(hours=5).delivery
     delivery3 = deadlinebuilder.add_delivery_x_hours_before_deadline(hours=1).delivery
     with self.settings(DATETIME_FORMAT=_DJANGO_ISODATETIMEFORMAT, USE_L10N=False):
         response = self._getas('examiner1', groupbuilder.group.id)
     html = response.content
     deliveries = map(lambda element: element.text.strip(), cssFind(html, '.delivery h3 a'))
     self.assertEquals(deliveries,
         ['Delivery #3', 'Delivery #2', 'Delivery #1'])
     datetimes = map(lambda element: element.text.strip(), cssFind(html, '.delivery .time_of_delivery'))
     self.assertEquals(datetimes, [
         _isoformat_datetime(delivery3.time_of_delivery),
         _isoformat_datetime(delivery2.time_of_delivery),
         _isoformat_datetime(delivery1.time_of_delivery),
     ])
Esempio n. 8
0
    def test_render_current_group_members(self):
        otheruser = UserBuilder('otheruser').user
        group = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser, otheruser]).group

        html = self._getas(group.id, self.testuser).content
        names = [element.text.strip() for element in \
            cssFind(html, '#devilry_student_groupinvite_overview_already_in_group .groupmember_username')]
        self.assertEquals(set(names), set(['testuser', 'otheruser']))
Esempio n. 9
0
 def test_list_single(self):
     currentperiodbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()
     week1builder = currentperiodbuilder.add_assignment('week1', 'Week 1')
     week1builder.add_group().add_examiners(self.examiner1)
     response = self._getas('examiner1')
     self.assertEquals(response.status_code, 200)
     html = response.content
     self.assertEquals(len(cssFind(html, '.active-assignment-listing-item')), 1)
     linktag = cssGet(html, 'a.assignment-duck1010.active.week1')
     self.assertEquals(linktag.text.strip(), 'duck1010.active - Week 1')
     self.assertEquals(linktag['href'], '/devilry_examiner/allgroupsoverview/{}/waiting_for_feedback_or_all'.format(week1builder.assignment.id))
Esempio n. 10
0
 def test_render(self):
     myregistry = GradingSystemPluginRegistry()
     myregistry.add(MockPointsPluginApi)
     myregistry.add(MockApprovedPluginApi)
     with patch('devilry_gradingsystem.views.admin.selectplugin.gradingsystempluginregistry', myregistry):
         response = self.get_as(self.admin1)
         self.assertEquals(response.status_code, 200)
         html = response.content
         self.assertEquals(cssGet(html, '.page-header h1').text.strip(),
             'How would you like to provide feedback to your students?')
         self.assertEquals(len(cssFind(html, '.devilry_gradingsystem_verbose_selectbox')), 2)
Esempio n. 11
0
 def test_filemeta_links_single(self):
     deliverybuilder = self.week1builder\
         .add_group(examiners=[self.examiner1])\
         .add_deadline_x_weeks_ago(weeks=1)\
         .add_delivery_x_hours_before_deadline(hours=1)
     deliverybuilder.add_filemeta(filename='testfile.txt', data='test')
     response = self._getas('examiner1', deliverybuilder.delivery.id)
     html = response.content
     self.assertTrue(cssExists(html, '.delivery_files'))
     self.assertEquals(len(cssFind(html, '.delivery_files a')), 1)
     self.assertTrue(cssExists(html, '.delivery_files .btn'))
     self.assertEquals(cssGet(html, '.delivery_files a.btn').text.strip(),
         'testfile.txt')
 def test_list_single(self):
     self.testhelper.add(
         nodes="uni",
         subjects=["sub"],
         periods=["period1:begins(-2)"],  # 2 months ago
         assignments=["week2:pub(1)"],  # 2 months + 1day ago
         assignmentgroups=["g1:candidate(student1):examiner(examiner1)"],
     )
     response = self._getas("examiner1")
     self.assertEquals(response.status_code, 200)
     html = response.content
     listitems = cssFind(html, "li.active-assignment-listing-item")
     self.assertEquals(len(listitems), 1)
     self.assertEquals(listitems[0].text.strip(), "sub.period1.week2")
Esempio n. 13
0
    def test_render_waiting_for_response_from(self):
        inviteuser1 = UserBuilder('inviteuser1').user
        inviteuser2 = UserBuilder('inviteuser2').user
        group = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser]).group
        for inviteuser in (inviteuser1, inviteuser2):
            group.groupinvite_set.create(
                sent_by=self.testuser,
                sent_to=inviteuser)

        html = self._getas(group.id, self.testuser).content
        names = [element.text.strip() for element in \
            cssFind(html, '#devilry_student_groupinvite_overview_waiting_for_response_from .invite_sent_to_displayname')]
        self.assertEquals(set(names), set(['inviteuser1', 'inviteuser2']))
Esempio n. 14
0
    def test_render_send_invite_to_selectlist(self):
        UserBuilder('ignoreduser')
        alreadyingroupuser1 = UserBuilder('alreadyingroupuser1').user
        alreadyingroupuser2 = UserBuilder('alreadyingroupuser2').user
        hasinviteuser = UserBuilder('hasinviteuser').user
        matchuser1 = UserBuilder('matchuser1').user
        matchuser2 = UserBuilder('matchuser2', full_name='Match User Two').user

        group = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_relatedstudents(
                alreadyingroupuser1, alreadyingroupuser2, hasinviteuser,
                matchuser1, matchuser2)\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[alreadyingroupuser1, alreadyingroupuser2]).group
        group.groupinvite_set.create(
            sent_by=alreadyingroupuser1,
            sent_to=hasinviteuser)

        html = self._getas(group.id, alreadyingroupuser1).content
        send_to_options = [e.text.strip() for e in cssFind(html, '#id_sent_to option')]
        self.assertEquals(send_to_options, ['', 'matchuser1', 'Match User Two'])
Esempio n. 15
0
 def test_render_custom_table(self):
     myregistry = GradingSystemPluginRegistry()
     myregistry.add(MockPointsPluginApi)
     self.assignmentbuilder.update(
         grading_system_plugin_id=MockPointsPluginApi.id,
         points_to_grade_mapper='custom-table')
     self.assignmentbuilder.assignment.get_point_to_grade_map().create_map(
         (0, 'Bad'),
         (30, 'Better'),
         (60, 'Good'))
     with patch('devilry.apps.core.models.assignment.gradingsystempluginregistry', myregistry):
         response = self.get_as(self.admin1)
         self.assertEquals(response.status_code, 200)
         html = response.content
         self.assertEquals(cssGet(html, '.page-header h1').text.strip(),
             'Select the grade required to pass')
         self.assertTrue(cssExists(html, '#id_passing_grade_min_points'))
         self.assertEquals(len(cssFind(html, '#id_passing_grade_min_points option')), 3)
         self.assertEquals(cssGet(html, '#id_passing_grade_min_points option[value=0]').text.strip(), 'Bad')
         self.assertEquals(cssGet(html, '#id_passing_grade_min_points option[value=30]').text.strip(), 'Better')
         self.assertEquals(cssGet(html, '#id_passing_grade_min_points option[value=60]').text.strip(), 'Good')