From 3d0a92253effab414397959efd96ea6b991cf6e8 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Sat, 7 May 2022 16:43:32 -0700 Subject: [PATCH] Add some tests for some of the more complicated behavior in the code Signed-off-by: Alek Ratzloff --- tests/__init__.py | 0 tests/test_boards.py | 16 +++++++++++ tests/test_posts.py | 65 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 tests/__init__.py create mode 100644 tests/test_boards.py create mode 100644 tests/test_posts.py diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_boards.py b/tests/test_boards.py new file mode 100644 index 0000000..3bdf080 --- /dev/null +++ b/tests/test_boards.py @@ -0,0 +1,16 @@ +from django.test import TestCase +from django.urls import reverse +from board.models import Board, Post + + +class RedirectTestCase(TestCase): + def setUp(self): + Board.objects.create(url="test", name="test") + + def test_bare_url_redirect(self): + response = self.client.get( + reverse("board:board_detail", kwargs={"url": "test"}) + ) + self.assertRedirects( + response, reverse("board:board_detail", kwargs={"url": "test", "page": 1}) + ) diff --git a/tests/test_posts.py b/tests/test_posts.py new file mode 100644 index 0000000..7cca6e5 --- /dev/null +++ b/tests/test_posts.py @@ -0,0 +1,65 @@ +from django.test import TestCase +from board.models import Board, Post + + +class BumpTestCase(TestCase): + def setUp(self): + Board.objects.create(url="test", name="test") + + def test_bumping(self): + board = Board.objects.get(url="test") + self.assertEquals(board.threads.count(), 0) + post1 = Post.objects.create(board=board, text="test 1", ip="127.0.0.1") + post2 = Post.objects.create(board=board, text="test 2", ip="127.0.0.1") + post3 = Post.objects.create(board=board, text="test 3", ip="127.0.0.1") + post4 = Post.objects.create(board=board, text="test 4", ip="127.0.0.1") + + self.assertEquals( + list(board.threads.order_by("-last_bump")), [post4, post3, post2, post1] + ) + + Post.objects.create(board=board, text="bump", ip="127.0.0.1", op=post3) + self.assertEquals( + list(board.threads.order_by("-last_bump")), [post3, post4, post2, post1] + ) + + Post.objects.create(board=board, text="bump", ip="127.0.0.1", op=post2) + self.assertEquals( + list(board.threads.order_by("-last_bump")), [post2, post3, post4, post1] + ) + + Post.objects.create(board=board, text="bump", ip="127.0.0.1", op=post1) + self.assertEquals( + list(board.threads.order_by("-last_bump")), [post1, post2, post3, post4] + ) + + def test_no_bumping(self): + board = Board.objects.get(url="test") + self.assertEquals(board.threads.count(), 0) + + board = Board.objects.get(url="test") + self.assertEquals(board.threads.count(), 0) + post1 = Post.objects.create(board=board, text="test 1", ip="127.0.0.1") + post2 = Post.objects.create(board=board, text="test 2", ip="127.0.0.1") + post3 = Post.objects.create(board=board, text="test 3", ip="127.0.0.1") + post4 = Post.objects.create(board=board, text="test 4", ip="127.0.0.1") + + self.assertEquals( + list(board.threads.order_by("-last_bump")), [post4, post3, post2, post1] + ) + + Post.objects.create( + board=board, text="bump", ip="127.0.0.1", op=post3, bump=False + ) + self.assertEquals( + list(board.threads.order_by("-last_bump")), [post4, post3, post2, post1] + ) + + # thread that has been sunk + post2.bump = False + Post.objects.create( + board=board, text="bump", ip="127.0.0.1", op=post2, bump=True + ) + self.assertEquals( + list(board.threads.order_by("-last_bump")), [post4, post3, post2, post1] + )