from django.contrib.auth.models import User
from django.test import Client, TestCase


class AdminTest(TestCase):
    def login(self):
        client = Client()
        u = User.objects.create(
            username="test", is_active=True, is_staff=True, is_superuser=True
        )
        client.force_login(u)
        return client

    def test_dashboard(self):
        client = self.login()
        response = client.get("/admin/")
        self.assertContains(response, '<div class="groups">')
        self.assertContains(response, "<h2>Modules</h2>")
        self.assertContains(response, "<h2>Preferences</h2>")

        print(response, response.content.decode("utf-8"))

from django.contrib import admin
from django.contrib.auth.models import User
from django.test import Client, RequestFactory, TestCase

from fhadmin.templatetags.fhadmin_module_groups import generate_group_list


class AdminTest(TestCase):
    def login(self):
        client = Client()
        u = User.objects.create(
            username="test", is_active=True, is_staff=True, is_superuser=True
        )
        client.force_login(u)
        return client

    def test_dashboard(self):
        client = self.login()
        response = client.get("/admin/")
        self.assertContains(response, '<div class="groups">')
        self.assertContains(response, "<h2>Modules</h2>")
        self.assertContains(response, "<h2>Preferences</h2>")

        # print(response, response.content.decode("utf-8"))

    def test_app_list(self):
        request = RequestFactory().get("/")
        request.user = User.objects.create(is_superuser=True)

        groups = list(generate_group_list(admin.sites.site, request))
        # from pprint import pprint; pprint(groups)

        self.assertEqual(groups[0][0], "Modules")
        self.assertEqual(groups[0][1][0]["app_label"], "testapp")
        self.assertEqual(len(groups[0][1][0]["models"]), 1)

Test the app list generation a bit
Test the app list generation a bit

+ from django.contrib import admin
  from django.contrib.auth.models import User
- from django.test import Client, TestCase
+ from django.test import Client, RequestFactory, TestCase
+ 
+ from fhadmin.templatetags.fhadmin_module_groups import generate_group_list
  
  
  class AdminTest(TestCase):
      def login(self):
          client = Client()
          u = User.objects.create(
              username="test", is_active=True, is_staff=True, is_superuser=True
          )
          client.force_login(u)
          return client
  
      def test_dashboard(self):
          client = self.login()
          response = client.get("/admin/")
          self.assertContains(response, '<div class="groups">')
          self.assertContains(response, "<h2>Modules</h2>")
          self.assertContains(response, "<h2>Preferences</h2>")
  
-         print(response, response.content.decode("utf-8"))
+         # print(response, response.content.decode("utf-8"))
  
+     def test_app_list(self):
+         request = RequestFactory().get("/")
+         request.user = User.objects.create(is_superuser=True)
+ 
+         groups = list(generate_group_list(admin.sites.site, request))
+         # from pprint import pprint; pprint(groups)
+ 
+         self.assertEqual(groups[0][0], "Modules")
+         self.assertEqual(groups[0][1][0]["app_label"], "testapp")
+         self.assertEqual(len(groups[0][1][0]["models"]), 1)
+ 
Test the app list generation a bit
## Code Before:
from django.contrib.auth.models import User
from django.test import Client, TestCase


class AdminTest(TestCase):
    def login(self):
        client = Client()
        u = User.objects.create(
            username="test", is_active=True, is_staff=True, is_superuser=True
        )
        client.force_login(u)
        return client

    def test_dashboard(self):
        client = self.login()
        response = client.get("/admin/")
        self.assertContains(response, '<div class="groups">')
        self.assertContains(response, "<h2>Modules</h2>")
        self.assertContains(response, "<h2>Preferences</h2>")

        print(response, response.content.decode("utf-8"))

## Instruction:
Test the app list generation a bit
## Code After:
from django.contrib import admin
from django.contrib.auth.models import User
from django.test import Client, RequestFactory, TestCase

from fhadmin.templatetags.fhadmin_module_groups import generate_group_list


class AdminTest(TestCase):
    def login(self):
        client = Client()
        u = User.objects.create(
            username="test", is_active=True, is_staff=True, is_superuser=True
        )
        client.force_login(u)
        return client

    def test_dashboard(self):
        client = self.login()
        response = client.get("/admin/")
        self.assertContains(response, '<div class="groups">')
        self.assertContains(response, "<h2>Modules</h2>")
        self.assertContains(response, "<h2>Preferences</h2>")

        # print(response, response.content.decode("utf-8"))

    def test_app_list(self):
        request = RequestFactory().get("/")
        request.user = User.objects.create(is_superuser=True)

        groups = list(generate_group_list(admin.sites.site, request))
        # from pprint import pprint; pprint(groups)

        self.assertEqual(groups[0][0], "Modules")
        self.assertEqual(groups[0][1][0]["app_label"], "testapp")
        self.assertEqual(len(groups[0][1][0]["models"]), 1)
