@@ -15,17 +15,16 @@ describe('GitTabHeaderController', function() {
15
15
function buildApp ( overrides ) {
16
16
const props = {
17
17
getCommitter : ( ) => nullAuthor ,
18
+ currentWorkDir : null ,
18
19
getCurrentWorkDirs : ( ) => createWorkdirs ( [ ] ) ,
19
- onDidUpdateRepo : ( ) => new Disposable ( ) ,
20
+ changeWorkingDirectory : ( ) => { } ,
21
+ contextLocked : false ,
22
+ setContextLock : ( ) => { } ,
20
23
onDidChangeWorkDirs : ( ) => new Disposable ( ) ,
21
- handleWorkDirSelect : ( ) => null ,
24
+ onDidUpdateRepo : ( ) => new Disposable ( ) ,
22
25
...overrides ,
23
26
} ;
24
- return (
25
- < GitTabHeaderController
26
- { ...props }
27
- />
28
- ) ;
27
+ return < GitTabHeaderController { ...props } /> ;
29
28
}
30
29
31
30
it ( 'get currentWorkDirs initializes workdirs state' , function ( ) {
@@ -112,6 +111,62 @@ describe('GitTabHeaderController', function() {
112
111
assert . isTrue ( getCommitter . calledOnce ) ;
113
112
} ) ;
114
113
114
+ it ( 'handles a lock toggle' , async function ( ) {
115
+ let resolveLockChange ;
116
+ const setContextLock = sinon . stub ( ) . returns ( new Promise ( resolve => {
117
+ resolveLockChange = resolve ;
118
+ } ) )
119
+ const wrapper = shallow ( buildApp ( { currentWorkDir : 'the/workdir' , contextLocked : false , setContextLock} ) ) ;
120
+
121
+ assert . isFalse ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'contextLocked' ) ) ;
122
+ assert . isFalse ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'changingLock' ) ) ;
123
+
124
+ const handlerPromise = wrapper . find ( 'GitTabHeaderView' ) . prop ( 'handleLockToggle' ) ( ) ;
125
+ wrapper . update ( ) ;
126
+
127
+ assert . isTrue ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'contextLocked' ) ) ;
128
+ assert . isTrue ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'changingLock' ) ) ;
129
+ assert . isTrue ( setContextLock . calledWith ( 'the/workdir' , true ) ) ;
130
+
131
+ // Ignored while in-progress
132
+ wrapper . find ( 'GitTabHeaderView' ) . prop ( 'handleLockToggle' ) ( ) ;
133
+
134
+ resolveLockChange ( ) ;
135
+ await handlerPromise ;
136
+
137
+ assert . isFalse ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'changingLock' ) ) ;
138
+ } ) ;
139
+
140
+ it ( 'handles a workdir selection' , async function ( ) {
141
+ let resolveWorkdirChange ;
142
+ const changeWorkingDirectory = sinon . stub ( ) . returns ( new Promise ( resolve => {
143
+ resolveWorkdirChange = resolve ;
144
+ } ) )
145
+ const wrapper = shallow ( buildApp ( { currentWorkDir : 'original' , changeWorkingDirectory} ) ) ;
146
+
147
+ assert . strictEqual ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'workdir' ) , 'original' ) ;
148
+ assert . isFalse ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'changingWorkDir' ) ) ;
149
+
150
+ const handlerPromise = wrapper . find ( 'GitTabHeaderView' ) . prop ( 'handleWorkDirSelect' ) ( {
151
+ target : { value : 'work/dir' } ,
152
+ } ) ;
153
+ wrapper . update ( ) ;
154
+
155
+ assert . strictEqual ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'workdir' ) , 'work/dir' ) ;
156
+ assert . isTrue ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'changingWorkDir' ) ) ;
157
+ assert . isTrue ( changeWorkingDirectory . calledWith ( 'work/dir' ) ) ;
158
+
159
+ // Ignored while in-progress
160
+ wrapper . find ( 'GitTabHeaderView' ) . prop ( 'handleWorkDirSelect' ) ( {
161
+ target : { value : 'ig/nored' } ,
162
+ } ) ;
163
+
164
+ resolveWorkdirChange ( ) ;
165
+ await handlerPromise ;
166
+
167
+ assert . isFalse ( wrapper . find ( 'GitTabHeaderView' ) . prop ( 'changingWorkDir' ) ) ;
168
+ } ) ;
169
+
115
170
it ( 'unmounts without error' , function ( ) {
116
171
const wrapper = shallow ( buildApp ( ) ) ;
117
172
wrapper . unmount ( ) ;
0 commit comments