sfdx-browserforce-plugin 5.0.2 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -4
- package/lib/browserforce-command.d.ts +0 -15
- package/lib/browserforce-command.js +0 -61
- package/lib/browserforce-command.js.map +0 -1
- package/lib/browserforce.d.ts +0 -25
- package/lib/browserforce.js +0 -169
- package/lib/browserforce.js.map +0 -1
- package/lib/commands/browserforce/apply.d.ts +0 -10
- package/lib/commands/browserforce/apply.js +0 -54
- package/lib/commands/browserforce/apply.js.map +0 -1
- package/lib/commands/browserforce/plan.d.ts +0 -10
- package/lib/commands/browserforce/plan.js +0 -56
- package/lib/commands/browserforce/plan.js.map +0 -1
- package/lib/config-parser.d.ts +0 -16
- package/lib/config-parser.js +0 -24
- package/lib/config-parser.js.map +0 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
- package/lib/jsforce-utils.d.ts +0 -5
- package/lib/jsforce-utils.js +0 -14
- package/lib/jsforce-utils.js.map +0 -1
- package/lib/pages/login.d.ts +0 -8
- package/lib/pages/login.js +0 -39
- package/lib/pages/login.js.map +0 -1
- package/lib/plugin.d.ts +0 -17
- package/lib/plugin.js +0 -30
- package/lib/plugin.js.map +0 -1
- package/lib/plugins/activity-settings/index.d.ts +0 -9
- package/lib/plugins/activity-settings/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/activity-settings/index.e2e-spec.js +0 -36
- package/lib/plugins/activity-settings/index.e2e-spec.js.map +0 -1
- package/lib/plugins/activity-settings/index.js +0 -31
- package/lib/plugins/activity-settings/index.js.map +0 -1
- package/lib/plugins/company-information/index.d.ts +0 -8
- package/lib/plugins/company-information/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/company-information/index.e2e-spec.js +0 -37
- package/lib/plugins/company-information/index.e2e-spec.js.map +0 -1
- package/lib/plugins/company-information/index.js +0 -50
- package/lib/plugins/company-information/index.js.map +0 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.d.ts +0 -14
- package/lib/plugins/customer-portal/available-custom-objects/index.js +0 -114
- package/lib/plugins/customer-portal/available-custom-objects/index.js.map +0 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.test.d.ts +0 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.test.js +0 -39
- package/lib/plugins/customer-portal/available-custom-objects/index.test.js.map +0 -1
- package/lib/plugins/customer-portal/enabled/index.d.ts +0 -6
- package/lib/plugins/customer-portal/enabled/index.js +0 -27
- package/lib/plugins/customer-portal/enabled/index.js.map +0 -1
- package/lib/plugins/customer-portal/enabled/index.test.d.ts +0 -1
- package/lib/plugins/customer-portal/enabled/index.test.js +0 -34
- package/lib/plugins/customer-portal/enabled/index.test.js.map +0 -1
- package/lib/plugins/customer-portal/index.d.ts +0 -15
- package/lib/plugins/customer-portal/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/customer-portal/index.e2e-spec.js +0 -202
- package/lib/plugins/customer-portal/index.e2e-spec.js.map +0 -1
- package/lib/plugins/customer-portal/index.js +0 -59
- package/lib/plugins/customer-portal/index.js.map +0 -1
- package/lib/plugins/customer-portal/index.test.d.ts +0 -1
- package/lib/plugins/customer-portal/index.test.js +0 -84
- package/lib/plugins/customer-portal/index.test.js.map +0 -1
- package/lib/plugins/customer-portal/portals/index.d.ts +0 -25
- package/lib/plugins/customer-portal/portals/index.js +0 -180
- package/lib/plugins/customer-portal/portals/index.js.map +0 -1
- package/lib/plugins/customer-portal/portals/index.test.d.ts +0 -1
- package/lib/plugins/customer-portal/portals/index.test.js +0 -140
- package/lib/plugins/customer-portal/portals/index.test.js.map +0 -1
- package/lib/plugins/density-settings/index.d.ts +0 -17
- package/lib/plugins/density-settings/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/density-settings/index.e2e-spec.js +0 -39
- package/lib/plugins/density-settings/index.e2e-spec.js.map +0 -1
- package/lib/plugins/density-settings/index.js +0 -46
- package/lib/plugins/density-settings/index.js.map +0 -1
- package/lib/plugins/deprecated.d.ts +0 -4
- package/lib/plugins/deprecated.js +0 -28
- package/lib/plugins/deprecated.js.map +0 -1
- package/lib/plugins/email-deliverability/index.d.ts +0 -9
- package/lib/plugins/email-deliverability/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/email-deliverability/index.e2e-spec.js +0 -55
- package/lib/plugins/email-deliverability/index.e2e-spec.js.map +0 -1
- package/lib/plugins/email-deliverability/index.js +0 -39
- package/lib/plugins/email-deliverability/index.js.map +0 -1
- package/lib/plugins/high-velocity-sales-settings/index.d.ts +0 -10
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js +0 -29
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js.map +0 -1
- package/lib/plugins/high-velocity-sales-settings/index.js +0 -42
- package/lib/plugins/high-velocity-sales-settings/index.js.map +0 -1
- package/lib/plugins/high-velocity-sales-settings/page.d.ts +0 -7
- package/lib/plugins/high-velocity-sales-settings/page.js +0 -29
- package/lib/plugins/high-velocity-sales-settings/page.js.map +0 -1
- package/lib/plugins/history-tracking/index.d.ts +0 -17
- package/lib/plugins/history-tracking/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/history-tracking/index.e2e-spec.js +0 -106
- package/lib/plugins/history-tracking/index.e2e-spec.js.map +0 -1
- package/lib/plugins/history-tracking/index.js +0 -169
- package/lib/plugins/history-tracking/index.js.map +0 -1
- package/lib/plugins/home-page-layouts/index.d.ts +0 -14
- package/lib/plugins/home-page-layouts/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/home-page-layouts/index.e2e-spec.js +0 -47
- package/lib/plugins/home-page-layouts/index.e2e-spec.js.map +0 -1
- package/lib/plugins/home-page-layouts/index.js +0 -90
- package/lib/plugins/home-page-layouts/index.js.map +0 -1
- package/lib/plugins/home-page-layouts/index.test.d.ts +0 -1
- package/lib/plugins/home-page-layouts/index.test.js +0 -104
- package/lib/plugins/home-page-layouts/index.test.js.map +0 -1
- package/lib/plugins/index.d.ts +0 -23
- package/lib/plugins/index.js +0 -24
- package/lib/plugins/index.js.map +0 -1
- package/lib/plugins/lightning-experience-settings/index.d.ts +0 -18
- package/lib/plugins/lightning-experience-settings/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/lightning-experience-settings/index.e2e-spec.js +0 -40
- package/lib/plugins/lightning-experience-settings/index.e2e-spec.js.map +0 -1
- package/lib/plugins/lightning-experience-settings/index.js +0 -97
- package/lib/plugins/lightning-experience-settings/index.js.map +0 -1
- package/lib/plugins/linkedin-sales-navigator-settings/index.d.ts +0 -8
- package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.js +0 -29
- package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.js.map +0 -1
- package/lib/plugins/linkedin-sales-navigator-settings/index.js +0 -15
- package/lib/plugins/linkedin-sales-navigator-settings/index.js.map +0 -1
- package/lib/plugins/linkedin-sales-navigator-settings/page.d.ts +0 -8
- package/lib/plugins/linkedin-sales-navigator-settings/page.js +0 -32
- package/lib/plugins/linkedin-sales-navigator-settings/page.js.map +0 -1
- package/lib/plugins/omni-channel-settings/index.d.ts +0 -9
- package/lib/plugins/omni-channel-settings/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/omni-channel-settings/index.e2e-spec.js +0 -26
- package/lib/plugins/omni-channel-settings/index.e2e-spec.js.map +0 -1
- package/lib/plugins/omni-channel-settings/index.js +0 -29
- package/lib/plugins/omni-channel-settings/index.js.map +0 -1
- package/lib/plugins/opportunity-splits/index.d.ts +0 -9
- package/lib/plugins/opportunity-splits/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/opportunity-splits/index.e2e-spec.js +0 -46
- package/lib/plugins/opportunity-splits/index.e2e-spec.js.map +0 -1
- package/lib/plugins/opportunity-splits/index.js +0 -32
- package/lib/plugins/opportunity-splits/index.js.map +0 -1
- package/lib/plugins/opportunity-splits/pages/layout-selection.d.ts +0 -8
- package/lib/plugins/opportunity-splits/pages/layout-selection.js +0 -17
- package/lib/plugins/opportunity-splits/pages/layout-selection.js.map +0 -1
- package/lib/plugins/opportunity-splits/pages/overview.d.ts +0 -10
- package/lib/plugins/opportunity-splits/pages/overview.js +0 -38
- package/lib/plugins/opportunity-splits/pages/overview.js.map +0 -1
- package/lib/plugins/opportunity-splits/pages/setup.d.ts +0 -8
- package/lib/plugins/opportunity-splits/pages/setup.js +0 -19
- package/lib/plugins/opportunity-splits/pages/setup.js.map +0 -1
- package/lib/plugins/permission-sets/index.d.ts +0 -10
- package/lib/plugins/permission-sets/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/permission-sets/index.e2e-spec.js +0 -36
- package/lib/plugins/permission-sets/index.e2e-spec.js.map +0 -1
- package/lib/plugins/permission-sets/index.js +0 -22
- package/lib/plugins/permission-sets/index.js.map +0 -1
- package/lib/plugins/permission-sets/service-presence-status/index.d.ts +0 -10
- package/lib/plugins/permission-sets/service-presence-status/index.js +0 -60
- package/lib/plugins/permission-sets/service-presence-status/index.js.map +0 -1
- package/lib/plugins/picklists/field-dependencies/index.d.ts +0 -11
- package/lib/plugins/picklists/field-dependencies/index.js +0 -56
- package/lib/plugins/picklists/field-dependencies/index.js.map +0 -1
- package/lib/plugins/picklists/field-dependencies/index.test.d.ts +0 -1
- package/lib/plugins/picklists/field-dependencies/index.test.js +0 -64
- package/lib/plugins/picklists/field-dependencies/index.test.js.map +0 -1
- package/lib/plugins/picklists/field-dependencies/pages.d.ts +0 -14
- package/lib/plugins/picklists/field-dependencies/pages.js +0 -57
- package/lib/plugins/picklists/field-dependencies/pages.js.map +0 -1
- package/lib/plugins/picklists/index.d.ts +0 -23
- package/lib/plugins/picklists/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/picklists/index.e2e-spec.js +0 -100
- package/lib/plugins/picklists/index.e2e-spec.js.map +0 -1
- package/lib/plugins/picklists/index.js +0 -153
- package/lib/plugins/picklists/index.js.map +0 -1
- package/lib/plugins/picklists/pages.d.ts +0 -40
- package/lib/plugins/picklists/pages.js +0 -194
- package/lib/plugins/picklists/pages.js.map +0 -1
- package/lib/plugins/picklists/standard-value-set.d.ts +0 -1
- package/lib/plugins/picklists/standard-value-set.js +0 -80
- package/lib/plugins/picklists/standard-value-set.js.map +0 -1
- package/lib/plugins/record-types/index.d.ts +0 -13
- package/lib/plugins/record-types/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/record-types/index.e2e-spec.js +0 -73
- package/lib/plugins/record-types/index.e2e-spec.js.map +0 -1
- package/lib/plugins/record-types/index.js +0 -70
- package/lib/plugins/record-types/index.js.map +0 -1
- package/lib/plugins/record-types/pages.d.ts +0 -15
- package/lib/plugins/record-types/pages.js +0 -64
- package/lib/plugins/record-types/pages.js.map +0 -1
- package/lib/plugins/relate-contact-to-multiple-accounts/index.d.ts +0 -11
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js +0 -29
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js.map +0 -1
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js +0 -72
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js.map +0 -1
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.d.ts +0 -8
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.js +0 -3
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.js.map +0 -1
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js +0 -50
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js.map +0 -1
- package/lib/plugins/reports-and-dashboards/index.d.ts +0 -11
- package/lib/plugins/reports-and-dashboards/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/reports-and-dashboards/index.e2e-spec.js +0 -3
- package/lib/plugins/reports-and-dashboards/index.e2e-spec.js.map +0 -1
- package/lib/plugins/reports-and-dashboards/index.js +0 -29
- package/lib/plugins/reports-and-dashboards/index.js.map +0 -1
- package/lib/plugins/salesforce-cpq-config/formConfig.d.ts +0 -17
- package/lib/plugins/salesforce-cpq-config/formConfig.js +0 -649
- package/lib/plugins/salesforce-cpq-config/formConfig.js.map +0 -1
- package/lib/plugins/salesforce-cpq-config/index.d.ts +0 -7
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js +0 -37
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js.map +0 -1
- package/lib/plugins/salesforce-cpq-config/index.js +0 -195
- package/lib/plugins/salesforce-cpq-config/index.js.map +0 -1
- package/lib/plugins/salesforce-to-salesforce/index.d.ts +0 -9
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js +0 -34
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js.map +0 -1
- package/lib/plugins/salesforce-to-salesforce/index.js +0 -44
- package/lib/plugins/salesforce-to-salesforce/index.js.map +0 -1
- package/lib/plugins/security/authentication-configuration/index.d.ts +0 -11
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js +0 -101
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js.map +0 -1
- package/lib/plugins/security/authentication-configuration/index.js +0 -62
- package/lib/plugins/security/authentication-configuration/index.js.map +0 -1
- package/lib/plugins/security/certificate-and-key-management/index.d.ts +0 -23
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js +0 -63
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js.map +0 -1
- package/lib/plugins/security/certificate-and-key-management/index.js +0 -159
- package/lib/plugins/security/certificate-and-key-management/index.js.map +0 -1
- package/lib/plugins/security/certificate-and-key-management/index.test.d.ts +0 -1
- package/lib/plugins/security/certificate-and-key-management/index.test.js +0 -61
- package/lib/plugins/security/certificate-and-key-management/index.test.js.map +0 -1
- package/lib/plugins/security/index.d.ts +0 -13
- package/lib/plugins/security/index.js +0 -42
- package/lib/plugins/security/index.js.map +0 -1
- package/lib/plugins/service-channels/capacity/index.d.ts +0 -18
- package/lib/plugins/service-channels/capacity/index.js +0 -133
- package/lib/plugins/service-channels/capacity/index.js.map +0 -1
- package/lib/plugins/service-channels/index.d.ts +0 -12
- package/lib/plugins/service-channels/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/service-channels/index.e2e-spec.js +0 -57
- package/lib/plugins/service-channels/index.e2e-spec.js.map +0 -1
- package/lib/plugins/service-channels/index.js +0 -38
- package/lib/plugins/service-channels/index.js.map +0 -1
- package/lib/plugins/slack/index.d.ts +0 -9
- package/lib/plugins/slack/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/slack/index.e2e-spec.js +0 -47
- package/lib/plugins/slack/index.e2e-spec.js.map +0 -1
- package/lib/plugins/slack/index.js +0 -47
- package/lib/plugins/slack/index.js.map +0 -1
- package/lib/plugins/utils.d.ts +0 -3
- package/lib/plugins/utils.js +0 -47
- package/lib/plugins/utils.js.map +0 -1
- package/oclif.manifest.json +0 -163
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
2
|
-
import * as child from 'child_process';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import * as path from 'path';
|
|
5
|
-
import { PermissionSets } from './index.js';
|
|
6
|
-
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
7
|
-
describe(PermissionSets.name, function () {
|
|
8
|
-
this.timeout('10m');
|
|
9
|
-
let plugin;
|
|
10
|
-
before(() => {
|
|
11
|
-
plugin = new PermissionSets(global.bf);
|
|
12
|
-
});
|
|
13
|
-
const configurePermissionSet = [
|
|
14
|
-
{
|
|
15
|
-
permissionSetName: 'ServicePresenceTest',
|
|
16
|
-
servicePresenceStatuses: ['TestStatus', 'TestStatus3'],
|
|
17
|
-
},
|
|
18
|
-
];
|
|
19
|
-
it('should create permission set and service presence status as a prerequisite', () => {
|
|
20
|
-
const sourceDeployCmd = child.spawnSync('sf', [
|
|
21
|
-
'project',
|
|
22
|
-
'deploy',
|
|
23
|
-
'start',
|
|
24
|
-
'-d',
|
|
25
|
-
path.join(__dirname, 'sfdx-source'),
|
|
26
|
-
'--json',
|
|
27
|
-
]);
|
|
28
|
-
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
29
|
-
});
|
|
30
|
-
it('should configure permission set presence status', async () => {
|
|
31
|
-
await plugin.run(configurePermissionSet);
|
|
32
|
-
const res = await plugin.retrieve(configurePermissionSet);
|
|
33
|
-
assert.deepStrictEqual(res, configurePermissionSet);
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/permission-sets/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,MAAsB,CAAC;IAC3B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG;QAC7B;YACE,iBAAiB,EAAE,qBAAqB;YACxC,uBAAuB,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;SACvD;KACF,CAAC;IAEF,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;YAC5C,SAAS;YACT,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;YACnC,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,CAAC,eAAe,CACpB,eAAe,CAAC,MAAM,EACtB,CAAC,EACD,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAClC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QAC1D,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
import { ServicePresenceStatus } from './service-presence-status/index.js';
|
|
3
|
-
export class PermissionSets extends BrowserforcePlugin {
|
|
4
|
-
async retrieve(definition) {
|
|
5
|
-
const pluginServicePresenceStatus = new ServicePresenceStatus(this.browserforce);
|
|
6
|
-
const permissionSets = [];
|
|
7
|
-
for await (const permissionSet of definition) {
|
|
8
|
-
permissionSets.push({
|
|
9
|
-
permissionSetName: permissionSet.permissionSetName,
|
|
10
|
-
servicePresenceStatuses: await pluginServicePresenceStatus.retrieve(permissionSet),
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
return permissionSets;
|
|
14
|
-
}
|
|
15
|
-
async apply(plan) {
|
|
16
|
-
const pluginServicePresenceStatus = new ServicePresenceStatus(this.browserforce);
|
|
17
|
-
for await (const permissionSet of plan) {
|
|
18
|
-
await pluginServicePresenceStatus.apply(permissionSet);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/permission-sets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAO3E,MAAM,OAAO,cAAe,SAAQ,kBAAkB;IAC7C,KAAK,CAAC,QAAQ,CACnB,UAA4B;QAE5B,MAAM,2BAA2B,GAAG,IAAI,qBAAqB,CAC3D,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,cAAc,GAAoB,EAAE,CAAC;QAE3C,IAAI,KAAK,EAAE,MAAM,aAAa,IAAI,UAAU,EAAE,CAAC;YAC7C,cAAc,CAAC,IAAI,CAAC;gBAClB,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;gBAClD,uBAAuB,EAAE,MAAM,2BAA2B,CAAC,QAAQ,CACjE,aAAa,CACd;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAqB;QACtC,MAAM,2BAA2B,GAAG,IAAI,qBAAqB,CAC3D,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,IAAI,KAAK,EAAE,MAAM,aAAa,IAAI,IAAI,EAAE,CAAC;YACvC,MAAM,2BAA2B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
-
type PermissionSet = {
|
|
3
|
-
permissionSetName: string;
|
|
4
|
-
servicePresenceStatuses: string[];
|
|
5
|
-
};
|
|
6
|
-
export declare class ServicePresenceStatus extends BrowserforcePlugin {
|
|
7
|
-
retrieve(definition: PermissionSet): Promise<string[]>;
|
|
8
|
-
apply(config: PermissionSet): Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
export {};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
-
const ADD_BUTTON_SELECTOR = 'a[id$=":duelingListBox:backingList_add"]';
|
|
3
|
-
const REMOVE_BUTTON_SELECTOR = 'a[id$=":duelingListBox:backingList_remove"]';
|
|
4
|
-
const SAVE_BUTTON_SELECTOR = 'input[id$=":button_pc_save"]';
|
|
5
|
-
const VALUES_AVAILABLE_SELECTOR = 'select[id$=":duelingListBox:backingList_a"]:not([disabled="disabled"])';
|
|
6
|
-
const VALUES_ENABLED_SELECTOR = 'select[id$=":duelingListBox:backingList_s"]:not([disabled="disabled"])';
|
|
7
|
-
export class ServicePresenceStatus extends BrowserforcePlugin {
|
|
8
|
-
async retrieve(definition) {
|
|
9
|
-
// Query for the permission set
|
|
10
|
-
const permissionSetName = definition.permissionSetName;
|
|
11
|
-
const permissionSet = await this.org
|
|
12
|
-
.getConnection()
|
|
13
|
-
.singleRecordQuery(`SELECT Id FROM PermissionSet WHERE Name='${permissionSetName}'`);
|
|
14
|
-
// Open the permission set setup page
|
|
15
|
-
const page = await this.browserforce.openPage(`${permissionSet.Id}/e?s=ServicePresenceStatusAccess`);
|
|
16
|
-
const enabledServicePresenceStatuses = await page.$$eval(`${VALUES_ENABLED_SELECTOR} > option`, (options) => {
|
|
17
|
-
return options.map((option) => option.title ?? '');
|
|
18
|
-
});
|
|
19
|
-
return enabledServicePresenceStatuses;
|
|
20
|
-
}
|
|
21
|
-
async apply(config) {
|
|
22
|
-
// Query for the permission set
|
|
23
|
-
const permissionSetName = config.permissionSetName;
|
|
24
|
-
const permissionSet = await this.org
|
|
25
|
-
.getConnection()
|
|
26
|
-
.singleRecordQuery(`SELECT Id FROM PermissionSet WHERE Name='${permissionSetName}'`);
|
|
27
|
-
// Open the permission set setup page
|
|
28
|
-
const page = await this.browserforce.openPage(`${permissionSet.Id}/e?s=ServicePresenceStatusAccess`);
|
|
29
|
-
if (config?.servicePresenceStatuses) {
|
|
30
|
-
await page.waitForSelector(`${VALUES_AVAILABLE_SELECTOR} > option`);
|
|
31
|
-
const availableElements = await page.$$(`${VALUES_AVAILABLE_SELECTOR} > option`);
|
|
32
|
-
for (const availableElement of availableElements) {
|
|
33
|
-
const optionTitle = (await availableElement.evaluate((node) => node.getAttribute('title')))?.toString();
|
|
34
|
-
if (optionTitle &&
|
|
35
|
-
config.servicePresenceStatuses.includes(optionTitle)) {
|
|
36
|
-
await availableElement.click();
|
|
37
|
-
await page.click(ADD_BUTTON_SELECTOR);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
await page.waitForSelector(`${VALUES_ENABLED_SELECTOR} > option`);
|
|
41
|
-
const enabledElements = await page.$$(`${VALUES_ENABLED_SELECTOR} > option`);
|
|
42
|
-
for (const enabledElement of enabledElements) {
|
|
43
|
-
const optionTitle = (await enabledElement.evaluate((node) => node.getAttribute('title')))?.toString();
|
|
44
|
-
if (optionTitle &&
|
|
45
|
-
!config.servicePresenceStatuses.includes(optionTitle)) {
|
|
46
|
-
await enabledElement.click();
|
|
47
|
-
await page.click(REMOVE_BUTTON_SELECTOR);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Save the settings and wait for page refresh
|
|
52
|
-
await Promise.all([
|
|
53
|
-
page.waitForNavigation(),
|
|
54
|
-
page.click(SAVE_BUTTON_SELECTOR),
|
|
55
|
-
]);
|
|
56
|
-
// Close the page
|
|
57
|
-
await page.close();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/permission-sets/service-presence-status/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
-
export type FieldDependencyConfig = {
|
|
3
|
-
object: string;
|
|
4
|
-
dependentField: string;
|
|
5
|
-
controllingField: string | null;
|
|
6
|
-
};
|
|
7
|
-
export type Config = FieldDependencyConfig[];
|
|
8
|
-
export declare class FieldDependencies extends BrowserforcePlugin {
|
|
9
|
-
retrieve(definition: Config): Promise<Config>;
|
|
10
|
-
apply(plan: Config): Promise<void>;
|
|
11
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { retry } from '../../../browserforce.js';
|
|
2
|
-
import { ensureArray } from '../../../jsforce-utils.js';
|
|
3
|
-
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
4
|
-
import { FieldDependencyPage, NewFieldDependencyPage } from './pages.js';
|
|
5
|
-
export class FieldDependencies extends BrowserforcePlugin {
|
|
6
|
-
async retrieve(definition) {
|
|
7
|
-
const conn = this.org.getConnection();
|
|
8
|
-
const dependentFieldNames = definition.map((f) => `${f.object}.${f.dependentField}`);
|
|
9
|
-
const result = await conn.metadata.read('CustomField', dependentFieldNames);
|
|
10
|
-
const metadata = ensureArray(result);
|
|
11
|
-
const state = definition.map((f) => {
|
|
12
|
-
const fieldState = { ...f };
|
|
13
|
-
const field = metadata.find((m) => m.fullName === `${f.object}.${f.dependentField}`);
|
|
14
|
-
// for diffing: to unset a field dependency, set it to null
|
|
15
|
-
fieldState.controllingField = field?.valueSet?.controllingField ?? null;
|
|
16
|
-
return fieldState;
|
|
17
|
-
});
|
|
18
|
-
return state;
|
|
19
|
-
}
|
|
20
|
-
async apply(plan) {
|
|
21
|
-
const conn = this.org.getConnection();
|
|
22
|
-
const listMetadataResult = await conn.metadata.list([
|
|
23
|
-
{
|
|
24
|
-
type: 'CustomObject',
|
|
25
|
-
},
|
|
26
|
-
{ type: 'CustomField' },
|
|
27
|
-
]);
|
|
28
|
-
const fileProperties = ensureArray(listMetadataResult);
|
|
29
|
-
for (const dep of plan) {
|
|
30
|
-
await retry(async () => {
|
|
31
|
-
const customObject = fileProperties.find((x) => x.type === 'CustomObject' && x.fullName === dep.object);
|
|
32
|
-
if (!customObject) {
|
|
33
|
-
throw new Error(`Could not find CustomObject "${dep.object}"`);
|
|
34
|
-
}
|
|
35
|
-
const dependentField = fileProperties.find((x) => x.type === 'CustomField' &&
|
|
36
|
-
x.fullName === `${dep.object}.${dep.dependentField}`);
|
|
37
|
-
if (!dependentField) {
|
|
38
|
-
throw new Error(`Could not find dependent field "${dep.object}.${dep.dependentField}"`);
|
|
39
|
-
}
|
|
40
|
-
// always try deleting an existing dependency first
|
|
41
|
-
const fieldDependenciesPage = new FieldDependencyPage(await this.browserforce.openPage(FieldDependencyPage.getUrl(customObject.id)));
|
|
42
|
-
await fieldDependenciesPage.clickDeleteDependencyActionForField(dependentField.id);
|
|
43
|
-
if (dep.controllingField) {
|
|
44
|
-
const controllingField = fileProperties.find((x) => x.type === 'CustomField' &&
|
|
45
|
-
x.fullName === `${dep.object}.${dep.controllingField}`);
|
|
46
|
-
if (!controllingField) {
|
|
47
|
-
throw new Error(`Could not find controlling field "${dep.object}.${dep.controllingField}"`);
|
|
48
|
-
}
|
|
49
|
-
const newFieldDependencyPage = new NewFieldDependencyPage(await this.browserforce.openPage(NewFieldDependencyPage.getUrl(customObject.id, dependentField.id, controllingField.id)));
|
|
50
|
-
await newFieldDependencyPage.save();
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/picklists/field-dependencies/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
2
|
-
import { deepDiff } from '../../utils.js';
|
|
3
|
-
const tests = [
|
|
4
|
-
{
|
|
5
|
-
description: 'should return no change',
|
|
6
|
-
source: [
|
|
7
|
-
{
|
|
8
|
-
object: 'Vehicle__c',
|
|
9
|
-
dependentField: 'Gears__c',
|
|
10
|
-
controllingField: null,
|
|
11
|
-
},
|
|
12
|
-
],
|
|
13
|
-
target: [
|
|
14
|
-
{
|
|
15
|
-
object: 'Vehicle__c',
|
|
16
|
-
dependentField: 'Gears__c',
|
|
17
|
-
controllingField: null,
|
|
18
|
-
},
|
|
19
|
-
],
|
|
20
|
-
expected: undefined,
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
description: 'should unset controlling field',
|
|
24
|
-
source: [
|
|
25
|
-
{
|
|
26
|
-
object: 'Vehicle__c',
|
|
27
|
-
dependentField: 'Gears__c',
|
|
28
|
-
controllingField: 'Foo__c',
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
target: [
|
|
32
|
-
{
|
|
33
|
-
object: 'Vehicle__c',
|
|
34
|
-
dependentField: 'Gears__c',
|
|
35
|
-
controllingField: null,
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
expected: [
|
|
39
|
-
{
|
|
40
|
-
object: 'Vehicle__c',
|
|
41
|
-
dependentField: 'Gears__c',
|
|
42
|
-
controllingField: null,
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
];
|
|
47
|
-
describe('FieldDependencies', () => {
|
|
48
|
-
describe('diff()', () => {
|
|
49
|
-
// const p = new FieldDependencies(global.bf);
|
|
50
|
-
// for (const t of tests) {
|
|
51
|
-
// it(t.description, () => {
|
|
52
|
-
// const actual = p.diff(t.source, t.target);
|
|
53
|
-
// assert.deepStrictEqual(actual, t.expected);
|
|
54
|
-
// });
|
|
55
|
-
// }
|
|
56
|
-
for (const t of tests) {
|
|
57
|
-
it(t.description, () => {
|
|
58
|
-
const actual = deepDiff(t.source, t.target);
|
|
59
|
-
assert.deepStrictEqual(actual, t.expected);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/plugins/picklists/field-dependencies/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQ1C,MAAM,KAAK,GAAQ;IACjB;QACE,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,YAAY;gBACpB,cAAc,EAAE,UAAU;gBAC1B,gBAAgB,EAAE,IAAI;aACvB;SACF;QACD,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,YAAY;gBACpB,cAAc,EAAE,UAAU;gBAC1B,gBAAgB,EAAE,IAAI;aACvB;SACF;QACD,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,WAAW,EAAE,gCAAgC;QAC7C,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,YAAY;gBACpB,cAAc,EAAE,UAAU;gBAC1B,gBAAgB,EAAE,QAAQ;aAC3B;SACF;QACD,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,YAAY;gBACpB,cAAc,EAAE,UAAU;gBAC1B,gBAAgB,EAAE,IAAI;aACvB;SACF;QACD,QAAQ,EAAE;YACR;gBACE,MAAM,EAAE,YAAY;gBACpB,cAAc,EAAE,UAAU;gBAC1B,gBAAgB,EAAE,IAAI;aACvB;SACF;KACF;CACF,CAAC;AAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,8CAA8C;QAC9C,2BAA2B;QAC3B,8BAA8B;QAC9B,iDAAiD;QACjD,kDAAkD;QAClD,QAAQ;QACR,IAAI;QACJ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE;gBACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Page } from 'puppeteer';
|
|
2
|
-
export declare class FieldDependencyPage {
|
|
3
|
-
private page;
|
|
4
|
-
constructor(page: Page);
|
|
5
|
-
static getUrl(customObjectId: string): string;
|
|
6
|
-
clickDeleteDependencyActionForField(customFieldId: string): Promise<FieldDependencyPage>;
|
|
7
|
-
}
|
|
8
|
-
export declare class NewFieldDependencyPage {
|
|
9
|
-
protected page: any;
|
|
10
|
-
protected saveButton: string;
|
|
11
|
-
constructor(page: Page);
|
|
12
|
-
static getUrl(customObjectId: string, dependentFieldId: string, controllingFieldId: string): string;
|
|
13
|
-
save(): Promise<void>;
|
|
14
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { throwPageErrors } from '../../../browserforce.js';
|
|
2
|
-
export class FieldDependencyPage {
|
|
3
|
-
page;
|
|
4
|
-
constructor(page) {
|
|
5
|
-
this.page = page;
|
|
6
|
-
}
|
|
7
|
-
static getUrl(customObjectId) {
|
|
8
|
-
return `setup/ui/dependencyList.jsp?tableEnumOrId=${customObjectId.substring(0, 15)}&setupid=CustomObjects`;
|
|
9
|
-
}
|
|
10
|
-
async clickDeleteDependencyActionForField(customFieldId) {
|
|
11
|
-
// wait for "new" button in field dependencies releated list header
|
|
12
|
-
await this.page.waitForSelector('div.listRelatedObject div.pbHeader input[name="new"]');
|
|
13
|
-
const xpath = `//a[contains(@href, "/p/dependency/NewDependencyUI/e") and contains(@href, "delID=${customFieldId.substring(0, 15)}")]`;
|
|
14
|
-
const actionLinkHandles = await this.page.$$(`xpath/.${xpath}`);
|
|
15
|
-
if (actionLinkHandles.length) {
|
|
16
|
-
this.page.on('dialog', async (dialog) => {
|
|
17
|
-
await dialog.accept();
|
|
18
|
-
});
|
|
19
|
-
await Promise.all([
|
|
20
|
-
this.page.waitForNavigation(),
|
|
21
|
-
this.page.evaluate((e) => e.click(), actionLinkHandles[0]),
|
|
22
|
-
]);
|
|
23
|
-
await throwPageErrors(this.page);
|
|
24
|
-
}
|
|
25
|
-
return new FieldDependencyPage(this.page);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export class NewFieldDependencyPage {
|
|
29
|
-
page;
|
|
30
|
-
saveButton = 'input[name="save"]';
|
|
31
|
-
constructor(page) {
|
|
32
|
-
this.page = page;
|
|
33
|
-
}
|
|
34
|
-
static getUrl(customObjectId, dependentFieldId, controllingFieldId) {
|
|
35
|
-
return `p/dependency/NewDependencyUI/e?tableEnumOrId=${customObjectId.substring(0, 15)}&setupid=CustomObjects&controller=${controllingFieldId.substring(0, 15)}&dependent=${dependentFieldId.substring(0, 15)}&retURL=/${customObjectId.substring(0, 15)}`;
|
|
36
|
-
}
|
|
37
|
-
async save() {
|
|
38
|
-
await this.page.waitForSelector(this.saveButton);
|
|
39
|
-
await Promise.all([
|
|
40
|
-
this.page.waitForNavigation(),
|
|
41
|
-
this.page.click(this.saveButton),
|
|
42
|
-
]);
|
|
43
|
-
await throwPageErrors(this.page);
|
|
44
|
-
// second step in wizard
|
|
45
|
-
this.page.on('dialog', async (dialog) => {
|
|
46
|
-
await dialog.accept();
|
|
47
|
-
});
|
|
48
|
-
await this.page.waitForSelector(this.saveButton);
|
|
49
|
-
await Promise.all([
|
|
50
|
-
this.page.waitForNavigation(),
|
|
51
|
-
this.page.click(this.saveButton),
|
|
52
|
-
]);
|
|
53
|
-
await throwPageErrors(this.page);
|
|
54
|
-
await this.page.close();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=pages.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../../../src/plugins/picklists/field-dependencies/pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
import { Config as FieldDependenciesConfig } from './field-dependencies/index.js';
|
|
3
|
-
type Config = {
|
|
4
|
-
picklistValues?: PicklistValuesConfig[];
|
|
5
|
-
fieldDependencies?: FieldDependenciesConfig;
|
|
6
|
-
};
|
|
7
|
-
type PicklistValuesConfig = {
|
|
8
|
-
metadataType: string;
|
|
9
|
-
metadataFullName: string;
|
|
10
|
-
value?: string;
|
|
11
|
-
newValue?: string;
|
|
12
|
-
statusCategory?: string;
|
|
13
|
-
replaceAllBlankValues?: boolean;
|
|
14
|
-
active?: boolean;
|
|
15
|
-
absent?: boolean;
|
|
16
|
-
_newValueExists?: boolean;
|
|
17
|
-
};
|
|
18
|
-
export declare class Picklists extends BrowserforcePlugin {
|
|
19
|
-
retrieve(definition: Config): Promise<Config>;
|
|
20
|
-
diff(state: Config, definition: Config): Config | undefined;
|
|
21
|
-
apply(config: Config): Promise<void>;
|
|
22
|
-
}
|
|
23
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
2
|
-
import * as child from 'child_process';
|
|
3
|
-
import { readFileSync } from 'node:fs';
|
|
4
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import * as path from 'path';
|
|
6
|
-
import { Picklists } from './index.js';
|
|
7
|
-
import { FieldDependencies } from './field-dependencies/index.js';
|
|
8
|
-
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
9
|
-
const readJsonFile = function (u) {
|
|
10
|
-
return JSON.parse(readFileSync(new URL(u, import.meta.url), 'utf8'));
|
|
11
|
-
};
|
|
12
|
-
describe(Picklists.name, function () {
|
|
13
|
-
this.timeout('10m');
|
|
14
|
-
let plugin;
|
|
15
|
-
before(() => {
|
|
16
|
-
plugin = new Picklists(global.bf);
|
|
17
|
-
});
|
|
18
|
-
const configNew = readJsonFile('./new.json').settings.picklists;
|
|
19
|
-
const configReplace = readJsonFile('./replace.json').settings.picklists;
|
|
20
|
-
const configReplaceAndDelete = readJsonFile('./replace-and-delete.json')
|
|
21
|
-
.settings.picklists;
|
|
22
|
-
const configDeactivate = readJsonFile('./deactivate.json').settings.picklists;
|
|
23
|
-
const configActivate = readJsonFile('./activate.json').settings.picklists;
|
|
24
|
-
const configReplaceAndDeactivate = readJsonFile('./replace-and-deactivate.json').settings.picklists;
|
|
25
|
-
it('should deploy a CustomObject for testing', () => {
|
|
26
|
-
const sourceDeployCmd = child.spawnSync('sf', [
|
|
27
|
-
'project',
|
|
28
|
-
'deploy',
|
|
29
|
-
'start',
|
|
30
|
-
'-d',
|
|
31
|
-
path.join(__dirname, 'sfdx-source'),
|
|
32
|
-
'--json',
|
|
33
|
-
]);
|
|
34
|
-
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
35
|
-
});
|
|
36
|
-
it('should add a new picklist value when it does not exist', async () => {
|
|
37
|
-
await plugin.run(configNew);
|
|
38
|
-
});
|
|
39
|
-
it('should not do anything when picklist value already exists', async () => {
|
|
40
|
-
const res = await plugin.run(configNew);
|
|
41
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
42
|
-
});
|
|
43
|
-
it('should replace picklist values', async () => {
|
|
44
|
-
await plugin.run(configReplace);
|
|
45
|
-
});
|
|
46
|
-
it('should replace and delete picklist values', async () => {
|
|
47
|
-
await plugin.run(configReplaceAndDelete);
|
|
48
|
-
});
|
|
49
|
-
it('should not do anything when the picklist values do not exist', async () => {
|
|
50
|
-
const res = await plugin.run(configReplaceAndDelete);
|
|
51
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
52
|
-
});
|
|
53
|
-
it('should deactivate picklist value', async () => {
|
|
54
|
-
await plugin.run(configDeactivate);
|
|
55
|
-
});
|
|
56
|
-
it('should activate picklist value', async () => {
|
|
57
|
-
await plugin.run(configActivate);
|
|
58
|
-
});
|
|
59
|
-
it('should not do anything when the picklist values already exist', async () => {
|
|
60
|
-
const res = await plugin.run(configActivate);
|
|
61
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
62
|
-
});
|
|
63
|
-
it('should replace and deactivate a picklist value', async () => {
|
|
64
|
-
await plugin.run(configReplaceAndDeactivate);
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
describe(FieldDependencies.name, function () {
|
|
68
|
-
this.timeout('10m');
|
|
69
|
-
let plugin;
|
|
70
|
-
before(() => {
|
|
71
|
-
plugin = new FieldDependencies(global.bf);
|
|
72
|
-
});
|
|
73
|
-
const configSet = readJsonFile('./field-dependencies/set.json').settings
|
|
74
|
-
.picklists.fieldDependencies;
|
|
75
|
-
const configUnset = readJsonFile('./field-dependencies/unset.json').settings
|
|
76
|
-
.picklists.fieldDependencies;
|
|
77
|
-
const configChange = readJsonFile('./field-dependencies/change.json').settings
|
|
78
|
-
.picklists.fieldDependencies;
|
|
79
|
-
it('should not do anything when the dependency is already set', async () => {
|
|
80
|
-
const res = await plugin.run(configSet);
|
|
81
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
82
|
-
});
|
|
83
|
-
it('should unset a field dependency', async () => {
|
|
84
|
-
await plugin.run(configUnset);
|
|
85
|
-
});
|
|
86
|
-
it('should not do anything when the dependency is already unset', async () => {
|
|
87
|
-
const res = await plugin.run(configUnset);
|
|
88
|
-
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
89
|
-
});
|
|
90
|
-
it('should set a field dependency', async () => {
|
|
91
|
-
await plugin.run(configSet);
|
|
92
|
-
});
|
|
93
|
-
it('should change a field dependency', async () => {
|
|
94
|
-
await plugin.run(configChange);
|
|
95
|
-
});
|
|
96
|
-
it('should change back a field dependency', async () => {
|
|
97
|
-
await plugin.run(configSet);
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/picklists/index.e2e-spec.ts"],"names":[],"mappings":"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"}
|