def test_status_returns_most_recent_status(self):
        '''
        Test the status property returns the most advanced status that has been logged.
        '''
        test_ticket = Ticket(user=self.test_user,
                             title='Status',
                             content='Test content')
        test_ticket.save()

        test_ticket = Ticket.objects.get(id=test_ticket.id)
        self.assertEqual('awaiting approval', test_ticket.status)

        test_ticket.approved = timezone.now()
        test_ticket.save()
        test_ticket = Ticket.objects.get(id=test_ticket.id)
        self.assertEqual('approved', test_ticket.status)

        test_ticket.doing = timezone.now()
        test_ticket.save()
        test_ticket = Ticket.objects.get(id=test_ticket.id)
        self.assertEqual('doing', test_ticket.status)

        test_ticket.done = timezone.now()
        test_ticket.save()
        test_ticket = Ticket.objects.get(id=test_ticket.id)
        self.assertEqual('done', test_ticket.status)
    def test_set_status_sets_all_unset_previous_status_fields(self):
        '''
        Test that the set status method sets all previous unset status fields to the current time,
        but leaves set ones as they are.
        '''
        test_ticket = Ticket(user=self.test_user,
                             title='Fail To Set Status',
                             content='Test content')

        past_date = timezone.now() - timedelta(days=1)
        test_ticket.approved = past_date
        test_ticket.save()

        test_ticket.set_status('done')

        test_ticket = Ticket.objects.get(id=test_ticket.id)
        self.assertEqual(test_ticket.approved, past_date)
        self.assertIsNotNone(test_ticket.doing)
        self.assertIsNotNone(test_ticket.done)