@yqg/multiple-click
Version:
Monitor user's multiple click behavior and report
85 lines (72 loc) • 3.38 kB
text/typescript
import {processTrackingConfig} from '../config';
import {IExposeMultipleClickTrackingConfig} from '../type';
import {baseConfig, mockFetchConfig} from './common';
describe('config测试', () => {
beforeEach(() => {
mockFetchConfig({});
});
test('配置校验测试', async () => {
const validConfig = baseConfig;
expect(await processTrackingConfig(validConfig)).not.toEqual(null);
const invalidConfig1 = {...baseConfig, appId: ''};
const invalidConfig2 = {...baseConfig, appId: []};
const invalidConfig3 = {...baseConfig, appVersion: []};
const invalidConfig4 = {...baseConfig, interval: ''};
const invalidConfig5 = {...baseConfig, interval: 0};
const invalidConfig6 = {...baseConfig, continuousCount: ''};
const invalidConfig7 = {...baseConfig, continuousCount: 1};
const invalidConfig8 = {...baseConfig, range: ''};
const invalidConfig9 = {...baseConfig, range: 0};
const invalidConfig10 = {...baseConfig, customTrackingInfo: ''};
const invalidConfig11 = {...baseConfig, filter: ''};
const invalidConfigList = [
invalidConfig1,
invalidConfig2,
invalidConfig3,
invalidConfig4,
invalidConfig5,
invalidConfig6,
invalidConfig7,
invalidConfig8,
invalidConfig9,
invalidConfig10,
invalidConfig11
];
for (const invalidConfig of invalidConfigList) {
expect(await processTrackingConfig(invalidConfig as IExposeMultipleClickTrackingConfig).catch(() => null)).toEqual(null);
}
});
test('远程配置拉取测试', async () => {
const appId = Date.now().toString();
const config = {...baseConfig, appId};
mockFetchConfig({[appId]: JSON.stringify({})});
expect(await processTrackingConfig(config)).not.toEqual(null);
mockFetchConfig({[appId]: JSON.stringify({disabled: true})});
expect(await processTrackingConfig(config)).toEqual(null);
mockFetchConfig({[appId]: JSON.stringify({disabled: false, interval: 0})});
expect(await processTrackingConfig(config).catch(() => null)).toEqual(null);
mockFetchConfig({[appId]: JSON.stringify({disabled: false, interval: 500, continuousCount: 3, range: 20})});
expect(await processTrackingConfig(config)).toMatchObject({
interval: 500,
continuousCount: 3,
range: 20,
});
const remoteExcludeRules = [{selector: '#root', shallow: true, page: ['test/xxx']}];
mockFetchConfig({[appId]: JSON.stringify({disabled: false, interval: 500, continuousCount: 3, range: 20, excludeRules: remoteExcludeRules})});
expect(await processTrackingConfig(config)).toMatchObject({
interval: 500,
continuousCount: 3,
range: 20,
excludeRules: [
...(baseConfig.excludeRules || []),
...remoteExcludeRules
],
});
mockFetchConfig({[appId]: JSON.stringify({disabled: false, continuousCount: 3, range: 20})});
expect(await processTrackingConfig({...config, interval: 399})).toMatchObject({
interval: 399,
continuousCount: 3,
range: 20,
});
});
});