Skip to content
Snippets Groups Projects
tests.py 4.86 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.apps import apps
    from django.test import TestCase, override_settings
    
    from django.urls import reverse
    from django.utils.timezone import now
    
    
    from AKDashboard.models import DashboardButton
    
    from AKModel.models import Event, AK, AKCategory
    
    
    class DashboardTests(TestCase):
        @classmethod
        def setUpTestData(cls):
            super().setUpTestData()
            cls.event = Event.objects.create(
    
                name="Dashboard Test Event",
                slug="dashboardtest",
    
                timezone=pytz.utc,
                start=now(),
                end=now(),
                active=True,
    
            )
            cls.default_category = AKCategory.objects.create(
                name="Test Category",
                event=cls.event,
            )
    
        def test_dashboard_view(self):
            url = reverse('dashboard:dashboard_event', kwargs={"slug": self.event.slug})
            response = self.client.get(url)
            self.assertEqual(response.status_code, 200)
    
        def test_nonexistent_dashboard_view(self):
            url = reverse('dashboard:dashboard_event', kwargs={"slug": "nonexistent-event"})
            response = self.client.get(url)
            self.assertEqual(response.status_code, 404)
    
    
        @override_settings(DASHBOARD_SHOW_RECENT=True)
    
        def test_history(self):
            url = reverse('dashboard:dashboard_event', kwargs={"slug": self.event.slug})
    
            # History should be empty
            response = self.client.get(url)
            self.assertQuerysetEqual(response.context["recent_changes"], [])
    
            AK.objects.create(
                name="Test AK",
                category=self.default_category,
                event=self.event,
            )
    
            # History should now contain one AK (Test AK)
            response = self.client.get(url)
            self.assertEqual(len(response.context["recent_changes"]), 1)
            self.assertEqual(response.context["recent_changes"][0]['text'], "New AK: Test AK.")
    
    
        def test_public(self):
            url_dashboard_index = reverse('dashboard:dashboard')
            url_event_dashboard = reverse('dashboard:dashboard_event', kwargs={"slug": self.event.slug})
    
            # Non-Public event (should not be part of the global dashboard
            # but should have an individual dashboard page for those knowing the url)
            self.event.public = False
            self.event.save()
            response = self.client.get(url_dashboard_index)
            print(response)
            self.assertEqual(response.status_code, 200)
            self.assertFalse(self.event in response.context["events"])
            response = self.client.get(url_event_dashboard)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(response.context["event"], self.event)
    
            # Public event -- should be part of the global dashboard
            self.event.public = True
            self.event.save()
            response = self.client.get(url_dashboard_index)
            self.assertEqual(response.status_code, 200)
            self.assertTrue(self.event in response.context["events"])
    
        def test_active(self):
            url_event_dashboard = reverse('dashboard:dashboard_event', kwargs={"slug": self.event.slug})
    
            if apps.is_installed('AKSubmission'):
                # Non-active event -> No submission
                self.event.active = False
                self.event.save()
                response = self.client.get(url_event_dashboard)
                self.assertNotContains(response, "AK Submission")
    
                # Active event -> Submission should be open
                self.event.active = True
                self.event.save()
                response = self.client.get(url_event_dashboard)
                self.assertContains(response, "AK Submission")
    
        def test_plan_hidden(self):
            url_event_dashboard = reverse('dashboard:dashboard_event', kwargs={"slug": self.event.slug})
    
            if apps.is_installed('AKPlan'):
                # Plan hidden? No buttons should show up
                self.event.plan_hidden = True
                self.event.save()
                response = self.client.get(url_event_dashboard)
                self.assertNotContains(response, "Current AKs")
                self.assertNotContains(response, "AK Wall")
    
                # Plan not hidden?
                # Buttons for current AKs and AK Wall should be on the page
                self.event.plan_hidden = False
                self.event.save()
                response = self.client.get(url_event_dashboard)
                self.assertContains(response, "Current AKs")
                self.assertContains(response, "AK Wall")
    
        def test_dashboard_buttons(self):
            url_event_dashboard = reverse('dashboard:dashboard_event', kwargs={"slug": self.event.slug})
    
            response = self.client.get(url_event_dashboard)
            self.assertNotContains(response, "Dashboard Button Test")
    
            DashboardButton.objects.create(
                text="Dashboard Button Test",
                event=self.event
            )
    
            response = self.client.get(url_event_dashboard)
            self.assertContains(response, "Dashboard Button Test")