mirror of
				https://github.com/sissbruecker/linkding.git
				synced 2025-11-03 20:44:05 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from django.db import connections
 | 
						|
from django.db.utils import DEFAULT_DB_ALIAS
 | 
						|
from django.test import TransactionTestCase
 | 
						|
from django.test.utils import CaptureQueriesContext
 | 
						|
from django.urls import reverse
 | 
						|
 | 
						|
from bookmarks.models import GlobalSettings
 | 
						|
from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin
 | 
						|
 | 
						|
 | 
						|
class BookmarkIndexViewPerformanceTestCase(
 | 
						|
    TransactionTestCase, BookmarkFactoryMixin, HtmlTestMixin
 | 
						|
):
 | 
						|
 | 
						|
    def setUp(self) -> None:
 | 
						|
        user = self.get_or_create_test_user()
 | 
						|
        self.client.force_login(user)
 | 
						|
 | 
						|
    def get_connection(self):
 | 
						|
        return connections[DEFAULT_DB_ALIAS]
 | 
						|
 | 
						|
    def test_should_not_increase_number_of_queries_per_bookmark(self):
 | 
						|
        # create global settings
 | 
						|
        GlobalSettings.get()
 | 
						|
 | 
						|
        # create initial bookmarks
 | 
						|
        num_initial_bookmarks = 10
 | 
						|
        for _ in range(num_initial_bookmarks):
 | 
						|
            self.setup_bookmark(user=self.user)
 | 
						|
 | 
						|
        # capture number of queries
 | 
						|
        context = CaptureQueriesContext(self.get_connection())
 | 
						|
        with context:
 | 
						|
            response = self.client.get(reverse("linkding:bookmarks.index"))
 | 
						|
            html = response.content.decode("utf-8")
 | 
						|
            soup = self.make_soup(html)
 | 
						|
            list_items = soup.select("li[ld-bookmark-item]")
 | 
						|
            self.assertEqual(len(list_items), num_initial_bookmarks)
 | 
						|
 | 
						|
        number_of_queries = context.final_queries
 | 
						|
 | 
						|
        # add more bookmarks
 | 
						|
        num_additional_bookmarks = 10
 | 
						|
        for _ in range(num_additional_bookmarks):
 | 
						|
            self.setup_bookmark(user=self.user)
 | 
						|
 | 
						|
        # assert num queries doesn't increase
 | 
						|
        with self.assertNumQueries(number_of_queries):
 | 
						|
            response = self.client.get(reverse("linkding:bookmarks.index"))
 | 
						|
            html = response.content.decode("utf-8")
 | 
						|
            soup = self.make_soup(html)
 | 
						|
            list_items = soup.select("li[ld-bookmark-item]")
 | 
						|
            self.assertEqual(
 | 
						|
                len(list_items), num_initial_bookmarks + num_additional_bookmarks
 | 
						|
            )
 |