sfdx-browserforce-plugin 4.8.2 → 5.0.1
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/README.md +69 -105
- package/lib/browserforce-command.js +8 -6
- package/lib/browserforce-command.js.map +1 -1
- package/lib/browserforce.js +15 -11
- package/lib/browserforce.js.map +1 -1
- package/lib/commands/browserforce/apply.js +6 -6
- package/lib/commands/browserforce/apply.js.map +1 -1
- package/lib/commands/browserforce/plan.js +7 -7
- package/lib/commands/browserforce/plan.js.map +1 -1
- package/lib/config-parser.js +1 -1
- package/lib/config-parser.js.map +1 -1
- package/lib/pages/login.js +4 -4
- package/lib/pages/login.js.map +1 -1
- package/lib/plugin.js +1 -1
- package/lib/plugins/activity-settings/index.e2e-spec.js +2 -2
- package/lib/plugins/activity-settings/index.js +13 -14
- package/lib/plugins/activity-settings/index.js.map +1 -1
- package/lib/plugins/company-information/index.e2e-spec.js +2 -2
- package/lib/plugins/company-information/index.js +18 -22
- package/lib/plugins/company-information/index.js.map +1 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.js +16 -12
- package/lib/plugins/customer-portal/available-custom-objects/index.js.map +1 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.test.js +8 -8
- package/lib/plugins/customer-portal/enabled/index.js +2 -2
- package/lib/plugins/customer-portal/enabled/index.js.map +1 -1
- package/lib/plugins/customer-portal/enabled/index.test.js +4 -4
- package/lib/plugins/customer-portal/index.e2e-spec.js +25 -19
- package/lib/plugins/customer-portal/index.e2e-spec.js.map +1 -1
- package/lib/plugins/customer-portal/index.js +10 -9
- package/lib/plugins/customer-portal/index.js.map +1 -1
- package/lib/plugins/customer-portal/index.test.js +22 -22
- package/lib/plugins/customer-portal/portals/index.js +54 -52
- package/lib/plugins/customer-portal/portals/index.js.map +1 -1
- package/lib/plugins/customer-portal/portals/index.test.js +37 -37
- package/lib/plugins/customer-portal/portals/index.test.js.map +1 -1
- package/lib/plugins/density-settings/index.e2e-spec.js +1 -1
- package/lib/plugins/density-settings/index.js +13 -16
- package/lib/plugins/density-settings/index.js.map +1 -1
- package/lib/plugins/deprecated.d.ts +4 -0
- package/lib/plugins/deprecated.js +28 -0
- package/lib/plugins/deprecated.js.map +1 -0
- package/lib/plugins/email-deliverability/index.e2e-spec.js +4 -4
- package/lib/plugins/email-deliverability/index.js +16 -17
- package/lib/plugins/email-deliverability/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js +2 -2
- package/lib/plugins/high-velocity-sales-settings/index.js +1 -1
- package/lib/plugins/high-velocity-sales-settings/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/page.js +1 -1
- package/lib/plugins/high-velocity-sales-settings/page.js.map +1 -1
- package/lib/plugins/history-tracking/index.e2e-spec.js +38 -38
- package/lib/plugins/history-tracking/index.e2e-spec.js.map +1 -1
- package/lib/plugins/history-tracking/index.js +20 -21
- package/lib/plugins/history-tracking/index.js.map +1 -1
- package/lib/plugins/home-page-layouts/index.e2e-spec.js +8 -8
- package/lib/plugins/home-page-layouts/index.js +13 -14
- package/lib/plugins/home-page-layouts/index.js.map +1 -1
- package/lib/plugins/home-page-layouts/index.test.js +29 -29
- package/lib/plugins/index.d.ts +1 -3
- package/lib/plugins/index.js +1 -3
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/lightning-experience-settings/index.js +16 -17
- package/lib/plugins/lightning-experience-settings/index.js.map +1 -1
- package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.js +2 -2
- package/lib/plugins/linkedin-sales-navigator-settings/index.js.map +1 -1
- package/lib/plugins/omni-channel-settings/index.e2e-spec.js +2 -2
- package/lib/plugins/omni-channel-settings/index.js +9 -13
- package/lib/plugins/omni-channel-settings/index.js.map +1 -1
- package/lib/plugins/opportunity-splits/index.e2e-spec.js +3 -3
- package/lib/plugins/opportunity-splits/index.e2e-spec.js.map +1 -1
- package/lib/plugins/permission-sets/index.e2e-spec.js +4 -4
- package/lib/plugins/permission-sets/index.e2e-spec.js.map +1 -1
- package/lib/plugins/permission-sets/index.js +1 -1
- package/lib/plugins/permission-sets/index.js.map +1 -1
- package/lib/plugins/permission-sets/service-presence-status/index.js +25 -21
- package/lib/plugins/permission-sets/service-presence-status/index.js.map +1 -1
- package/lib/plugins/picklists/field-dependencies/index.js +6 -4
- package/lib/plugins/picklists/field-dependencies/index.js.map +1 -1
- package/lib/plugins/picklists/field-dependencies/index.test.js +13 -13
- package/lib/plugins/picklists/index.e2e-spec.js +10 -6
- package/lib/plugins/picklists/index.e2e-spec.js.map +1 -1
- package/lib/plugins/picklists/index.js +15 -8
- package/lib/plugins/picklists/index.js.map +1 -1
- package/lib/plugins/picklists/standard-value-set.js +1 -1
- package/lib/plugins/picklists/standard-value-set.js.map +1 -1
- package/lib/plugins/record-types/index.e2e-spec.js +10 -10
- package/lib/plugins/record-types/index.e2e-spec.js.map +1 -1
- package/lib/plugins/record-types/index.js +3 -3
- package/lib/plugins/record-types/index.js.map +1 -1
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js +2 -2
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js +37 -32
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js.map +1 -1
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js +17 -18
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js.map +1 -1
- package/lib/plugins/reports-and-dashboards/index.js +1 -1
- package/lib/plugins/reports-and-dashboards/index.js.map +1 -1
- package/lib/plugins/salesforce-cpq-config/formConfig.js +638 -638
- package/lib/plugins/salesforce-cpq-config/formConfig.js.map +1 -1
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js +4 -4
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js.map +1 -1
- package/lib/plugins/salesforce-cpq-config/index.js +43 -31
- package/lib/plugins/salesforce-cpq-config/index.js.map +1 -1
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js +2 -2
- package/lib/plugins/salesforce-to-salesforce/index.js +16 -17
- package/lib/plugins/salesforce-to-salesforce/index.js.map +1 -1
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js +9 -15
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js.map +1 -1
- package/lib/plugins/security/authentication-configuration/index.js +22 -24
- package/lib/plugins/security/authentication-configuration/index.js.map +1 -1
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js +63 -0
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js.map +1 -0
- package/lib/plugins/security/certificate-and-key-management/index.js +48 -30
- package/lib/plugins/security/certificate-and-key-management/index.js.map +1 -1
- package/lib/plugins/security/certificate-and-key-management/index.test.js +18 -18
- package/lib/plugins/security/index.d.ts +1 -7
- package/lib/plugins/security/index.js +2 -44
- package/lib/plugins/security/index.js.map +1 -1
- package/lib/plugins/service-channels/capacity/index.js +48 -41
- package/lib/plugins/service-channels/capacity/index.js.map +1 -1
- package/lib/plugins/service-channels/index.e2e-spec.js +14 -14
- package/lib/plugins/service-channels/index.e2e-spec.js.map +1 -1
- package/lib/plugins/service-channels/index.js +4 -3
- package/lib/plugins/service-channels/index.js.map +1 -1
- package/lib/plugins/slack/index.e2e-spec.js +3 -3
- package/lib/plugins/slack/index.js +3 -5
- package/lib/plugins/slack/index.js.map +1 -1
- package/lib/plugins/utils.js +7 -2
- package/lib/plugins/utils.js.map +1 -1
- package/oclif.manifest.json +3 -3
- package/package.json +11 -7
- package/lib/plugins/communities/index.d.ts +0 -10
- package/lib/plugins/communities/index.e2e-spec.js +0 -34
- package/lib/plugins/communities/index.e2e-spec.js.map +0 -1
- package/lib/plugins/communities/index.js +0 -45
- package/lib/plugins/communities/index.js.map +0 -1
- package/lib/plugins/defer-sharing-calculation/index.d.ts +0 -9
- package/lib/plugins/defer-sharing-calculation/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/defer-sharing-calculation/index.e2e-spec.js +0 -70
- package/lib/plugins/defer-sharing-calculation/index.e2e-spec.js.map +0 -1
- package/lib/plugins/defer-sharing-calculation/index.js +0 -39
- package/lib/plugins/defer-sharing-calculation/index.js.map +0 -1
- package/lib/plugins/security/identity-provider/index.d.ts +0 -9
- package/lib/plugins/security/identity-provider/index.js +0 -81
- package/lib/plugins/security/identity-provider/index.js.map +0 -1
- package/lib/plugins/security/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/security/index.e2e-spec.js +0 -82
- package/lib/plugins/security/index.e2e-spec.js.map +0 -1
- package/lib/plugins/security/login-access-policies/index.d.ts +0 -8
- package/lib/plugins/security/login-access-policies/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/security/login-access-policies/index.e2e-spec.js +0 -27
- package/lib/plugins/security/login-access-policies/index.e2e-spec.js.map +0 -1
- package/lib/plugins/security/login-access-policies/index.js +0 -30
- package/lib/plugins/security/login-access-policies/index.js.map +0 -1
- package/lib/plugins/security/sharing/index.d.ts +0 -8
- package/lib/plugins/security/sharing/index.e2e-spec.d.ts +0 -1
- package/lib/plugins/security/sharing/index.e2e-spec.js +0 -29
- package/lib/plugins/security/sharing/index.e2e-spec.js.map +0 -1
- package/lib/plugins/security/sharing/index.js +0 -36
- package/lib/plugins/security/sharing/index.js.map +0 -1
- /package/lib/plugins/{communities → security/certificate-and-key-management}/index.e2e-spec.d.ts +0 -0
|
@@ -1,40 +1,36 @@
|
|
|
1
1
|
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
const
|
|
3
|
-
BASE: 'lightning/setup/ThemingAndBranding/home'
|
|
4
|
-
};
|
|
2
|
+
const BASE_PATH = 'lightning/setup/ThemingAndBranding/home';
|
|
5
3
|
// Spring 25 changed "lightning-datatable" to "one-theme-datatable"
|
|
6
4
|
const THEME_ROW_SELECTOR = '#setupComponent table > tbody > tr';
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
STATES: `${THEME_ROW_SELECTOR} > td:nth-child(6) > lightning-primitive-cell-factory`
|
|
10
|
-
};
|
|
5
|
+
const DEVELOPER_NAMES_SELECTOR = `${THEME_ROW_SELECTOR} > td:nth-child(2) > lightning-primitive-cell-factory lightning-base-formatted-text`;
|
|
6
|
+
const STATES_SELECTOR = `${THEME_ROW_SELECTOR} > td:nth-child(6) > lightning-primitive-cell-factory`;
|
|
11
7
|
export class LightningExperienceSettings extends BrowserforcePlugin {
|
|
12
8
|
async retrieve() {
|
|
13
|
-
const page = await this.browserforce.openPage(
|
|
9
|
+
const page = await this.browserforce.openPage(BASE_PATH);
|
|
14
10
|
const themes = await this.getThemeData(page);
|
|
15
11
|
const activeTheme = themes.find((theme) => theme.isActive);
|
|
16
12
|
const response = {
|
|
17
|
-
activeThemeName: activeTheme.developerName
|
|
13
|
+
activeThemeName: activeTheme.developerName,
|
|
18
14
|
};
|
|
19
15
|
await page.close();
|
|
20
16
|
return response;
|
|
21
17
|
}
|
|
22
18
|
async apply(config) {
|
|
23
|
-
const page = await this.browserforce.openPage(
|
|
19
|
+
const page = await this.browserforce.openPage(BASE_PATH);
|
|
24
20
|
await this.setActiveTheme(page, config.activeThemeName);
|
|
25
21
|
await page.close();
|
|
26
22
|
}
|
|
27
23
|
async getThemeData(page) {
|
|
28
24
|
await page.waitForSelector(THEME_ROW_SELECTOR);
|
|
29
25
|
const rowElementHandles = await page.$$(THEME_ROW_SELECTOR);
|
|
30
|
-
await page.waitForSelector(
|
|
31
|
-
const developerNames = await page.$$eval(
|
|
32
|
-
const states = await page.$$eval(
|
|
26
|
+
await page.waitForSelector(DEVELOPER_NAMES_SELECTOR);
|
|
27
|
+
const developerNames = await page.$$eval(DEVELOPER_NAMES_SELECTOR, (cells) => cells.map((cell) => cell.innerText));
|
|
28
|
+
const states = await page.$$eval(STATES_SELECTOR, (cells) => cells.map((cell) => cell.shadowRoot?.querySelector('lightning-primitive-icon') !== null));
|
|
33
29
|
return developerNames.map((developerName, i) => {
|
|
34
30
|
return {
|
|
35
31
|
developerName,
|
|
36
32
|
isActive: states[i],
|
|
37
|
-
rowElementHandle: rowElementHandles[i]
|
|
33
|
+
rowElementHandle: rowElementHandles[i],
|
|
38
34
|
};
|
|
39
35
|
});
|
|
40
36
|
}
|
|
@@ -46,17 +42,20 @@ export class LightningExperienceSettings extends BrowserforcePlugin {
|
|
|
46
42
|
}
|
|
47
43
|
const newActiveThemeRowElementHandle = theme.rowElementHandle;
|
|
48
44
|
await page.waitForSelector(`${THEME_ROW_SELECTOR} lightning-button-menu`, {
|
|
49
|
-
visible: true
|
|
45
|
+
visible: true,
|
|
50
46
|
});
|
|
51
47
|
const menuButton = await newActiveThemeRowElementHandle.$('td lightning-primitive-cell-factory lightning-primitive-cell-actions lightning-button-menu');
|
|
52
48
|
await page.evaluate((e) => e.click(), menuButton);
|
|
53
49
|
await page.waitForSelector(`${THEME_ROW_SELECTOR} lightning-button-menu slot lightning-menu-item`, {
|
|
54
|
-
visible: true
|
|
50
|
+
visible: true,
|
|
55
51
|
});
|
|
56
52
|
const menuItems = await menuButton.$$('slot lightning-menu-item');
|
|
57
53
|
// second last item: [show, activate, preview]
|
|
58
54
|
const activateMenuItem = menuItems[menuItems.length - 2];
|
|
59
|
-
await Promise.all([
|
|
55
|
+
await Promise.all([
|
|
56
|
+
page.waitForNavigation(),
|
|
57
|
+
page.evaluate((e) => e.click(), activateMenuItem),
|
|
58
|
+
]);
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/lightning-experience-settings/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/lightning-experience-settings/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,10 @@ describe(LinkedInSalesNavigatorSettings.name, function () {
|
|
|
6
6
|
plugin = new LinkedInSalesNavigatorSettings(global.bf);
|
|
7
7
|
});
|
|
8
8
|
const configEnabled = {
|
|
9
|
-
enabled: true
|
|
9
|
+
enabled: true,
|
|
10
10
|
};
|
|
11
11
|
const configDisabled = {
|
|
12
|
-
enabled: false
|
|
12
|
+
enabled: false,
|
|
13
13
|
};
|
|
14
14
|
it('should enable', async () => {
|
|
15
15
|
await plugin.run(configEnabled);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAMvD,MAAM,OAAO,8BAA+B,SAAQ,kBAAkB;IAC7D,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAMvD,MAAM,OAAO,8BAA+B,SAAQ,kBAAkB;IAC7D,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,0BAA0B,CACzC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CACtE,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,IAAI,0BAA0B,CACzC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CACtE,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -7,10 +7,10 @@ describe(OmniChannelSettings.name, function () {
|
|
|
7
7
|
plugin = new OmniChannelSettings(global.bf);
|
|
8
8
|
});
|
|
9
9
|
const configEnableStatusBasedCapacityModel = {
|
|
10
|
-
enableStatusBasedCapacityModel: true
|
|
10
|
+
enableStatusBasedCapacityModel: true,
|
|
11
11
|
};
|
|
12
12
|
const configDisableStatusBasedCapacityModel = {
|
|
13
|
-
enableStatusBasedCapacityModel: false
|
|
13
|
+
enableStatusBasedCapacityModel: false,
|
|
14
14
|
};
|
|
15
15
|
it('should enable status based capacity model', async () => {
|
|
16
16
|
await plugin.run(configEnableStatusBasedCapacityModel);
|
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const SELECTORS = {
|
|
6
|
-
SAVE_BUTTON: 'input[id$=":save"]',
|
|
7
|
-
STATUS_CAPACITY_TOGGLE: 'input[id$=":toggleOmniStatusCapModelPref"]'
|
|
8
|
-
};
|
|
2
|
+
const BASE_PATH = 'omnichannel/settings.apexp';
|
|
3
|
+
const SAVE_BUTTON_SELECTOR = 'input[id$=":save"]';
|
|
4
|
+
const STATUS_CAPACITY_TOGGLE_SELECTOR = 'input[id$=":toggleOmniStatusCapModelPref"]';
|
|
9
5
|
export class OmniChannelSettings extends BrowserforcePlugin {
|
|
10
6
|
async retrieve(definition) {
|
|
11
7
|
// Open the omni-channel setup page
|
|
12
|
-
const page = await this.browserforce.openPage(
|
|
8
|
+
const page = await this.browserforce.openPage(BASE_PATH);
|
|
13
9
|
// Retrieve the service channel config
|
|
14
|
-
await page.waitForSelector(
|
|
15
|
-
const enableStatusBasedCapacityModel = await page.$eval(
|
|
10
|
+
await page.waitForSelector(STATUS_CAPACITY_TOGGLE_SELECTOR);
|
|
11
|
+
const enableStatusBasedCapacityModel = await page.$eval(STATUS_CAPACITY_TOGGLE_SELECTOR, (el) => (el.getAttribute('checked') === 'checked' ? true : false));
|
|
16
12
|
return { enableStatusBasedCapacityModel };
|
|
17
13
|
}
|
|
18
14
|
async apply(config) {
|
|
19
15
|
// Open the omni-channel setup page
|
|
20
|
-
const page = await this.browserforce.openPage(
|
|
16
|
+
const page = await this.browserforce.openPage(BASE_PATH);
|
|
21
17
|
// Click the checkbox
|
|
22
|
-
const capacityModel = await page.waitForSelector(
|
|
18
|
+
const capacityModel = await page.waitForSelector(STATUS_CAPACITY_TOGGLE_SELECTOR);
|
|
23
19
|
await capacityModel.click();
|
|
24
20
|
// Save the settings
|
|
25
|
-
const saveButton = await page.waitForSelector(
|
|
21
|
+
const saveButton = await page.waitForSelector(SAVE_BUTTON_SELECTOR);
|
|
26
22
|
await saveButton.click();
|
|
27
23
|
// Wait for the page to refresh
|
|
28
24
|
await page.waitForNavigation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/omni-channel-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/omni-channel-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAE/C,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAClD,MAAM,+BAA+B,GACnC,4CAA4C,CAAC;AAM/C,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAClD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzD,sCAAsC;QACtC,MAAM,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,CAAC;QAC5D,MAAM,8BAA8B,GAAG,MAAM,IAAI,CAAC,KAAK,CACrD,+BAA+B,EAC/B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAClE,CAAC;QAEF,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzD,qBAAqB;QACrB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAC9C,+BAA+B,CAChC,CAAC;QACF,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAE5B,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QACpE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAEzB,+BAA+B;QAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,iBAAiB;QACjB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -12,10 +12,10 @@ describe(OpportunitySplits.name, function () {
|
|
|
12
12
|
plugin = new OpportunitySplits(global.bf);
|
|
13
13
|
});
|
|
14
14
|
const configEnabled = {
|
|
15
|
-
enabled: true
|
|
15
|
+
enabled: true,
|
|
16
16
|
};
|
|
17
17
|
const configDisabled = {
|
|
18
|
-
enabled: false
|
|
18
|
+
enabled: false,
|
|
19
19
|
};
|
|
20
20
|
it('should enable Opportunity Teams as prerequisite', () => {
|
|
21
21
|
const sourceDeployCmd = child.spawnSync('sf', [
|
|
@@ -24,7 +24,7 @@ describe(OpportunitySplits.name, function () {
|
|
|
24
24
|
'start',
|
|
25
25
|
'-d',
|
|
26
26
|
path.join(__dirname, 'sfdx-source'),
|
|
27
|
-
'--json'
|
|
27
|
+
'--json',
|
|
28
28
|
]);
|
|
29
29
|
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
30
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/opportunity-splits/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,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,IAAI,MAAyB,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,OAAO,EAAE,KAAK;KACf,CAAC;IACF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,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,
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/opportunity-splits/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,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,IAAI,MAAyB,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,OAAO,EAAE,KAAK;KACf,CAAC;IACF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,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;IACH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -12,9 +12,9 @@ describe(PermissionSets.name, function () {
|
|
|
12
12
|
});
|
|
13
13
|
const configurePermissionSet = [
|
|
14
14
|
{
|
|
15
|
-
permissionSetName:
|
|
16
|
-
servicePresenceStatuses: [
|
|
17
|
-
}
|
|
15
|
+
permissionSetName: 'ServicePresenceTest',
|
|
16
|
+
servicePresenceStatuses: ['TestStatus', 'TestStatus3'],
|
|
17
|
+
},
|
|
18
18
|
];
|
|
19
19
|
it('should create permission set and service presence status as a prerequisite', () => {
|
|
20
20
|
const sourceDeployCmd = child.spawnSync('sf', [
|
|
@@ -23,7 +23,7 @@ describe(PermissionSets.name, function () {
|
|
|
23
23
|
'start',
|
|
24
24
|
'-d',
|
|
25
25
|
path.join(__dirname, 'sfdx-source'),
|
|
26
|
-
'--json'
|
|
26
|
+
'--json',
|
|
27
27
|
]);
|
|
28
28
|
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
29
29
|
});
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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"}
|
|
@@ -7,7 +7,7 @@ export class PermissionSets extends BrowserforcePlugin {
|
|
|
7
7
|
for await (const permissionSet of definition) {
|
|
8
8
|
permissionSets.push({
|
|
9
9
|
permissionSetName: permissionSet.permissionSetName,
|
|
10
|
-
servicePresenceStatuses: await pluginServicePresenceStatus.retrieve(permissionSet)
|
|
10
|
+
servicePresenceStatuses: await pluginServicePresenceStatus.retrieve(permissionSet),
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
return permissionSets;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,19 +1,19 @@
|
|
|
1
1
|
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
VALUES_ENABLED: 'select[id$=":duelingListBox:backingList_s"]:not([disabled="disabled"])'
|
|
8
|
-
};
|
|
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"])';
|
|
9
7
|
export class ServicePresenceStatus extends BrowserforcePlugin {
|
|
10
8
|
async retrieve(definition) {
|
|
11
9
|
// Query for the permission set
|
|
12
10
|
const permissionSetName = definition.permissionSetName;
|
|
13
|
-
const permissionSet = await this.org
|
|
11
|
+
const permissionSet = await this.org
|
|
12
|
+
.getConnection()
|
|
13
|
+
.singleRecordQuery(`SELECT Id FROM PermissionSet WHERE Name='${permissionSetName}'`);
|
|
14
14
|
// Open the permission set setup page
|
|
15
15
|
const page = await this.browserforce.openPage(`${permissionSet.Id}/e?s=ServicePresenceStatusAccess`);
|
|
16
|
-
const enabledServicePresenceStatuses = await page.$$eval(`${
|
|
16
|
+
const enabledServicePresenceStatuses = await page.$$eval(`${VALUES_ENABLED_SELECTOR} > option`, (options) => {
|
|
17
17
|
return options.map((option) => option.title ?? '');
|
|
18
18
|
});
|
|
19
19
|
return enabledServicePresenceStatuses;
|
|
@@ -21,33 +21,37 @@ export class ServicePresenceStatus extends BrowserforcePlugin {
|
|
|
21
21
|
async apply(config) {
|
|
22
22
|
// Query for the permission set
|
|
23
23
|
const permissionSetName = config.permissionSetName;
|
|
24
|
-
const permissionSet = await this.org
|
|
24
|
+
const permissionSet = await this.org
|
|
25
|
+
.getConnection()
|
|
26
|
+
.singleRecordQuery(`SELECT Id FROM PermissionSet WHERE Name='${permissionSetName}'`);
|
|
25
27
|
// Open the permission set setup page
|
|
26
28
|
const page = await this.browserforce.openPage(`${permissionSet.Id}/e?s=ServicePresenceStatusAccess`);
|
|
27
29
|
if (config?.servicePresenceStatuses) {
|
|
28
|
-
await page.waitForSelector(`${
|
|
29
|
-
const availableElements = await page.$$(`${
|
|
30
|
+
await page.waitForSelector(`${VALUES_AVAILABLE_SELECTOR} > option`);
|
|
31
|
+
const availableElements = await page.$$(`${VALUES_AVAILABLE_SELECTOR} > option`);
|
|
30
32
|
for (const availableElement of availableElements) {
|
|
31
|
-
const optionTitle = (await availableElement.evaluate(node => node.getAttribute('title')))?.toString();
|
|
32
|
-
if (optionTitle &&
|
|
33
|
+
const optionTitle = (await availableElement.evaluate((node) => node.getAttribute('title')))?.toString();
|
|
34
|
+
if (optionTitle &&
|
|
35
|
+
config.servicePresenceStatuses.includes(optionTitle)) {
|
|
33
36
|
await availableElement.click();
|
|
34
|
-
await page.click(
|
|
37
|
+
await page.click(ADD_BUTTON_SELECTOR);
|
|
35
38
|
}
|
|
36
39
|
}
|
|
37
|
-
await page.waitForSelector(`${
|
|
38
|
-
const enabledElements = await page.$$(`${
|
|
40
|
+
await page.waitForSelector(`${VALUES_ENABLED_SELECTOR} > option`);
|
|
41
|
+
const enabledElements = await page.$$(`${VALUES_ENABLED_SELECTOR} > option`);
|
|
39
42
|
for (const enabledElement of enabledElements) {
|
|
40
|
-
const optionTitle = (await enabledElement.evaluate(node => node.getAttribute('title')))?.toString();
|
|
41
|
-
if (optionTitle &&
|
|
43
|
+
const optionTitle = (await enabledElement.evaluate((node) => node.getAttribute('title')))?.toString();
|
|
44
|
+
if (optionTitle &&
|
|
45
|
+
!config.servicePresenceStatuses.includes(optionTitle)) {
|
|
42
46
|
await enabledElement.click();
|
|
43
|
-
await page.click(
|
|
47
|
+
await page.click(REMOVE_BUTTON_SELECTOR);
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
// Save the settings and wait for page refresh
|
|
48
52
|
await Promise.all([
|
|
49
53
|
page.waitForNavigation(),
|
|
50
|
-
page.click(
|
|
54
|
+
page.click(SAVE_BUTTON_SELECTOR),
|
|
51
55
|
]);
|
|
52
56
|
// Close the page
|
|
53
57
|
await page.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/permission-sets/service-presence-status/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/permission-sets/service-presence-status/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,9 +21,9 @@ export class FieldDependencies extends BrowserforcePlugin {
|
|
|
21
21
|
const conn = this.org.getConnection();
|
|
22
22
|
const listMetadataResult = await conn.metadata.list([
|
|
23
23
|
{
|
|
24
|
-
type: 'CustomObject'
|
|
24
|
+
type: 'CustomObject',
|
|
25
25
|
},
|
|
26
|
-
{ type: 'CustomField' }
|
|
26
|
+
{ type: 'CustomField' },
|
|
27
27
|
]);
|
|
28
28
|
const fileProperties = ensureArray(listMetadataResult);
|
|
29
29
|
for (const dep of plan) {
|
|
@@ -32,7 +32,8 @@ export class FieldDependencies extends BrowserforcePlugin {
|
|
|
32
32
|
if (!customObject) {
|
|
33
33
|
throw new Error(`Could not find CustomObject "${dep.object}"`);
|
|
34
34
|
}
|
|
35
|
-
const dependentField = fileProperties.find((x) => x.type === 'CustomField' &&
|
|
35
|
+
const dependentField = fileProperties.find((x) => x.type === 'CustomField' &&
|
|
36
|
+
x.fullName === `${dep.object}.${dep.dependentField}`);
|
|
36
37
|
if (!dependentField) {
|
|
37
38
|
throw new Error(`Could not find dependent field "${dep.object}.${dep.dependentField}"`);
|
|
38
39
|
}
|
|
@@ -40,7 +41,8 @@ export class FieldDependencies extends BrowserforcePlugin {
|
|
|
40
41
|
const fieldDependenciesPage = new FieldDependencyPage(await this.browserforce.openPage(FieldDependencyPage.getUrl(customObject.id)));
|
|
41
42
|
await fieldDependenciesPage.clickDeleteDependencyActionForField(dependentField.id);
|
|
42
43
|
if (dep.controllingField) {
|
|
43
|
-
const controllingField = fileProperties.find((x) => x.type === 'CustomField' &&
|
|
44
|
+
const controllingField = fileProperties.find((x) => x.type === 'CustomField' &&
|
|
45
|
+
x.fullName === `${dep.object}.${dep.controllingField}`);
|
|
44
46
|
if (!controllingField) {
|
|
45
47
|
throw new Error(`Could not find controlling field "${dep.object}.${dep.controllingField}"`);
|
|
46
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/picklists/field-dependencies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAUzE,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IAChD,KAAK,CAAC,QAAQ,CAAC,UAAkB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/picklists/field-dependencies/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,17 +7,17 @@ const tests = [
|
|
|
7
7
|
{
|
|
8
8
|
object: 'Vehicle__c',
|
|
9
9
|
dependentField: 'Gears__c',
|
|
10
|
-
controllingField: null
|
|
11
|
-
}
|
|
10
|
+
controllingField: null,
|
|
11
|
+
},
|
|
12
12
|
],
|
|
13
13
|
target: [
|
|
14
14
|
{
|
|
15
15
|
object: 'Vehicle__c',
|
|
16
16
|
dependentField: 'Gears__c',
|
|
17
|
-
controllingField: null
|
|
18
|
-
}
|
|
17
|
+
controllingField: null,
|
|
18
|
+
},
|
|
19
19
|
],
|
|
20
|
-
expected: undefined
|
|
20
|
+
expected: undefined,
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
description: 'should unset controlling field',
|
|
@@ -25,24 +25,24 @@ const tests = [
|
|
|
25
25
|
{
|
|
26
26
|
object: 'Vehicle__c',
|
|
27
27
|
dependentField: 'Gears__c',
|
|
28
|
-
controllingField: 'Foo__c'
|
|
29
|
-
}
|
|
28
|
+
controllingField: 'Foo__c',
|
|
29
|
+
},
|
|
30
30
|
],
|
|
31
31
|
target: [
|
|
32
32
|
{
|
|
33
33
|
object: 'Vehicle__c',
|
|
34
34
|
dependentField: 'Gears__c',
|
|
35
|
-
controllingField: null
|
|
36
|
-
}
|
|
35
|
+
controllingField: null,
|
|
36
|
+
},
|
|
37
37
|
],
|
|
38
38
|
expected: [
|
|
39
39
|
{
|
|
40
40
|
object: 'Vehicle__c',
|
|
41
41
|
dependentField: 'Gears__c',
|
|
42
|
-
controllingField: null
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
}
|
|
42
|
+
controllingField: null,
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
46
|
];
|
|
47
47
|
describe('FieldDependencies', () => {
|
|
48
48
|
describe('diff()', () => {
|
|
@@ -7,7 +7,7 @@ import { Picklists } from './index.js';
|
|
|
7
7
|
import { FieldDependencies } from './field-dependencies/index.js';
|
|
8
8
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
9
9
|
const readJsonFile = function (u) {
|
|
10
|
-
return JSON.parse(readFileSync(new URL(u, import.meta.url),
|
|
10
|
+
return JSON.parse(readFileSync(new URL(u, import.meta.url), 'utf8'));
|
|
11
11
|
};
|
|
12
12
|
describe(Picklists.name, function () {
|
|
13
13
|
this.timeout('10m');
|
|
@@ -17,7 +17,8 @@ describe(Picklists.name, function () {
|
|
|
17
17
|
});
|
|
18
18
|
const configNew = readJsonFile('./new.json').settings.picklists;
|
|
19
19
|
const configReplace = readJsonFile('./replace.json').settings.picklists;
|
|
20
|
-
const configReplaceAndDelete = readJsonFile('./replace-and-delete.json')
|
|
20
|
+
const configReplaceAndDelete = readJsonFile('./replace-and-delete.json')
|
|
21
|
+
.settings.picklists;
|
|
21
22
|
const configDeactivate = readJsonFile('./deactivate.json').settings.picklists;
|
|
22
23
|
const configActivate = readJsonFile('./activate.json').settings.picklists;
|
|
23
24
|
const configReplaceAndDeactivate = readJsonFile('./replace-and-deactivate.json').settings.picklists;
|
|
@@ -28,7 +29,7 @@ describe(Picklists.name, function () {
|
|
|
28
29
|
'start',
|
|
29
30
|
'-d',
|
|
30
31
|
path.join(__dirname, 'sfdx-source'),
|
|
31
|
-
'--json'
|
|
32
|
+
'--json',
|
|
32
33
|
]);
|
|
33
34
|
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
34
35
|
});
|
|
@@ -69,9 +70,12 @@ describe(FieldDependencies.name, function () {
|
|
|
69
70
|
before(() => {
|
|
70
71
|
plugin = new FieldDependencies(global.bf);
|
|
71
72
|
});
|
|
72
|
-
const configSet = readJsonFile('./field-dependencies/set.json').settings
|
|
73
|
-
|
|
74
|
-
const
|
|
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;
|
|
75
79
|
it('should not do anything when the dependency is already set', async () => {
|
|
76
80
|
const res = await plugin.run(configSet);
|
|
77
81
|
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/picklists/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/picklists/index.e2e-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { retry } from '../../browserforce.js';
|
|
2
2
|
import { ensureArray } from '../../jsforce-utils.js';
|
|
3
3
|
import { BrowserforcePlugin } from '../../plugin.js';
|
|
4
|
-
import { FieldDependencies } from './field-dependencies/index.js';
|
|
5
|
-
import { DefaultPicklistAddPage, PicklistPage, StatusPicklistAddPage } from './pages.js';
|
|
4
|
+
import { FieldDependencies, } from './field-dependencies/index.js';
|
|
5
|
+
import { DefaultPicklistAddPage, PicklistPage, StatusPicklistAddPage, } from './pages.js';
|
|
6
6
|
import { determineStandardValueSetEditUrl } from './standard-value-set.js';
|
|
7
7
|
export class Picklists extends BrowserforcePlugin {
|
|
8
8
|
async retrieve(definition) {
|
|
@@ -17,11 +17,16 @@ export class Picklists extends BrowserforcePlugin {
|
|
|
17
17
|
const picklistPage = new PicklistPage(page);
|
|
18
18
|
const values = await picklistPage.getPicklistValues();
|
|
19
19
|
const state = { ...action };
|
|
20
|
-
const valueMatch = action.value !== undefined
|
|
21
|
-
|
|
20
|
+
const valueMatch = action.value !== undefined
|
|
21
|
+
? values.find((x) => x.value === action.value)
|
|
22
|
+
: undefined;
|
|
23
|
+
const newValueMatch = action.newValue !== undefined
|
|
24
|
+
? values.find((x) => x.value === action.newValue)
|
|
25
|
+
: undefined;
|
|
22
26
|
state.absent = !valueMatch;
|
|
23
27
|
state.active = valueMatch?.active;
|
|
24
|
-
state._newValueExists =
|
|
28
|
+
state._newValueExists =
|
|
29
|
+
Boolean(newValueMatch) || action.newValue === null;
|
|
25
30
|
result.picklistValues.push(state);
|
|
26
31
|
await page.close();
|
|
27
32
|
}
|
|
@@ -44,7 +49,8 @@ export class Picklists extends BrowserforcePlugin {
|
|
|
44
49
|
return target.active !== source?.active;
|
|
45
50
|
}
|
|
46
51
|
// replacing a picklist value is not idempotent
|
|
47
|
-
if (source?._newValueExists &&
|
|
52
|
+
if (source?._newValueExists &&
|
|
53
|
+
(target.value !== undefined || target.replaceAllBlankValues)) {
|
|
48
54
|
return true;
|
|
49
55
|
}
|
|
50
56
|
if (target.newValue && !source?._newValueExists) {
|
|
@@ -96,7 +102,8 @@ export class Picklists extends BrowserforcePlugin {
|
|
|
96
102
|
await new DefaultPicklistAddPage(page).add(action.newValue);
|
|
97
103
|
}
|
|
98
104
|
}
|
|
99
|
-
else if (action.value !== undefined &&
|
|
105
|
+
else if (action.value !== undefined &&
|
|
106
|
+
action.newValue !== undefined) {
|
|
100
107
|
// replace
|
|
101
108
|
const replacePage = await picklistPage.clickReplaceActionButton();
|
|
102
109
|
await replacePage.replace(action.value, action.newValue, action.replaceAllBlankValues);
|
|
@@ -132,7 +139,7 @@ async function listMetadata(conn, sobjectTypes) {
|
|
|
132
139
|
uniqueSobjectTypes = uniqueSobjectTypes.filter((x) => x !== 'StandardValueSet');
|
|
133
140
|
const queries = uniqueSobjectTypes.map((type) => {
|
|
134
141
|
return {
|
|
135
|
-
type
|
|
142
|
+
type,
|
|
136
143
|
};
|
|
137
144
|
});
|
|
138
145
|
if (queries.length) {
|