Пример #1
0
 def test_post_invalid(self):
     testuser = UserBuilder('testuser')
     testuser.update(languagecode='nb')
     with self.settings(LANGUAGES=[('en', 'English')]):
         response = self.post_as(testuser.user, self.url, {
             'languagecode': 'tu',
             'redirect_url': '/successtest'
         })
         self.assertEquals(response.status_code, 400)
         testuser.reload_from_db()
         self.assertEquals(testuser.user.languagecode, 'nb')
 def test_post_invalid(self):
     testuser = UserBuilder('testuser')
     testuser.update(
         languagecode='nb'
     )
     with self.settings(LANGUAGES=[('en', 'English')]):
         response = self.post_as(testuser.user, self.url, {
             'languagecode': 'tu',
             'redirect_url': '/successtest'
         })
         self.assertEqual(response.status_code, 400)
         testuser.reload_from_db()
         self.assertEqual(testuser.user.languagecode, 'nb')
Пример #3
0
 def test_post_valid(self):
     testuser = UserBuilder('testuser')
     testuser.update(
         languagecode='nb'
     )
     with self.settings(LANGUAGES=[('en', 'English')]):
         response = self.post_as(testuser.user, self.url, {
             'languagecode': 'en',
             'redirect_url': '/successtest'
         })
         self.assertEquals(response.status_code, 302)
         self.assertEquals(response['Location'], 'http://testserver/successtest')
         testuser.reload_from_db()
         self.assertEquals(testuser.user.languagecode, 'en')
Пример #4
0
class TestAboutMeView(TestCase):
    def setUp(self):
        self.testuserbuilder = UserBuilder('testuserbuilder')
        self.url = reverse('devilry_header_aboutme')

    def _getas(self, user, *args, **kwargs):
        self.client.login(username=user.shortname, password='******')
        return self.client.get(self.url, *args, **kwargs)

    def test_nologin(self):
        response = self.client.get(self.url)
        self.assertEquals(response.status_code, 302)

    def test_render_noinput(self):
        response = self._getas(self.testuserbuilder.user)
        self.assertEquals(response.status_code, 200)
        # html = response.content

    def test_languageselect(self):
        self.testuserbuilder.update(
            languagecode='en'
        )
        with self.settings(LANGUAGES=[('en', 'English'), ('nb', 'Norwegian')]):
            html = self._getas(self.testuserbuilder.user).content
            self.assertTrue(cssExists(html,
                '#devilry_change_language_form'))
            self.assertEquals(
                cssGet(html, '#devilry_change_language_form option[value="en"]')['selected'],
                'selected')

    def test_languageselect_no_current_language(self):
        with self.settings(
                LANGUAGES=[('en', 'English'), ('nb', 'Norwegian')],
                LANGUAGE_CODE='nb'):
            html = self._getas(self.testuserbuilder.user).content
            self.assertTrue(cssExists(html, '#devilry_change_language_form'))
            self.assertEquals(
                cssGet(html, '#devilry_change_language_form option[value="nb"]')['selected'],
                'selected')
