Skip to content

Commit

Permalink
#48430 Add tests for extension pack disablement
Browse files Browse the repository at this point in the history
  • Loading branch information
sandy081 committed Jul 12, 2018
1 parent 20ca91a commit 70dd0dd
Showing 1 changed file with 61 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
import { URLService } from 'vs/platform/url/common/urlService';
import URI from 'vs/base/common/uri';

suite('ExtensionsWorkbenchService Test', () => {
suite('ExtensionsWorkbenchServiceTest', () => {

let instantiationService: TestInstantiationService;
let testObject: IExtensionsWorkbenchService;
Expand Down Expand Up @@ -851,6 +851,27 @@ suite('ExtensionsWorkbenchService Test', () => {
});
});

test('test disable extension pack disable only itself', () => {
const extensionA = aLocalExtension('a', { extensionPack: ['pub.b'] });
const extensionB = aLocalExtension('b');
const extensionC = aLocalExtension('c');

return instantiationService.get(IExtensionEnablementService).setEnablement(extensionA, EnablementState.Enabled)
.then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionB, EnablementState.Enabled))
.then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Enabled))
.then(() => {
instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]);
instantiationService.stubPromise(IDialogService, 'show', 1);
testObject = instantiationService.createInstance(ExtensionsWorkbenchService);

return testObject.setEnablement(testObject.local[0], EnablementState.Disabled)
.then(() => {
assert.equal(testObject.local[0].enablementState, EnablementState.Disabled);
assert.equal(testObject.local[1].enablementState, EnablementState.Enabled);
});
});
});

test('test disable extension with dependencies disable all', () => {
const extensionA = aLocalExtension('a', { extensionDependencies: ['pub.b'] });
const extensionB = aLocalExtension('b');
Expand All @@ -872,6 +893,27 @@ suite('ExtensionsWorkbenchService Test', () => {
});
});

test('test disable extension pack disable all', () => {
const extensionA = aLocalExtension('a', { extensionPack: ['pub.b'] });
const extensionB = aLocalExtension('b');
const extensionC = aLocalExtension('c');

return instantiationService.get(IExtensionEnablementService).setEnablement(extensionA, EnablementState.Enabled)
.then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionB, EnablementState.Enabled))
.then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Enabled))
.then(() => {
instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]);
instantiationService.stubPromise(IDialogService, 'show', 0);
testObject = instantiationService.createInstance(ExtensionsWorkbenchService);

return testObject.setEnablement(testObject.local[0], EnablementState.Disabled)
.then(() => {
assert.equal(testObject.local[0].enablementState, EnablementState.Disabled);
assert.equal(testObject.local[1].enablementState, EnablementState.Disabled);
});
});
});

test('test disable extension fails if extension is a dependent of other', () => {
const extensionA = aLocalExtension('a', { extensionDependencies: ['pub.b'] });
const extensionB = aLocalExtension('b');
Expand All @@ -887,6 +929,24 @@ suite('ExtensionsWorkbenchService Test', () => {
});
});

test('test disable extension when extension is part of a pack', () => {
const extensionA = aLocalExtension('a', { extensionPack: ['pub.b'] });
const extensionB = aLocalExtension('b');
const extensionC = aLocalExtension('c');

return instantiationService.get(IExtensionEnablementService).setEnablement(extensionA, EnablementState.Enabled)
.then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionB, EnablementState.Enabled))
.then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Enabled))
.then(() => {
instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]);
testObject = instantiationService.createInstance(ExtensionsWorkbenchService);
return testObject.setEnablement(testObject.local[1], EnablementState.Disabled)
.then(() => {
assert.equal(testObject.local[1].enablementState, EnablementState.Disabled);
});
});
});

test('test disable both dependency and dependent do not promot and do not fail', () => {
const extensionA = aLocalExtension('a', { extensionDependencies: ['pub.b'] });
const extensionB = aLocalExtension('b');
Expand Down Expand Up @@ -1076,27 +1136,6 @@ suite('ExtensionsWorkbenchService Test', () => {
});
});

test('test enable extension with dependencies does not enable if cancelled', () => {
const extensionA = aLocalExtension('a', { extensionDependencies: ['pub.b'] });
const extensionB = aLocalExtension('b');
const extensionC = aLocalExtension('c');

return instantiationService.get(IExtensionEnablementService).setEnablement(extensionA, EnablementState.Disabled)
.then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionB, EnablementState.Disabled))
.then(() => instantiationService.get(IExtensionEnablementService).setEnablement(extensionC, EnablementState.Disabled))
.then(() => {
instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [extensionA, extensionB, extensionC]);
instantiationService.stubPromise(IDialogService, 'show', 1);
testObject = instantiationService.createInstance(ExtensionsWorkbenchService);

return testObject.setEnablement(testObject.local[0], EnablementState.Enabled)
.then(() => {
assert.equal(testObject.local[0].enablementState, EnablementState.Disabled);
assert.equal(testObject.local[1].enablementState, EnablementState.Disabled);
});
});
});

test('test enable extension with dependencies does not prompt if dependency is enabled already', () => {
const extensionA = aLocalExtension('a', { extensionDependencies: ['pub.b'] });
const extensionB = aLocalExtension('b');
Expand Down

0 comments on commit 70dd0dd

Please sign in to comment.