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')
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')
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')
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)