mirror of
				https://github.com/sissbruecker/linkding.git
				synced 2025-11-03 20:44:05 +01:00 
			
		
		
		
	Allow creating archived bookmark through REST API (#268)
* Add POST archived API endpoint * Update API docs * Expose is_archived in existing POST endpoint * Add test to verify bookmark not archived by default * Fix JSON payload in API docs Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>
This commit is contained in:
		@@ -34,6 +34,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
 | 
			
		||||
            expectation['description'] = bookmark.description
 | 
			
		||||
            expectation['website_title'] = bookmark.website_title
 | 
			
		||||
            expectation['website_description'] = bookmark.website_description
 | 
			
		||||
            expectation['is_archived'] = bookmark.is_archived
 | 
			
		||||
            expectation['tag_names'] = tag_names
 | 
			
		||||
            expectation['date_added'] = bookmark.date_added.isoformat().replace('+00:00', 'Z')
 | 
			
		||||
            expectation['date_modified'] = bookmark.date_modified.isoformat().replace('+00:00', 'Z')
 | 
			
		||||
@@ -49,6 +50,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
 | 
			
		||||
            'url': 'https://example.com/',
 | 
			
		||||
            'title': 'Test title',
 | 
			
		||||
            'description': 'Test description',
 | 
			
		||||
            'is_archived': False,
 | 
			
		||||
            'tag_names': ['tag1', 'tag2']
 | 
			
		||||
        }
 | 
			
		||||
        self.post(reverse('bookmarks:bookmark-list'), data, status.HTTP_201_CREATED)
 | 
			
		||||
@@ -56,6 +58,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
 | 
			
		||||
        self.assertEqual(bookmark.url, data['url'])
 | 
			
		||||
        self.assertEqual(bookmark.title, data['title'])
 | 
			
		||||
        self.assertEqual(bookmark.description, data['description'])
 | 
			
		||||
        self.assertFalse(bookmark.is_archived, data['is_archived'])
 | 
			
		||||
        self.assertEqual(bookmark.tags.count(), 2)
 | 
			
		||||
        self.assertEqual(bookmark.tags.filter(name=data['tag_names'][0]).count(), 1)
 | 
			
		||||
        self.assertEqual(bookmark.tags.filter(name=data['tag_names'][1]).count(), 1)
 | 
			
		||||
@@ -92,6 +95,30 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
 | 
			
		||||
        response = self.get(reverse('bookmarks:bookmark-archived') + '?q=#' + self.tag1.name, expected_status_code=status.HTTP_200_OK)
 | 
			
		||||
        self.assertBookmarkListEqual(response.data['results'], [self.archived_bookmark1])
 | 
			
		||||
 | 
			
		||||
    def test_create_archived_bookmark(self):
 | 
			
		||||
        data = {
 | 
			
		||||
            'url': 'https://example.com/',
 | 
			
		||||
            'title': 'Test title',
 | 
			
		||||
            'description': 'Test description',
 | 
			
		||||
            'is_archived': True,
 | 
			
		||||
            'tag_names': ['tag1', 'tag2']
 | 
			
		||||
        }
 | 
			
		||||
        self.post(reverse('bookmarks:bookmark-list'), data, status.HTTP_201_CREATED)
 | 
			
		||||
        bookmark = Bookmark.objects.get(url=data['url'])
 | 
			
		||||
        self.assertEqual(bookmark.url, data['url'])
 | 
			
		||||
        self.assertEqual(bookmark.title, data['title'])
 | 
			
		||||
        self.assertEqual(bookmark.description, data['description'])
 | 
			
		||||
        self.assertTrue(bookmark.is_archived)
 | 
			
		||||
        self.assertEqual(bookmark.tags.count(), 2)
 | 
			
		||||
        self.assertEqual(bookmark.tags.filter(name=data['tag_names'][0]).count(), 1)
 | 
			
		||||
        self.assertEqual(bookmark.tags.filter(name=data['tag_names'][1]).count(), 1)
 | 
			
		||||
 | 
			
		||||
    def test_create_bookmark_minimal_payload_does_not_archive(self):
 | 
			
		||||
        data = {'url': 'https://example.com/'}
 | 
			
		||||
        self.post(reverse('bookmarks:bookmark-list'), data, status.HTTP_201_CREATED)
 | 
			
		||||
        bookmark = Bookmark.objects.get(url=data['url'])
 | 
			
		||||
        self.assertFalse(bookmark.is_archived)
 | 
			
		||||
 | 
			
		||||
    def test_get_bookmark(self):
 | 
			
		||||
        url = reverse('bookmarks:bookmark-detail', args=[self.bookmark1.id])
 | 
			
		||||
        response = self.get(url, expected_status_code=status.HTTP_200_OK)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user