Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit 59a9daa

Browse files
committed
GitTabHeaderController test coverage
1 parent 610edb1 commit 59a9daa

File tree

1 file changed

+62
-7
lines changed

1 file changed

+62
-7
lines changed

test/controllers/git-tab-header-controller.test.js

Lines changed: 62 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,16 @@ describe('GitTabHeaderController', function() {
1515
function buildApp(overrides) {
1616
const props = {
1717
getCommitter: () => nullAuthor,
18+
currentWorkDir: null,
1819
getCurrentWorkDirs: () => createWorkdirs([]),
19-
onDidUpdateRepo: () => new Disposable(),
20+
changeWorkingDirectory: () => {},
21+
contextLocked: false,
22+
setContextLock: () => {},
2023
onDidChangeWorkDirs: () => new Disposable(),
21-
handleWorkDirSelect: () => null,
24+
onDidUpdateRepo: () => new Disposable(),
2225
...overrides,
2326
};
24-
return (
25-
<GitTabHeaderController
26-
{...props}
27-
/>
28-
);
27+
return <GitTabHeaderController {...props} />;
2928
}
3029

3130
it('get currentWorkDirs initializes workdirs state', function() {
@@ -112,6 +111,62 @@ describe('GitTabHeaderController', function() {
112111
assert.isTrue(getCommitter.calledOnce);
113112
});
114113

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+
115170
it('unmounts without error', function() {
116171
const wrapper = shallow(buildApp());
117172
wrapper.unmount();

0 commit comments

Comments
 (0)