Repository: wagtail/wagtail
File: wagtail/admin/tests/test_templatetags.py (Python)

Code before:
            Context({"page": page, "request": self.request})
        )
        self.assertBreadcrumbsItemsRendered(items, rendered)

        soup = self.get_soup(rendered)
        invalid_icons = soup.select("ol li:not(:last-child) svg use[href='#icon-site']")
        self.assertEqual(len(invalid_icons), 0)
        icon = soup.select_one("ol li:last-child svg use[href='#icon-site']")
        self.assertIsNotNone(icon)


class DarkLightModeTest(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
    fixtures = ["test.json"]

    def setUp(self):
        self.request = get_dummy_request()
        self.user = self.login()
        self.request.user = self.user

        self.profile, created = UserProfile.objects.get_or_create(user=self.user)

    def test_default_mode(self):
        template = """
            {% load wagtailadmin_tags %}
            <body class="{% admin_theme_color_scheme %}">
            </body>
        """
        page = Page.objects.get(id=1)
        rendered = Template(template).render(
            Context({"page": page, "request": self.request})
        )

        soup = self.get_soup(rendered)
        body = soup.select_one("body")
        self.assertIsNotNone(body)
        self.assertIn("dark", body["class"])
        self.assertIn("light", body["class"])

    def test_dark_mode(self):
        self.profile.theme = "dark"
        self.profile.save()

        template = """
            {% load wagtailadmin_tags %}
            <body class="{% admin_theme_color_scheme %}">
            </body>
        """
        page = Page.objects.get(id=1)
        rendered = Template(template).render(
            Context({"page": page, "request": self.request})
        )

Review comment (suggestion):
It doesn't make sense to use the value for the `class` attribute. Please refer to what the code is supposed to do, i.e. determining the value for the `<meta name="color-scheme"` tag, so the test should be written accordingly.

Code after:
            Context({"page": page, "request": self.request})
        )
        self.assertBreadcrumbsItemsRendered(items, rendered)

        soup = self.get_soup(rendered)
        invalid_icons = soup.select("ol li:not(:last-child) svg use[href='#icon-site']")
        self.assertEqual(len(invalid_icons), 0)
        icon = soup.select_one("ol li:last-child svg use[href='#icon-site']")
        self.assertIsNotNone(icon)


class ThemeColorSchemeTest(AdminTemplateTestUtils, WagtailTestUtils, TestCase):
    def setUp(self):
        self.request = get_dummy_request()
        self.user = self.login()
        self.request.user = self.user
        self.profile = UserProfile.get_for_user(self.user)

    def test_default_mode(self):
        template = """
            {% load wagtailadmin_tags %}
            <meta name="color-scheme" content="{% admin_theme_color_scheme %}">
        """
        rendered = Template(template).render(Context({"request": self.request}))

        soup = self.get_soup(rendered)
        meta_tag = soup.find("meta", {"name": "color-scheme"})
        self.assertIsNotNone(meta_tag)
        self.assertEqual(meta_tag["content"], "dark light")

    def test_dark_mode(self):
        self.profile.theme = "dark"
        self.profile.save()

        template = """
            {% load wagtailadmin_tags %}
            <meta name="color-scheme" content="{% admin_theme_color_scheme %}">
        """
        rendered = Template(template).render(Context({"request": self.request}))

        soup = self.get_soup(rendered)
        meta_tag = soup.find("meta", {"name": "color-scheme"})
        self.assertIsNotNone(meta_tag)
        self.assertEqual(meta_tag["content"], "dark")

    def test_light_mode(self):
        self.profile.theme = "light"
        self.profile.save()

        template = """
            {% load wagtailadmin_tags %}