@@ -96,4 +96,93 @@ test.describe("Permission table", () => {
9696 await readPermCheckbox . check ( ) ;
9797 await expect ( readPermCheckbox ) . toBeEnabled ( ) ;
9898 } ) ;
99+
100+ test ( "Granting control permission give's a popup" , async ( { page } ) => {
101+ await page . getByText ( "README" ) . click ( ) ;
102+
103+ // Check if right panel is loaded
104+ const rightPanelElem = page . locator ( ".right-panel" ) ;
105+ const listHeader = rightPanelElem . locator ( ".list-header" ) ;
106+ await expect ( listHeader ) . toContainText ( "Subjects with permissions" )
107+
108+ await rightPanelElem . getByRole ( "button" , { name : "Edit" } ) . click ( ) ;
109+
110+ const tableDrawer = page . locator ( ".permission-drawer" ) ;
111+ const publicSubjectRow = tableDrawer . locator ( "tr" , { hasText : "Public" } ) ;
112+ await expect ( publicSubjectRow ) . toBeVisible ( ) ;
113+ await publicSubjectRow . getByRole ( "button" , { name : "Edit" } ) . click ( ) ;
114+
115+ const subjectEditorDrawer = page . locator ( ".subject-drawer" ) ;
116+ await expect ( subjectEditorDrawer ) . toBeVisible ( )
117+ const controlPermCheckbox = subjectEditorDrawer . getByLabel ( 'Control' )
118+ await expect ( controlPermCheckbox ) . not . toBeChecked ( ) ;
119+ await controlPermCheckbox . check ( ) ;
120+
121+ const checkDialog = page . getByText ( "Grant control permission?" ) ;
122+ await expect ( checkDialog ) . toBeVisible ( ) ;
123+ } ) ;
124+
125+ test ( "Grant btn in popup contol permission gives the permission" , async ( { page } ) => {
126+ await page . getByText ( "README" ) . click ( ) ;
127+
128+ // Check if right panel is loaded
129+ const rightPanelElem = page . locator ( ".right-panel" ) ;
130+ const listHeader = rightPanelElem . locator ( ".list-header" ) ;
131+ await expect ( listHeader ) . toContainText ( "Subjects with permissions" )
132+
133+ await rightPanelElem . getByRole ( "button" , { name : "Edit" } ) . click ( ) ;
134+
135+ const tableDrawer = page . locator ( ".permission-drawer" ) ;
136+ const publicSubjectRow = tableDrawer . locator ( "tr" , { hasText : "Public" } ) ;
137+ await expect ( publicSubjectRow ) . toBeVisible ( ) ;
138+ await publicSubjectRow . getByRole ( "button" , { name : "Edit" } ) . click ( ) ;
139+
140+ const subjectEditorDrawer = page . locator ( ".subject-drawer" ) ;
141+ await expect ( subjectEditorDrawer ) . toBeVisible ( )
142+ const controlPermCheckbox = subjectEditorDrawer . getByLabel ( 'Control' )
143+ await expect ( controlPermCheckbox ) . not . toBeChecked ( ) ;
144+ await controlPermCheckbox . check ( ) ;
145+
146+ const checkDialog = page . getByRole ( "alertdialog" , { name : "Grant control permission?" } ) ;
147+ await expect ( checkDialog ) . toBeVisible ( ) ;
148+
149+ await checkDialog . getByRole ( "button" , { name : "Grant" } ) . click ( ) ;
150+
151+ await expect ( controlPermCheckbox ) . toBeEnabled ( ) ;
152+ await expect ( controlPermCheckbox ) . toBeChecked ( ) ;
153+ await controlPermCheckbox . uncheck ( ) ;
154+ await expect ( controlPermCheckbox ) . toBeEnabled ( ) ;
155+ } ) ;
156+
157+ test ( "An toast should show while updating permissions" , async ( { page } ) => {
158+ await page . getByText ( "README" ) . click ( ) ;
159+
160+ // Check if right panel is loaded
161+ const rightPanelElem = page . locator ( ".right-panel" ) ;
162+ const listHeader = rightPanelElem . locator ( ".list-header" ) ;
163+ await expect ( listHeader ) . toContainText ( "Subjects with permissions" )
164+
165+ await rightPanelElem . getByRole ( "button" , { name : "Edit" } ) . click ( ) ;
166+
167+ const tableDrawer = page . locator ( ".permission-drawer" ) ;
168+ const publicSubjectRow = tableDrawer . locator ( "tr" , { hasText : "Public" } ) ;
169+ await expect ( publicSubjectRow ) . toBeVisible ( ) ;
170+ await publicSubjectRow . getByRole ( "button" , { name : "Edit" } ) . click ( ) ;
171+
172+ const subjectEditorDrawer = page . locator ( ".subject-drawer" ) ;
173+ await expect ( subjectEditorDrawer ) . toBeVisible ( )
174+ const writePermCheckbox = subjectEditorDrawer . getByLabel ( 'Write' )
175+ await expect ( writePermCheckbox ) . not . toBeChecked ( ) ;
176+ await writePermCheckbox . check ( ) ;
177+
178+ const mask = page . locator ( ".p-drawer-mask" , { hasText : "Edit subject" } )
179+ await mask . click ( { position : { x : 1 , y : 1 } } ) ;
180+
181+ const alertToast = page . getByRole ( "alert" )
182+ await expect ( alertToast ) . toBeVisible ( ) ;
183+
184+ await expect ( writePermCheckbox ) . toBeEnabled ( ) ;
185+ await writePermCheckbox . uncheck ( ) ;
186+ await expect ( writePermCheckbox ) . toBeEnabled ( ) ;
187+ } )
99188} )
0 commit comments