
import datetime
from django.contrib.auth.hashers import make_password
from django.contrib.auth.models import User
from django.test import TestCase
from django.test.client import Client
from helpdesk.models import FollowUp, Queue, Ticket
import uuid

class TimeSpentTestCase(TestCase):

    def setUp(self):
        self.queue_public = Queue.objects.create(
            title='Queue 1',
            slug='q1',
            allow_public_submission=True,
            dedicated_time=datetime.timedelta(minutes=60)
        )

        self.ticket_data = {
            'title': 'Test Ticket',
            'description': 'Some Test Ticket',
        }

        ticket_data = dict(queue=self.queue_public, **self.ticket_data)
        self.ticket = Ticket.objects.create(**ticket_data)

        self.client = Client()

        user1_kwargs = {
            'username': 'staff',
            'email': 'staff@example.com',
            'password': make_password('Test1234'),
            'is_staff': True,
            'is_superuser': False,
            'is_active': True
        }
        self.user = User.objects.create(**user1_kwargs)

    def test_add_followup(self):
        """Tests whether staff can delete tickets"""

        message_id = uuid.uuid4().hex
        followup = FollowUp.objects.create(
            ticket=self.ticket,
            date=datetime.datetime.now(),
            title="Testing followup",
            comment="Testing followup time spent",
            public=True,
            user=self.user,
            new_status=1,
            message_id=message_id,
            time_spent=datetime.timedelta(minutes=30)
        )

        followup.save()

        self.assertEqual(followup.time_spent.seconds, 1800)
        self.assertEqual(self.ticket.time_spent.seconds, 1800)
        self.assertEqual(self.queue_public.time_spent.seconds, 1800)
        self.assertTrue(
            self.queue_public.dedicated_time.seconds > self.queue_public.time_spent.seconds
        )
