class UserModelTest(TestCase): def setUp(self): self.u = UserProfileFactory() def test_gau(self): self.assertEqual(self.u.get_absolute_url(), "/user/%s/" % self.u.username) def test_unicode(self): self.assertEqual(str(self.u), self.u.fullname) def test_active(self): u = UserProfileFactory(status='active') self.assertTrue(u.active()) u = UserProfileFactory(status='inactive') self.assertFalse(u.active()) def test_make_report_events(self): events = self.u._make_report_events(Comment.objects.none(), ActualTime.objects.none()) self.assertEqual(len(events), 0) def test_report(self): at = ActualTimeFactory() u = at.user.userprofile start = datetime(year=2013, month=12, day=16).replace(tzinfo=utc) end = datetime(year=2013, month=12, day=23).replace(tzinfo=utc) r = u.report(start, end) self.assertEqual(len(r['active_projects']), 1) def test_manager_on(self): self.assertEqual(self.u.manager_on(), []) def test_developer_on(self): self.assertEqual(self.u.developer_on(), []) def test_guest_on(self): self.assertEqual(self.u.guest_on(), []) def test_clients_empty(self): self.assertEqual(len(self.u.clients()), 0) def test_user_groups_empty(self): self.assertEqual(len(self.u.user_groups()), 0) def test_user_groups_not_empty(self): GroupFactory(username=self.u) self.assertEqual(len(self.u.user_groups()), 1) def test_users_in_group_empty(self): self.assertEqual(len(self.u.users_in_group()), 0) def test_has_recent_active_projects(self): self.assertFalse(self.u.has_recent_active_projects()) def test_recent_active_projects(self): self.assertEqual(self.u.recent_active_projects(), []) def test_resolved_items_for_interval_empty(self): start = datetime(year=2013, month=12, day=16).replace(tzinfo=utc) end = datetime(year=2013, month=12, day=23).replace(tzinfo=utc) self.assertEqual(len(self.u.resolved_items_for_interval(start, end)), 0) def test_resolved_items_for_interval_with_items(self): with freeze_time('2013-12-20'): ItemFactory() ItemFactory() i = ItemFactory() i.resolve(self.u, 'WORKSFORME', 'resolved') i2 = ItemFactory() i2.resolve(self.u, 'FIXED', 'done') i3 = ItemFactory() i3.verify(self.u, 'verified') start = datetime(year=2013, month=12, day=16).replace(tzinfo=utc) end = datetime(year=2013, month=12, day=23).replace(tzinfo=utc) self.assertEqual( len(self.u.resolved_items_for_interval(start, end)), 2) def test_resolved_items_for_interval_with_auto_verified(self): with freeze_time('2013-12-20'): i = ItemFactory() i.resolve(self.u, 'WORKSFORME', 'resolved') i2 = ItemFactory(owner_user=self.u.user, assigned_user=self.u.user) i2.verify(self.u, 'done') i3 = ItemFactory() i3.verify(self.u, 'verified') start = datetime(year=2013, month=12, day=16).replace(tzinfo=utc) end = datetime(year=2013, month=12, day=23).replace(tzinfo=utc) self.assertEqual( len(self.u.resolved_items_for_interval(start, end)), 2) def test_total_resolve_times(self): self.assertEqual(self.u.total_resolve_times(), 0.) def test_total_assigned_time(self): self.assertEqual(self.u.total_assigned_time(), 0.) def test_group_fullname(self): u = UserProfileFactory(fullname="foo (group)") self.assertEqual(u.group_fullname(), "foo") def test_weekly_report_email_body(self): r = self.u.weekly_report_email_body({ 'resolved_items': 0, 'hours_logged': 0, }) self.assertEqual( r, ('Thus far this week, you have resolved 0 item(s) while logging ' '0.0 hours. Review your weekly report here:\n' 'https://pmt.ctl.columbia.edu/report/user/{}/weekly' '\n\n' 'Your dashboard shows 0 Outstanding Items. Of these, ' '0 have a Resolved status and just need your verification ' 'to close the ticket.' '\n\n' '(PMT Weekly reports end on Sundays at 23:59.)').format( self.u.username)) r = self.u.weekly_report_email_body({ 'resolved_items': 0, 'hours_logged': 1, }) self.assertEqual( r, ('Thus far this week, you have resolved 0 item(s) while logging ' '1.0 hours. Review your weekly report here:\n' 'https://pmt.ctl.columbia.edu/report/user/{}/weekly' '\n\n' 'Your dashboard shows 0 Outstanding Items. Of these, ' '0 have a Resolved status and just need your verification ' 'to close the ticket.' '\n\n' '(PMT Weekly reports end on Sundays at 23:59.)').format( self.u.username)) def test_send_weekly_report(self): self.u.send_weekly_report() self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].subject, "PMT Weekly Report") def test_send_reminder(self): r = ReminderFactory(user=self.u.user) self.u.send_reminder(r) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].subject, '[PMT Reminder] {}'.format(r.item.title)) expected_body = ( 'Reminder: This PMT item is due in {}:\n'.format( simpleduration_string(r.reminder_time)) + 'https://pmt.ctl.columbia.edu{}'.format(r.item.get_absolute_url())) self.assertEqual(mail.outbox[0].body, expected_body) def test_timeline_empty(self): t = self.u.timeline() self.assertEqual(t, []) def test_timeline_notempty(self): StatusUpdateFactory(author=self.u.user) t = self.u.timeline() self.assertEqual(len(t), 1) def test_get_absolute_url(self): u = UserProfileFactory(grp=False) self.assertTrue(u.get_absolute_url().startswith("/user")) u = UserProfileFactory(grp=True) self.assertTrue(u.get_absolute_url().startswith("/group")) def test_progress_report(self): d = self.u.progress_report() self.assertEqual(d['hours_logged'], 0) self.assertEqual(d['week_percentage'], 0) self.assertEqual(d['resolved_items'], 0) def test_subscribed_items(self): r = self.u.subscribed_items() self.assertEqual(len(r), 0) def test_get_email(self): u = UserProfileFactory(email='') u.user.email = "*****@*****.**" u.user.save() self.assertEqual(u.get_email(), u.user.email) def test_get_fullname(self): u = UserProfileFactory(fullname='') self.assertEqual(u.get_fullname(), u.username) def test_open_owned_items(self): profile = UserProfileFactory() # not the owner ItemFactory(assigned_user=profile.user) # owned but in the Someday/Maybe milestone s = MilestoneFactory(name='Someday/Maybe') ItemFactory(owner_user=profile.user, milestone=s) # owned i = ItemFactory(owner_user=profile.user) qs = profile.open_owned_items() self.assertEquals(qs.count(), 1) self.assertEquals(qs.first(), i)
def test_get_absolute_url(self): u = UserProfileFactory(grp=False) self.assertTrue(u.get_absolute_url().startswith("/user")) u = UserProfileFactory(grp=True) self.assertTrue(u.get_absolute_url().startswith("/group"))