from datetime import timedelta from django.test import TestCase from board.models import Board, Post from board.templatetags.post_body import ReplyBuilder class ReplyBuilderTestCase(TestCase): def setUp(self): Board.objects.create( url="test", name="test", post_cooldown=timedelta(seconds=0) ) def test_quote(self): expected = [ ( "this is some text that shouldn't be quoted.", "this is some text that shouldn't be quoted.", ), ( ">implying this quotes text correctly", '>implying this quotes text correctly', ), ( ">implying this >quotes >text correctly", '>implying this >quotes >text correctly', ), ( """ >implying this quotes text correctly nothing ever changes """, '>implying this quotes text correctly
nothing ever changes', ), ( """ what happened to the 1 2 3 4 5 6 7 8 9 >implying this quotes text correctly nothing ever changes """, 'what happened to the 1 2 3 4 5 6 7 8 9
>implying this quotes text correctly
nothing ever changes', ), ( """ nothing ever changes >implying this quotes text correctly what happened to the 1 2 3 4 5 6 7 8 9 """, 'nothing ever changes
>implying this quotes text correctly
what happened to the 1 2 3 4 5 6 7 8 9', ), ] for input, output in expected: rb = ReplyBuilder(input.strip()) self.assertEquals(rb.build(), output) def test_reply(self): board = Board.objects.get(url="test") post1 = Post.objects.create(board=board, text="test 1", ip="127.0.0.1") post2 = Post.objects.create(board=board, text="test 1", ip="127.0.0.1") post3 = Post.objects.create(board=board, text="test 1", ip="127.0.0.1") expected = [ ( f">>{post1.id}", f'>>{post1.id}', ), ( f">>{post2.id}", f'>>{post2.id}', ), ( f">>{post1.id} >>{post2.id} >>{post3.id}", f'>>{post1.id} ' f'>>{post2.id} ' f'>>{post3.id}', ), ( f">>999999", f'>>999999', ), ] for input, output in expected: rb = ReplyBuilder(input.strip()) self.assertEquals(rb.build(), output) def test_spoiler(self): expected = [ ( "[spoiler]This is a spoiler[/spoiler]", 'This is a spoiler', ), ( r"\[spoiler]This is an escaped spoiler[/spoiler]", "[spoiler]This is an escaped spoiler[/spoiler]", ), ( "[spoiler]This is an unfinished spoiler", 'This is an unfinished spoiler', ), ] for input, output in expected: rb = ReplyBuilder(input.strip(), parse_spoilers=True) self.assertEquals(rb.build(), output) def test_youtube_embed(self): expected = [ ( "https://www.youtube.com/watch?v=O_3_-UrhZH0", 'https://www.youtube.com/watch?v=O_3_-UrhZH0 [Embed]', ), ] for input, output in expected: rb = ReplyBuilder(input.strip()) self.assertEquals(rb.build(), output)