Пример #1
0
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)
Пример #2
0
    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"))