Пример #5
0
class TestProjectGroupOverviewView(TestCase):
    def setUp(self):
        self.testuserbuilder = UserBuilder('testuser')
        self.testuser = self.testuserbuilder.user

    def _getas(self, group_id, user, *args, **kwargs):
        self.client.login(username=user.shortname, password='******')
        url = reverse_cradmin_url(
            instanceid='devilry_student_group',
            appname='projectgroup',
            roleid=group_id
        )
        return self.client.get(url, *args, **kwargs)

    def _postas(self, group_id, user, *args, **kwargs):
        self.client.login(username=user.shortname, password='******')
        url = reverse_cradmin_url(
            instanceid='devilry_student_group',
            appname='projectgroup',
            roleid=group_id
        )
        return self.client.post(url, *args, **kwargs)

    def test_render(self):
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1')\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)
        response = self._getas(groupbuilder.group.id, self.testuser)
        self.assertEquals(response.status_code, 200)
        html = response.content
        self.assertEquals(cssGet(html, 'h1').text.strip(), 'Project group')

    def test_groupinvite_not_allowed(self):
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=False)\
            .add_group(students=[self.testuser])
        html = self._getas(groupbuilder.group.id, self.testuser).content
        self.assertFalse(cssExists(html, '#devilry_student_projectgroupoverview_invitebox'))

    def test_groupinvite_allowed(self):
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)
        html = self._getas(groupbuilder.group.id, self.testuser).content
        self.assertTrue(cssExists(html, '#devilry_student_projectgroupoverview_invitebox'))

    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

        groupbuilder = 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])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)
        groupbuilder.group.groupinvite_set.create(
            sent_by=alreadyingroupuser1,
            sent_to=hasinviteuser)

        html = self._getas(groupbuilder.group.id, alreadyingroupuser1).content
        send_to_options = [e.text.strip() for e in cssFind(html, '#id_sent_to option')]
        self.assertEquals(set(send_to_options), {'', 'matchuser1', 'Match User Two'})

    def test_render_waiting_for_response_from(self):
        inviteuser1 = UserBuilder('inviteuser1').user
        inviteuser2 = UserBuilder('inviteuser2').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)
        for inviteuser in (inviteuser1, inviteuser2):
            groupbuilder.group.groupinvite_set.create(
                sent_by=self.testuser,
                sent_to=inviteuser)

        html = self._getas(groupbuilder.group.id, self.testuser).content
        names = [element.text.strip() for element in \
            cssFind(html, '#devilry_student_projectgroup_overview_waiting_for_response_from .invite_sent_to_displayname')]
        self.assertEquals(set(names), {'inviteuser1', 'inviteuser2'})

    def test_render_current_group_members_usernames(self):
        otheruser = UserBuilder('otheruser').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser, otheruser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        html = self._getas(groupbuilder.group.id, self.testuser).content
        selector = htmls.S(html)
        usernames = [element.alltext_normalized
                     for element in selector.list('.devilry-student-projectgroupoverview-username')]
        self.assertEquals({'testuser', 'otheruser'}, set(usernames))

    def test_render_current_group_members_emails(self):
        otheruser = UserBuilder('otheruser').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser, otheruser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        html = self._getas(groupbuilder.group.id, self.testuser).content
        selector = htmls.S(html)
        emails = [element.alltext_normalized
                  for element in selector.list('.devilry-student-projectgroupoverview-email')]
        self.assertEquals({'*****@*****.**', '*****@*****.**'}, set(emails))

    def test_render_current_group_members_fullnames(self):
        otheruser = UserBuilder('otheruser', full_name='Other User').user
        self.testuserbuilder.update(fullname='Test User')
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuserbuilder.user, otheruser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        html = self._getas(groupbuilder.group.id, self.testuserbuilder.user).content
        selector = htmls.S(html)
        emails = [element.alltext_normalized
                  for element in selector.list('.devilry-student-projectgroupoverview-fullname')]
        self.assertEquals({'Test User', 'Other User'}, set(emails))

    def test_send_to_post(self):
        inviteuser = UserBuilder('inviteuser').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_relatedstudents(self.testuser, inviteuser)\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        self.assertEquals(GroupInvite.objects.count(), 0)
        response = self._postas(groupbuilder.group.id, self.testuser, {
            'sent_to': inviteuser.id
        })
        self.assertEquals(response.status_code, 302)
        self.assertEquals(GroupInvite.objects.count(), 1)
        invite = GroupInvite.objects.all()[0]
        self.assertEquals(invite.sent_by, self.testuser)
        self.assertEquals(invite.sent_to, inviteuser)
        self.assertEquals(invite.accepted, None)

    def test_send_to_post_notrelated(self):
        inviteuser = UserBuilder('inviteuser').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_relatedstudents(self.testuser)\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        self.assertEquals(GroupInvite.objects.count(), 0)
        response = self._postas(groupbuilder.group.id, self.testuser, {
            'sent_to': inviteuser.id
        })
        self.assertEquals(response.status_code, 200)
        self.assertIn(
            'Select a valid choice. {} is not one of the available choices.'.format(inviteuser.id),
            response.content)