@controleonline/ui-common 1.2.89 → 1.2.91
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/docs/compact-order-history-1047.md +25 -0
- package/package.json +1 -1
- package/src/react/components/CopyDeviceConfigModal.js +7 -4
- package/src/react/components/DefaultProvider.native.configuration.js +275 -0
- package/src/react/components/DefaultProvider.native.js +24 -534
- package/src/react/components/DefaultProvider.native.lifecycle.js +323 -0
- package/src/react/components/DefaultProvider.web.configuration.js +327 -0
- package/src/react/components/DefaultProvider.web.js +23 -603
- package/src/react/components/DefaultProvider.web.lifecycle.js +336 -0
- package/src/react/components/resolveDomainThemeColors.js +5 -0
- package/src/react/pages/Connections.js +5 -7
- package/src/react/pages/MercadoLivreIntegrationPage.js +5 -75
- package/src/react/pages/mercadoLivreIntegrationHelpers.js +79 -0
- package/src/tests/browser/manager/bottom-navigation-role-toolbar.spec.js +14 -0
- package/src/tests/browser/manager/connections.spec.js +18 -0
- package/src/tests/browser/manager/device-detail-alias-save.spec.js +3 -1
- package/src/tests/browser/manager/device-detail-copy-config.spec.js +6 -0
- package/src/tests/browser/manager/device-detail-pdv-current-company.spec.js +3 -1
- package/src/tests/browser/manager/devices-current.spec.js +345 -343
- package/src/tests/browser/manager/devices-type-filters.spec.js +2 -0
- package/src/tests/browser/manager/managerSession.fixture.js +28 -0
- package/src/tests/react/components/DefaultProviderAuthority.test.js +4 -1
- package/src/tests/react/components/providerEffects.fingerprint.json +47 -0
- package/src/tests/react/components/providerEffects.test.js +24 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const {installManagerSession} = require('./managerSession.fixture');
|
|
1
2
|
const {expect, test} = require('playwright/test');
|
|
2
3
|
const packageJson = require('../../../../../../../package.json');
|
|
3
4
|
const {API_ORIGIN} = require('../../../../../../../src/tests/browser/apiOrigin');
|
|
@@ -76,6 +77,7 @@ const createDeviceConfig = ({id, type, device = currentDevice, alias}) => ({
|
|
|
76
77
|
* (or omit type for All). Multi-type filters expand to sequential single-type GETs.
|
|
77
78
|
*/
|
|
78
79
|
const mockDevicesTypeFilterApi = async page => {
|
|
80
|
+
await installManagerSession(page);
|
|
79
81
|
const company = {
|
|
80
82
|
id: 3,
|
|
81
83
|
name: 'Teste',
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Match the authenticated session contract used by the application shell.
|
|
2
|
+
const installManagerSession = async page => {
|
|
3
|
+
await page.addInitScript(() => {
|
|
4
|
+
localStorage.setItem('session', JSON.stringify({
|
|
5
|
+
id: 7,
|
|
6
|
+
people: '/people/7',
|
|
7
|
+
api_key: 'test-api-key',
|
|
8
|
+
active: 1,
|
|
9
|
+
mycompany: 3,
|
|
10
|
+
roles: ['ROLE_SUPER'],
|
|
11
|
+
name: 'Test User',
|
|
12
|
+
realname: 'Test User',
|
|
13
|
+
username: 'tester',
|
|
14
|
+
}));
|
|
15
|
+
localStorage.setItem('app-type', 'MANAGER');
|
|
16
|
+
localStorage.setItem('translates', JSON.stringify({
|
|
17
|
+
'pt-br': {companies: {3: {configs: {
|
|
18
|
+
device_label: {currentDevice: 'Este dispositivo'},
|
|
19
|
+
device_action: {
|
|
20
|
+
copyConfigHint: 'Escolha o device origem. As configurações serão aplicadas em',
|
|
21
|
+
copyConfigIdentityHint: 'identidade do destino não muda',
|
|
22
|
+
},
|
|
23
|
+
}}}},
|
|
24
|
+
}));
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
module.exports = {installManagerSession};
|
|
@@ -11,11 +11,14 @@ describe('DefaultProvider company authority guard', () => {
|
|
|
11
11
|
it.each(providerFiles)(
|
|
12
12
|
'uses the shared authority helper in %s',
|
|
13
13
|
providerFile => {
|
|
14
|
-
const
|
|
14
|
+
const providerSource = fs.readFileSync(
|
|
15
15
|
path.resolve(__dirname, '../../../react/components', providerFile),
|
|
16
16
|
'utf8',
|
|
17
17
|
);
|
|
18
18
|
|
|
19
|
+
const root = path.resolve(__dirname, '../../../react/components');
|
|
20
|
+
const platform = providerFile.includes('.web.') ? 'web' : 'native';
|
|
21
|
+
const source = providerSource + ['lifecycle', 'configuration'].map(group => fs.readFileSync(path.join(root, `DefaultProvider.${platform}.${group}.js`), 'utf8')).join('\n');
|
|
19
22
|
expect(source).not.toContain('isTenantAdministrativeAuthority');
|
|
20
23
|
expect(source).toMatch(
|
|
21
24
|
/import\s*\{\s*canAdministerCompany\s*\}\s*from\s*['"]@controleonline\/ui-common\/src\/react\/utils\/companyAuthority['"]/,
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"web": [
|
|
3
|
+
"ea75d6ac3ae9c95e52c766bdb34d53bc105f14c39d99296870fe5ffc22871c9d",
|
|
4
|
+
"91eb2c6aa1cf5924d8741f6baffc1a1a55ee3a4724ccefa8bde421f9c64150bc",
|
|
5
|
+
"d9e3b6b0bda60f7ee7c20f3b764ef1cf6b3c4505b2dd0c14149d738afc4b7250",
|
|
6
|
+
"dc4de55291686857d4e1e9f450bf94dd7711e6d553b7f7c25f12cdcc15699e8d",
|
|
7
|
+
"3aac47f15f506f8a4f4c6c43025ac01df0d0686f53aeb2693cf995481f542300",
|
|
8
|
+
"401f05b86cbf58f51cf0f8daa9daedd9a11405bd88fd92c0c50f4425cb7426c8",
|
|
9
|
+
"6096f06d9b6dffc3402b2b23bdf1a49acb9d8b07c32a406cda0576d23835123d",
|
|
10
|
+
"08c333c63aab840cc566dfd7e1859624001c1e0cf41385b4fbd320a0772f8683",
|
|
11
|
+
"66e252433a95f6c234521d17405723faa27ff255950355d148c8915a6a121e50",
|
|
12
|
+
"9defefb6dd3fe794f7f5165415ad66bbf9364feabe2950f9101ee75b4e920bbd",
|
|
13
|
+
"e7e947e510177219121d1983055a9d3c1bbff5e2be0e1ed88f0ef33b8b04550d",
|
|
14
|
+
"6a48d5207d4e6ab178c856cba730992f4b7033e72328407bbf9687ab43fea31a",
|
|
15
|
+
"b855618a73da5452161007146c7e6dbc7a455377088e5f3b39740a50785717ea",
|
|
16
|
+
"4e436b845f79c9abb9b02ce885712f3d86cbfc58e7ac013bbf12aa4cadf8766b",
|
|
17
|
+
"b4a82937d543b1ec702eb39a4f59c50fb405591a5cf47d57f26ddf3204c00c79",
|
|
18
|
+
"52f1d9c7c0e526b45a517d5ca6d0bad10f6f13f9e28710d07fbe2c6390fd4663",
|
|
19
|
+
"7fd064dfd9939c27fd50ef7e98870027d6a243818b01a7961250c3541c489b37",
|
|
20
|
+
"5d82d7da62a6a2a1ea620b2e20aed981e54a57f7481d0d7b80274836d18c67b1",
|
|
21
|
+
"06a38bfbc8bea082ea8aed3d115eb0be46a66cf4067e15002a93332edcfe3e18",
|
|
22
|
+
"45f67afbb83db2fc03d4db5eb1cb97d0aef89960f7fed857a13104dc0d577996"
|
|
23
|
+
],
|
|
24
|
+
"native": [
|
|
25
|
+
"ea75d6ac3ae9c95e52c766bdb34d53bc105f14c39d99296870fe5ffc22871c9d",
|
|
26
|
+
"91eb2c6aa1cf5924d8741f6baffc1a1a55ee3a4724ccefa8bde421f9c64150bc",
|
|
27
|
+
"ca6d2dbaff4a3ceaf72de6a7309dd1fff040b8c0c8becd7e9ad9c5e951747e33",
|
|
28
|
+
"3568e8c2ad8a62ef8ecd3381ca564567348ac30775f77a8e162d0627e65c3149",
|
|
29
|
+
"251907db50e73d845caad88cebde534715c714c5656c71ba101840d1aa387995",
|
|
30
|
+
"69a271277a710e366340f53a73a0ad69c349c0d57903604895a577502982f968",
|
|
31
|
+
"d9e3b6b0bda60f7ee7c20f3b764ef1cf6b3c4505b2dd0c14149d738afc4b7250",
|
|
32
|
+
"ca2d71f74eee04d29f12f99eb6ad2a027d997e059ca624b050b626c33af048da",
|
|
33
|
+
"00aec313bce033cee0f7ec578b884c057d99082fc5d70bd4c427b71f443ac3be",
|
|
34
|
+
"89b61590c0cd1f85d8a0a91d73c2ed76879207aee74e4e06a5a299cd78569ced",
|
|
35
|
+
"e7225c56b302453cc1dca664733fd612b5537b4f172f325635366449d5f9204b",
|
|
36
|
+
"00726c053f3dd7242abc46334bda5e2d85b3881b41027a0bd6cf92d8017f089f",
|
|
37
|
+
"6a48d5207d4e6ab178c856cba730992f4b7033e72328407bbf9687ab43fea31a",
|
|
38
|
+
"ccb781af89d778267e58ed7d92a076bb9266074fabadaacf3615309565c221cd",
|
|
39
|
+
"4e436b845f79c9abb9b02ce885712f3d86cbfc58e7ac013bbf12aa4cadf8766b",
|
|
40
|
+
"b4a82937d543b1ec702eb39a4f59c50fb405591a5cf47d57f26ddf3204c00c79",
|
|
41
|
+
"52f1d9c7c0e526b45a517d5ca6d0bad10f6f13f9e28710d07fbe2c6390fd4663",
|
|
42
|
+
"17ed12ca2369541649112e7e894eb8e9e7f5af739406ae752e49c41f9d0f954c",
|
|
43
|
+
"5d82d7da62a6a2a1ea620b2e20aed981e54a57f7481d0d7b80274836d18c67b1",
|
|
44
|
+
"2e76f30b34a18f41ab7cc6e78525ac8e88d5dffe1aa76f92be795d4d4800652a",
|
|
45
|
+
"a8b1a30dc99d18b5c0c1361c71a604efc4a546e3af45bb9e33f4d51469bd570a"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import crypto from 'node:crypto';
|
|
4
|
+
import {parse} from '@babel/parser';
|
|
5
|
+
import traverse from '@babel/traverse';
|
|
6
|
+
import expected from './providerEffects.fingerprint.json';
|
|
7
|
+
|
|
8
|
+
// Protect the unrelated auth/device/bootstrap callbacks while extracting hooks.
|
|
9
|
+
// Fingerprints record the approved runtime callbacks, dependencies and hook order.
|
|
10
|
+
it.each(['web', 'native'])('preserves bootstrap effects in %s', platform => {
|
|
11
|
+
const root = path.resolve(__dirname, '../../../react/components');
|
|
12
|
+
const provider = parse(fs.readFileSync(path.join(root, `DefaultProvider.${platform}.js`), 'utf8'), {sourceType: 'module', plugins: ['jsx']});
|
|
13
|
+
const hooks = new Map();
|
|
14
|
+
for (const group of ['lifecycle', 'configuration']) {
|
|
15
|
+
const code = fs.readFileSync(path.join(root, `DefaultProvider.${platform}.${group}.js`), 'utf8');
|
|
16
|
+
traverse(parse(code, {sourceType: 'module'}), {FunctionDeclaration(p) {
|
|
17
|
+
const effect = p.node.body.body.find(n => n.expression?.callee?.name === 'useEffect');
|
|
18
|
+
if (effect) hooks.set(p.node.id.name, crypto.createHash('sha256').update(code.slice(effect.start, effect.end)).digest('hex'));
|
|
19
|
+
}});
|
|
20
|
+
}
|
|
21
|
+
const actual = [];
|
|
22
|
+
traverse(provider, {CallExpression(p) {if (hooks.has(p.node.callee.name)) actual.push(hooks.get(p.node.callee.name));}});
|
|
23
|
+
expect(actual).toEqual(expected[platform]);
|
|
24
|
+
});
|