from datetime import datetime

from django.urls import reverse
from django.utils import timezone
from model_bakery import baker

from glitchtip.test_utils.test_case import GlitchTipTestCase


class StatsV2APITestCase(GlitchTipTestCase):
    def setUp(self):
        self.create_user_and_project()
        self.url = reverse("api:stats_v2", args=[self.organization.slug])

    def test_get(self):
        baker.make("issue_events.IssueEvent", issue__project=self.project)
        start = timezone.now() - timezone.timedelta(hours=2)
        end = timezone.now()
        res = self.client.get(
            self.url,
            {"category": "error", "start": start, "end": end, "field": "sum(quantity)"},
        )
        self.assertEqual(res.status_code, 200)

        response = res.json()
        self.assertIsInstance(response["intervals"], list)
        self.assertEqual(len(response["intervals"]), 4)
        self.assertIsInstance(datetime.fromisoformat(response["intervals"][0]), datetime)