1+ from time import sleep
2+
3+ from django .urls import reverse
4+ from helpers import PdfDingE2ETestCase
5+ from pdf .models .pdf_models import Pdf
6+ from pdf .services .pdf_services import PdfProcessingServices , get_or_create_pdf_reading_info
7+ from playwright .sync_api import expect , sync_playwright
8+ from users .service import get_demo_pdf
9+
10+
11+ class TestPdfViewerE2ETestCase (PdfDingE2ETestCase ):
12+ def setUp (self , login : bool = True ) -> None :
13+ super ().setUp ()
14+ self .pdf = Pdf .objects .create (
15+ name = 'some_pdf' , collection = self .user .profile .current_collection , file = get_demo_pdf ()
16+ )
17+
18+ def test_saving_page (self ):
19+ reading_info = get_or_create_pdf_reading_info (self .pdf , self .user .profile )
20+
21+ assert reading_info .current_page == 1
22+
23+ with sync_playwright () as p :
24+ self .open (reverse ('view_pdf' , kwargs = {'identifier' : self .pdf .id }), p )
25+ sleep (0.5 ) # we need to wait a bit for the PDF to be loaded
26+
27+ self .page .locator ("#pageNumber" ).click ()
28+ self .page .locator ("#pageNumber" ).press ("Delete" )
29+ self .page .locator ("#pageNumber" ).press ("3" )
30+ self .page .locator ("#pageNumber" ).press ("Enter" )
31+
32+ # we need to sleep a bit, so the current page is updated
33+ sleep (3 )
34+
35+ reading_info = get_or_create_pdf_reading_info (self .pdf , self .user .profile )
36+ assert reading_info .current_page == 3
37+
38+ def test_change_zoom (self ):
39+ with sync_playwright () as p :
40+ self .open (reverse ('view_pdf' , kwargs = {'identifier' : self .pdf .id }), p )
41+
42+ expect (self .page .locator ("#scaleSelect" )).to_have_value ("auto" )
43+ self .page .locator ("#scaleSelect" ).click ()
44+ self .page .locator ("#scaleSelect" ).select_option ("Page Fit" )
45+ expect (self .page .locator ("#scaleSelect" )).to_have_value ("page-fit" )
46+
47+ def test_search (self ):
48+ reading_info = get_or_create_pdf_reading_info (self .pdf , self .user .profile )
49+
50+ assert reading_info .current_page == 1
51+
52+ with sync_playwright () as p :
53+ self .open (reverse ('view_pdf' , kwargs = {'identifier' : self .pdf .id }), p )
54+ sleep (0.5 ) # we need to wait a bit for the PDF to be loaded
55+
56+ self .page .locator ("#viewFindButton" ).click ()
57+ self .page .locator ("#findInput" ).fill ("Dictumst vel parturient nascetur etiam habitasse" )
58+ self .page .locator ("#findInput" ).press ("Enter" )
59+
60+ # we need to sleep a bit, so the current page is updated
61+ sleep (3 )
62+
63+ reading_info = get_or_create_pdf_reading_info (self .pdf , self .user .profile )
64+ assert reading_info .current_page == 2
65+
66+ def test_left_sidebar_pages (self ):
67+ reading_info = get_or_create_pdf_reading_info (self .pdf , self .user .profile )
68+
69+ assert reading_info .current_page == 1
70+
71+ with sync_playwright () as p :
72+ self .open (reverse ('view_pdf' , kwargs = {'identifier' : self .pdf .id }), p )
73+ sleep (0.5 ) # we need to wait a bit for the PDF to be loaded
74+
75+ self .page .locator ("#viewsManagerToggleButton" ).click ()
76+ # without <2068> not working
Hidden Unicode 77+ self .page .get_by_role ("button" , name = "Thumbnail of Page 2" ).click ()
78+
79+ # we need to sleep a bit, so the current page is updated
80+ sleep (3 )
81+
82+ reading_info = get_or_create_pdf_reading_info (self .pdf , self .user .profile )
83+ assert reading_info .current_page == 2
84+
85+ def test_save_pdf (self ):
86+ # we use create_pdf as we wont the comments to processed
87+ pdf = PdfProcessingServices .create_pdf (
88+ "some_pdf" , collection = self .user .profile .current_collection , pdf_file = get_demo_pdf ()
89+ )
90+ comments = pdf .pdfcomment_set .all ()
91+
92+ assert comments .count () == 2
93+
94+ with sync_playwright () as p :
95+ self .open (reverse ('view_pdf' , kwargs = {'identifier' : pdf .id }), p )
96+ sleep (0.5 ) # we need to wait a bit for the PDF to be loaded
97+
98+ self .page .locator ("#editorFreeTextButton" ).click ()
99+ self .page .locator (".annotationEditorLayer" ).first .click ()
100+ # without <2068> not working
Hidden Unicode 101+ self .page .get_by_role ("region" , name = "Page 1" ).get_by_label ("Text Editor" ).fill ("1_some_new_comment" )
Hidden Unicode 102+ self .page .get_by_role ("region" , name = "Page 1" ).get_by_label ("Text Editor" ).press ("Escape" )
103+ self .page .locator ("#savePdf" ).click ()
104+
105+ # we need to wait a bit so the pdf is processed
106+ sleep (0.5 )
107+
108+ changed_pdf = Pdf .objects .get (id = pdf .id )
109+ comments = changed_pdf .pdfcomment_set .all ()
110+
111+ assert comments .count () == 3
112+ assert comments .order_by ("text" ).first ().text == "1_some_new_comment"
0 commit comments