UNPKG

@yqg/multiple-click

Version:

Monitor user's multiple click behavior and report

85 lines (72 loc) 3.38 kB
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, }); }); });