@@ -24,6 +24,7 @@ import { randHash } from '../utils/index.js'
2424const randUser = randHash ( )
2525
2626describe ( 'Workspace' , function ( ) {
27+ let currentFolder
2728
2829 before ( function ( ) {
2930 cy . nextcloudCreateUser ( randUser , 'password' )
@@ -33,11 +34,12 @@ describe('Workspace', function() {
3334 cy . login ( randUser , 'password' ) . then ( ( ) => {
3435 // isolate tests - each happens in its own folder
3536 const retry = cy . state ( 'test' ) . currentRetry ( )
36- const folderName = retry
37+
38+ currentFolder = retry
3739 ? `${ Cypress . currentTest . title } (${ retry } )`
3840 : Cypress . currentTest . title
39- cy . createFolder ( folderName )
40- cy . visit ( `apps/files?dir=/${ encodeURIComponent ( folderName ) } ` )
41+ cy . createFolder ( currentFolder )
42+ cy . visit ( `apps/files?dir=/${ encodeURIComponent ( currentFolder ) } ` )
4143 } )
4244 } )
4345
@@ -169,6 +171,43 @@ describe('Workspace', function() {
169171 . contains ( '😀' )
170172 } )
171173
174+ it ( 'relative folder links' , ( ) => {
175+ cy . createFolder ( `${ currentFolder } /sub-folder` )
176+ cy . createFolder ( `${ currentFolder } /sub-folder/alpha` )
177+
178+ cy . uploadFile ( 'test.md' , 'text/markdown' , `${ currentFolder } /sub-folder/alpha/test.md` )
179+
180+ cy . openWorkspace ( )
181+ . type ( 'link me' )
182+ . type ( '{selectall}' )
183+
184+ menuBubbleButton ( 'add-file' ) . click ( )
185+
186+ cy . get ( '#picker-filestable tr[data-entryname="sub-folder"]' ) . click ( )
187+ cy . get ( '#picker-filestable tr[data-entryname="alpha"]' ) . click ( )
188+ cy . get ( '#picker-filestable tr[data-entryname="test.md"]' ) . click ( )
189+ cy . get ( '.oc-dialog > .oc-dialog-buttonrow button' ) . click ( )
190+
191+ cy . getEditor ( )
192+ . find ( 'a' )
193+ . should ( 'have.attr' , 'href' )
194+ . and ( 'contains' , `dir=/${ currentFolder } /sub-folder/alpha` )
195+ . and ( 'contains' , '#relPath=sub-folder/alpha/test.md' )
196+
197+ cy . getEditor ( )
198+ . find ( 'a' ) . click ( )
199+
200+ cy . getModal ( )
201+ . find ( '.modal-header' )
202+ . contains ( 'test.md' )
203+
204+ cy . getModal ( )
205+ . getEditor ( )
206+ . contains ( 'Hello world' )
207+
208+ cy . getModal ( ) . find ( 'button.header-close' ) . click ( )
209+ } )
210+
172211 describe ( 'callouts' , ( ) => {
173212 const types = [ 'info' , 'warn' , 'error' , 'success' ]
174213
0 commit comments