Skip to content

Commit d0480eb

Browse files
authored
Merge pull request #1324 from jzhang20133/email_username_popup
Unable to set email/username on a remote server
2 parents 2911c11 + b27f819 commit d0480eb

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

src/__tests__/test-components/GitPanel.spec.tsx

+66
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,72 @@ describe('GitPanel', () => {
274274
expect(commitSpy).toHaveBeenCalledWith(commitSummary, false, null);
275275
});
276276

277+
it('should prompt for user identity if user.name is not set when pathRepository is empty string', async () => {
278+
props.model.pathRepository = '';
279+
renderResult.rerender(<GitPanel {...props} />);
280+
281+
configSpy.mockImplementation(mockConfigImplementation('user.email'));
282+
mockUtils.showDialog.mockResolvedValue(dialogValue);
283+
284+
await userEvent.type(screen.getAllByRole('textbox')[0], commitSummary);
285+
await userEvent.click(screen.getByRole('button', { name: 'Commit' }));
286+
287+
await waitFor(() => {
288+
expect(configSpy).toHaveBeenCalledTimes(2);
289+
});
290+
expect(configSpy.mock.calls[0]).toHaveLength(0);
291+
expect(configSpy.mock.calls[1]).toEqual([commitUser]);
292+
expect(commitSpy).toHaveBeenCalledTimes(1);
293+
expect(commitSpy).toHaveBeenCalledWith(commitSummary, false, null);
294+
});
295+
296+
it('should prompt for user identity if user.email is not set when pathRepository is empty string', async () => {
297+
props.model.pathRepository = '';
298+
renderResult.rerender(<GitPanel {...props} />);
299+
configSpy.mockImplementation(mockConfigImplementation('user.name'));
300+
mockUtils.showDialog.mockResolvedValue(dialogValue);
301+
302+
await userEvent.type(screen.getAllByRole('textbox')[0], commitSummary);
303+
await userEvent.click(screen.getByRole('button', { name: 'Commit' }));
304+
305+
await waitFor(() => {
306+
expect(configSpy).toHaveBeenCalledTimes(2);
307+
});
308+
expect(configSpy.mock.calls[0]).toHaveLength(0);
309+
expect(configSpy.mock.calls[1]).toEqual([commitUser]);
310+
expect(commitSpy).toHaveBeenCalledTimes(1);
311+
expect(commitSpy).toHaveBeenCalledWith(commitSummary, false, null);
312+
});
313+
314+
it('should not commit if no user identity is set and the user rejects the dialog when pathRepository is empty string', async () => {
315+
props.model.pathRepository = '';
316+
renderResult.rerender(<GitPanel {...props} />);
317+
configSpy.mockResolvedValue({ options: {} });
318+
mockUtils.showDialog.mockResolvedValue({
319+
button: {
320+
...dialogValue.button,
321+
accept: false
322+
},
323+
isChecked: null,
324+
value: null
325+
});
326+
327+
await userEvent.type(screen.getAllByRole('textbox')[0], commitSummary);
328+
await userEvent.type(
329+
screen.getAllByRole('textbox')[1],
330+
commitDescription
331+
);
332+
await userEvent.click(screen.getByRole('button', { name: 'Commit' }));
333+
334+
await waitFor(() => expect(configSpy).toHaveBeenCalledTimes(1));
335+
expect(configSpy).toHaveBeenCalledWith();
336+
expect(commitSpy).not.toHaveBeenCalled();
337+
338+
// Should not erase commit message
339+
expect(screen.getAllByRole('textbox')[0]).toHaveValue(commitSummary);
340+
expect(screen.getAllByRole('textbox')[1]).toHaveValue(commitDescription);
341+
});
342+
277343
it('should not commit if no user identity is set and the user rejects the dialog', async () => {
278344
configSpy.mockResolvedValue({ options: {} });
279345
mockUtils.showDialog.mockResolvedValue({

src/components/GitPanel.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@ export class GitPanel extends React.Component<IGitPanelProps, IGitPanelState> {
842842
* @param path - repository path
843843
*/
844844
private async _hasIdentity(path: string | null): Promise<string | null> {
845-
if (!path) {
845+
if (path === null) {
846846
return null;
847847
}
848848

0 commit comments

Comments
 (0)