1+ /// <reference types="Cypress" />
2+ // TODO: add spies
3+ import { FSApi } from '../../fusion-studio-extension/src/common/api' ;
4+ context ( 'Fusion Studio' , ( ) => {
5+ describe ( 'Drag and drop' , ( ) => {
6+ let dataTransfer ;
7+ const connection = {
8+ server : Cypress . env ( 'API_HOST' ) ,
9+ username : 'admin' ,
10+ password : '' ,
11+ } ;
12+ before ( ( ) => {
13+ // prepare collections/documents used in the test
14+ new Cypress . Promise ( async resolve => {
15+ await FSApi . remove ( connection , '/db/test_col' , true ) . catch ( e => { } ) ;
16+ await FSApi . newCollection ( connection , '/db/test_col' ) ;
17+ await FSApi . newCollection ( connection , '/db/test_col/col1' ) ;
18+ await FSApi . newCollection ( connection , '/db/test_col/col2' ) ;
19+ await FSApi . newCollection ( connection , '/db/test_col/col3' ) ;
20+ await FSApi . save ( connection , '/db/test_col/col1/test.txt' , 'test text file' ) ;
21+ resolve ( ) ;
22+ } )
23+ cy . connect ( )
24+ cy . visit ( '/' )
25+ cy . get ( '.fusion-view' )
26+ . should ( 'be.visible' )
27+ . find ( '.fusion-item' )
28+ . click ( )
29+ cy . get ( '.fusion-view' )
30+ . contains ( 'db' )
31+ . click ( )
32+ cy . get ( '.fusion-view' )
33+ . contains ( 'test_col' )
34+ . click ( )
35+ cy . get ( '.fusion-view' )
36+ . contains ( 'col1' )
37+ . click ( )
38+ cy . get ( '.fusion-view' )
39+ . contains ( 'col2' )
40+ . click ( )
41+ cy . get ( '.fusion-view' )
42+ . contains ( 'col3' )
43+ . click ( )
44+ cy . get ( '.fa-spinner' )
45+ . should ( 'not.exist' )
46+ } )
47+ beforeEach ( ( ) => {
48+ cy . window ( ) . then ( win => cy . spy ( win , 'fetch' ) . as ( 'fetch' ) ) ;
49+ dataTransfer = new DataTransfer ( ) ;
50+ } ) ;
51+ after ( ( ) => {
52+ // clean the test colelction
53+ new Cypress . Promise ( resolve => FSApi . remove ( connection , '/db/test_col' , true ) . then ( resolve ) . catch ( resolve ) )
54+ } )
55+
56+ it ( 'should move a document' , ( ) => {
57+ cy . get ( '[node-id$="col1\\/test.txt"]' )
58+ . should ( 'be.visible' )
59+ . trigger ( 'dragstart' , { dataTransfer } )
60+ cy . get ( '[node-id$=col2]' )
61+ . trigger ( 'dragover' , { dataTransfer } )
62+ . trigger ( 'drop' , { dataTransfer } )
63+ cy . get ( '[node-id$="col1\\/test.txt"]' )
64+ . should ( 'not.exist' )
65+ cy . get ( '[node-id$="col2\\/test.txt"]' )
66+ . should ( 'be.visible' )
67+ } )
68+
69+ it ( 'should copy a document' , ( ) => {
70+ cy . get ( '[node-id$="col2\\/test.txt"]' )
71+ . should ( 'be.visible' )
72+ . trigger ( 'dragstart' , { dataTransfer } )
73+ cy . get ( '[node-id$=col1]' )
74+ . trigger ( 'dragover' , { dataTransfer } )
75+ . trigger ( 'drop' , { dataTransfer, ctrlKey : true } )
76+ cy . get ( '[node-id$="col1\\/test.txt"]' )
77+ . should ( 'be.visible' )
78+ cy . get ( '[node-id$="col2\\/test.txt"]' )
79+ . should ( 'be.visible' )
80+ } )
81+
82+ it ( 'should move a collection' , ( ) => {
83+ cy . get ( '[node-id$="test_col\\/col1"]' )
84+ . should ( 'be.visible' )
85+ . trigger ( 'dragstart' , { dataTransfer } )
86+ cy . get ( '[node-id$=col2]' )
87+ . trigger ( 'dragover' , { dataTransfer } )
88+ . trigger ( 'drop' , { dataTransfer } )
89+ cy . get ( '[node-id$="test_col\\/col1"]' )
90+ . should ( 'not.exist' )
91+ cy . get ( '[node-id$="col2\\/col1"]' )
92+ . should ( 'be.visible' )
93+ . click ( )
94+ cy . get ( '[node-id$="col2\\/col1\\/test.txt"]' )
95+ . should ( 'be.visible' )
96+ } )
97+
98+ it ( 'should copy a collection' , ( ) => {
99+ cy . get ( '[node-id$="test_col\\/col2\\/col1"]' )
100+ . should ( 'be.visible' )
101+ . trigger ( 'dragstart' , { dataTransfer } )
102+ cy . get ( '[node-id$=test_col]' )
103+ . trigger ( 'dragover' , { dataTransfer } )
104+ . trigger ( 'drop' , { dataTransfer, ctrlKey : true } )
105+ cy . get ( '[node-id$="test_col\\/col2\\/col1"]' )
106+ . should ( 'be.visible' )
107+ cy . get ( '[node-id$="col2\\/col1\\/test.txt"]' )
108+ . should ( 'be.visible' )
109+ cy . get ( '[node-id$="test_col\\/col1"]' )
110+ . should ( 'be.visible' )
111+ . click ( )
112+ cy . get ( '[node-id$="test_col\\/col1\\/test.txt"]' )
113+ . should ( 'be.visible' )
114+ } )
115+
116+ it ( 'should move multiple items' , ( ) => {
117+ cy . get ( '[node-id$="test_col\\/col2"]' )
118+ . should ( 'be.visible' )
119+ . trigger ( 'click' )
120+ cy . get ( '[node-id$="test_col\\/col1"]' )
121+ . should ( 'be.visible' )
122+ . trigger ( 'click' , { ctrlKey : true } )
123+ . trigger ( 'dragstart' , { dataTransfer } )
124+ cy . get ( '[node-id$=col3]' )
125+ . trigger ( 'dragover' , { dataTransfer } )
126+ . trigger ( 'drop' , { dataTransfer } )
127+ cy . get ( '[node-id$="test_col\\/col1"]' )
128+ . should ( 'not.exist' )
129+ cy . get ( '[node-id$="test_col\\/col2"]' )
130+ . should ( 'not.exist' )
131+ cy . get ( '[node-id$="col3\\/col1"]' )
132+ . should ( 'be.visible' )
133+ . click ( )
134+ cy . get ( '[node-id$="col3\\/col1\\/test.txt"]' )
135+ . should ( 'be.visible' )
136+ cy . get ( '[node-id$="col3\\/col2"]' )
137+ . should ( 'be.visible' )
138+ . click ( )
139+ cy . get ( '[node-id$="col3\\/col2\\/test.txt"]' )
140+ . should ( 'be.visible' )
141+ cy . get ( '[node-id$="col3\\/col2\\/col1"]' )
142+ . should ( 'be.visible' )
143+ . click ( )
144+ cy . get ( '[node-id$="col3\\/col2\\/col1\\/test.txt"]' )
145+ . should ( 'be.visible' )
146+ } )
147+
148+ it ( 'should copy multiple items' , ( ) => {
149+ cy . get ( '[node-id$="test_col\\/col3\\/col2"]' )
150+ . should ( 'be.visible' )
151+ . trigger ( 'click' )
152+ cy . get ( '[node-id$="test_col\\/col3\\/col1"]' )
153+ . should ( 'be.visible' )
154+ . trigger ( 'click' , { ctrlKey : true } )
155+ . trigger ( 'dragstart' , { dataTransfer } )
156+ cy . get ( '[node-id$=test_col]' )
157+ . trigger ( 'dragover' , { dataTransfer } )
158+ . trigger ( 'drop' , { dataTransfer, ctrlKey : true } )
159+ cy . get ( '[node-id$="test_col\\/col3\\/col1"]' )
160+ . should ( 'be.visible' )
161+ cy . get ( '[node-id$="test_col\\/col3\\/col2"]' )
162+ . should ( 'be.visible' )
163+ cy . get ( '[node-id$="test_col\\/col1"]' )
164+ . should ( 'be.visible' )
165+ . click ( )
166+ cy . get ( '[node-id$="test_col\\/col1\\/test.txt"]' )
167+ . should ( 'be.visible' )
168+ cy . get ( '[node-id$="test_col\\/col2"]' )
169+ . should ( 'be.visible' )
170+ . click ( )
171+ cy . get ( '[node-id$="test_col\\/col2\\/test.txt"]' )
172+ . should ( 'be.visible' )
173+ cy . get ( '[node-id$="test_col\\/col2\\/col1"]' )
174+ . should ( 'be.visible' )
175+ . click ( )
176+ cy . get ( '[node-id$="test_col\\/col2\\/col1\\/test.txt"]' )
177+ . should ( 'be.visible' )
178+ } )
179+
180+ it ( 'should not move to a sub collection' , ( ) => {
181+ cy . get ( '[node-id$="test_col\\/col2"]' )
182+ . should ( 'be.visible' )
183+ . trigger ( 'dragstart' , { dataTransfer } )
184+ cy . get ( '[node-id$=test_col\\/col2\\/col1]' )
185+ . trigger ( 'dragover' , { dataTransfer } )
186+ . trigger ( 'drop' , { dataTransfer } )
187+ cy . get ( '[node-id$="test_col\\/col2\\/col1\\/col2"]' )
188+ . should ( 'not.exist' )
189+ cy . get ( '[node-id$="test_col\\/col2"]' )
190+ . should ( 'be.visible' )
191+ } )
192+
193+ it ( 'should not copy to a sub collection' , ( ) => {
194+ cy . get ( '[node-id$="test_col\\/col2"]' )
195+ . should ( 'be.visible' )
196+ . trigger ( 'dragstart' , { dataTransfer } )
197+ cy . get ( '[node-id$=test_col\\/col2\\/col1]' )
198+ . trigger ( 'dragover' , { dataTransfer } )
199+ . trigger ( 'drop' , { dataTransfer, ctrlKey : true } )
200+ cy . get ( '[node-id$="test_col\\/col2\\/col1\\/col2"]' )
201+ . should ( 'not.exist' )
202+ cy . get ( '[node-id$="test_col\\/col2"]' )
203+ . should ( 'be.visible' )
204+ } )
205+
206+ } )
207+
208+
209+ } )
0 commit comments