from django.contrib.auth import get_user_model
from django.test import TestCase
from django.urls import reverse

from apps.customers.models import Customer
from apps.tasks.models import Task


class TaskListViewTests(TestCase):
    def setUp(self):
        self.user = get_user_model().objects.create_user(username='advisor')
        self.customer = Customer.objects.create(full_name='Client One', owner=self.user)

    def test_task_list_supports_status_filter(self):
        Task.objects.create(title='Qualify lead', customer=self.customer, status=Task.Status.TODO)
        Task.objects.create(title='Send proposal', customer=self.customer, status=Task.Status.DONE)

        response = self.client.get(reverse('tasks:list'), {'status': Task.Status.DONE})

        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'Send proposal')
        self.assertNotContains(response, 'Qualify lead')

    def test_task_list_supports_search_filter(self):
        Task.objects.create(title='Call customer', customer=self.customer)
        Task.objects.create(title='Prepare report', customer=self.customer)

        response = self.client.get(reverse('tasks:list'), {'q': 'call'})

        self.assertContains(response, 'Call customer')
        self.assertNotContains(response, 'Prepare report')
