from datetime import datetime, timezone from django.test import TestCase from bookmarks.services import exporter from bookmarks.tests.helpers import BookmarkFactoryMixin class ExporterTestCase(TestCase, BookmarkFactoryMixin): def test_export_bookmarks(self): bookmarks = [ self.setup_bookmark( url="https://example.com/1", title="Title 1", added=datetime.fromtimestamp(1, timezone.utc), modified=datetime.fromtimestamp(11, timezone.utc), description="Example description", ), self.setup_bookmark( url="https://example.com/2", title="Title 2", added=datetime.fromtimestamp(2, timezone.utc), modified=datetime.fromtimestamp(22, timezone.utc), tags=[ self.setup_tag(name="tag1"), self.setup_tag(name="tag2"), self.setup_tag(name="tag3"), ], ), self.setup_bookmark( url="https://example.com/3", title="Title 3", added=datetime.fromtimestamp(3, timezone.utc), modified=datetime.fromtimestamp(33, timezone.utc), unread=True, ), self.setup_bookmark( url="https://example.com/4", title="Title 4", added=datetime.fromtimestamp(4, timezone.utc), modified=datetime.fromtimestamp(44, timezone.utc), shared=True, ), self.setup_bookmark( url="https://example.com/5", title="Title 5", added=datetime.fromtimestamp(5, timezone.utc), modified=datetime.fromtimestamp(55, timezone.utc), shared=True, description="Example description", notes="Example notes", ), self.setup_bookmark( url="https://example.com/6", title="Title 6", added=datetime.fromtimestamp(6, timezone.utc), modified=datetime.fromtimestamp(66, timezone.utc), shared=True, notes="Example notes", ), self.setup_bookmark( url="https://example.com/7", title="Title 7", added=datetime.fromtimestamp(7, timezone.utc), modified=datetime.fromtimestamp(77, timezone.utc), is_archived=True, ), self.setup_bookmark( url="https://example.com/8", title="Title 8", added=datetime.fromtimestamp(8, timezone.utc), modified=datetime.fromtimestamp(88, timezone.utc), tags=[self.setup_tag(name="tag4"), self.setup_tag(name="tag5")], is_archived=True, ), ] html = exporter.export_netscape_html(bookmarks) lines = [ '
Title 1', "
Example description", '
Title 2', '
Title 3', '
Title 4', '
Title 5', "
Example description[linkding-notes]Example notes[/linkding-notes]", '
Title 6', "
[linkding-notes]Example notes[/linkding-notes]", '
Title 7', '
Title 8', ] self.assertIn("\n\r".join(lines), html) def test_escape_html(self): bookmark = self.setup_bookmark( title="