diff --git a/generic_links/test_utils/__init__.py b/generic_links/test_utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/generic_links/test_utils/test_app/__init__.py b/generic_links/test_utils/test_app/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/generic_links/test_utils/test_app/admin.py b/generic_links/test_utils/test_app/admin.py deleted file mode 100644 index 0ee0dba..0000000 --- a/generic_links/test_utils/test_app/admin.py +++ /dev/null @@ -1,2 +0,0 @@ -# Put your models admin models here -from __future__ import annotations diff --git a/generic_links/test_utils/test_app/apps.py b/generic_links/test_utils/test_app/apps.py deleted file mode 100644 index acd4058..0000000 --- a/generic_links/test_utils/test_app/apps.py +++ /dev/null @@ -1,7 +0,0 @@ -from __future__ import annotations - -from django.apps import AppConfig - - -class TestAppConfig(AppConfig): - name = "test_app" diff --git a/generic_links/test_utils/test_app/migrations/__init__.py b/generic_links/test_utils/test_app/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/generic_links/test_utils/test_app/models.py b/generic_links/test_utils/test_app/models.py deleted file mode 100644 index c47adaa..0000000 --- a/generic_links/test_utils/test_app/models.py +++ /dev/null @@ -1,2 +0,0 @@ -# Put your test models here -from __future__ import annotations diff --git a/pyproject.toml b/pyproject.toml index e27a808..df3e5e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,6 +57,12 @@ include = [ "generic_links/", ] +[tool.hatch.envs.default] +dependencies = [ + "Django>=4.0", "ipython", "ipdb", "mypy", "typing-extensions", +] + + # Test environment [[tool.hatch.envs.test.matrix]] python = ["3.9", "3.10", "3.11"] diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py new file mode 100644 index 0000000..03cb81f --- /dev/null +++ b/tests/test_templatetags.py @@ -0,0 +1,63 @@ +from django.contrib.auth.models import User +from django.contrib.contenttypes.models import ContentType +from django.template import Context +from django.template import Template +from django.test import TestCase + +from generic_links.models import GenericLink + + +class TemplateTagTestCase(TestCase): + """ + Test case for the template tag `get_links_for ` in the `generic_links_tags.py` file. + """ + + def setUp(self): + content_type = ContentType.objects.get_for_model(User) + + self.user1 = User.objects.create(username="test_user") + + self.link1 = GenericLink.objects.create( + url="https://example.com/path/to/this-thing/", + content_type=content_type, + object_id=self.user1.id, + ) + + self.link2 = GenericLink.objects.create( + url="https://example.com/path/to/other-thing/", + content_type=content_type, + object_id=self.user1.id, + ) + + self.user2 = User.objects.create(username="test_user2") + + self.link3 = GenericLink.objects.create( + url="https://example.com/foobar/", + content_type=content_type, + object_id=self.user2.id, + ) + + def test_get_links_for(self): + """ + Test the `get_links_for` template tag. + """ + + template_string = """ + {% load generic_links_tags %} + {% get_links_for my_obj as links_qs %} + {% for link in links_qs %} + {{ link.url }} + {% endfor %} + """ + + template = Template(template_string) + + rendered_string = template.render(Context({"my_obj": self.user1})) + + self.assertIn(self.link1.url, rendered_string) + self.assertIn(self.link2.url, rendered_string) + self.assertNotIn(self.link3.url, rendered_string) + + rendered_string2 = template.render(Context({"my_obj": self.user2})) + + self.assertEqual(self.link3.url, rendered_string2.strip())