import { join } from 'path'; import { dependenciesConflictCheck, getNameFromPkg, parseContentToSingular, getSingularName, getMockDependencies, getAllBlockDependencies, } from './getBlockGenerator'; describe('test block generate', () => { it('dependenciesConflictCheck', () => { const { conflicts, lacks, devConflicts, devLacks } = dependenciesConflictCheck( { react: '>=16.0.0', antd: '^3.0.0', moment: '^2.3.0', }, { react: '^16.1.0', moment: '2.1.0', }, { qs: '^4.3.0', mockjs: '~0.0.1', }, { react: '^16.1.0', moment: '2.1.0', mockjs: '^1.1.0-beta3', }, ); expect(conflicts).toEqual([['moment', '^2.3.0', '2.1.0']]); expect(lacks).toEqual([['antd', '^3.0.0']]); expect(devConflicts).toEqual([['mockjs', '~0.0.1', '^1.1.0-beta3']]); expect(devLacks).toEqual([['qs', '^4.3.0']]); }); it('getNameFromPkg', () => { expect( getNameFromPkg({ desc: 'test no name', }), ).toEqual(null); expect( getNameFromPkg({ name: 'test-demo', }), ).toEqual('test-demo'); expect( getNameFromPkg({ name: '@umi-blocks/demo', }), ).toEqual('demo'); }); it('parseContentToSingular', () => { expect( parseContentToSingular(` import test from '@/utils/test'; import '@/models/global'; import '@/components/CompTest/index.js'; import "@/locales/zh_CN"; import { api } from '@/services/yes'; import { ok } from '@/page/ttt'; import test2 from '@/goos/test'; import types from '@types/yes'; import { parseutil } from '../utils/parse'; import test from './components/test'; // test comment export default() { return
test
; }; `), ).toEqual(` import test from '@/util/test'; import '@/model/global'; import '@/component/CompTest/index.js'; import "@/locale/zh_CN"; import { api } from '@/service/yes'; import { ok } from '@/page/ttt'; import test2 from '@/goos/test'; import types from '@types/yes'; import { parseutil } from '../util/parse'; import test from './component/test'; // test comment export default() { return
test
; }; `); }); it('getSingularName', () => { expect(getSingularName('locales')).toEqual('locale'); expect(getSingularName('test.js')).toEqual('test.js'); expect(getSingularName('components')).toEqual('component'); expect(getSingularName('.components')).toEqual('.components'); expect(getSingularName('test-tests')).toEqual('test-tests'); }); it('getMockDependencies', () => { expect( getMockDependencies( ` import moment from 'moment'; import qs from 'qs'; import data from './test.json'; export default { 'GET /api/test': { text: 'ok' }, }; `, { devDependencies: { moment: '^2.0.0', }, dependencies: { qs: '4.0.0', }, }, ), ).toEqual({ moment: '^2.0.0', qs: '4.0.0', }); }); it('getAllBlockDependencies', () => { expect( getAllBlockDependencies(join(__dirname, '../../../fixtures/block/test-blocks'), { blockConfig: { dependencies: ['demo'], }, dependencies: {}, }), ).toEqual({ antd: '^3.8.0', 'rc-select': '~2.1.0', }); expect( getAllBlockDependencies(join(__dirname, '../../../fixtures/block/test-blocks'), { dependencies: { moment: '2.3.2', }, }), ).toEqual({ moment: '2.3.2', }); expect( getAllBlockDependencies(join(__dirname, '../../../fixtures/block/test-blocks'), { blockConfig: { dependencies: ['demo', 'demo-with-dependencies'], }, dependencies: { moment: '2.3.2', }, }), ).toEqual({ moment: '2.3.2', antd: '^3.8.0', 'rc-select': '~2.1.0', }); expect( getAllBlockDependencies(join(__dirname, '../../../fixtures/block/test-blocks'), { blockConfig: { dependencies: ['demo-with-dependencies'], }, }), ).toEqual({ antd: '^3.8.0', 'rc-select': '~2.1.0', }); try { expect( getAllBlockDependencies(join(__dirname, '../../../fixtures/block/test-blocks'), { blockConfig: { dependencies: ['demo-with-dependencies'], }, dependencies: { antd: '2.0.0', }, }), ).toEqual({ antd: '^3.10.0', }); } catch (error) { expect(error.message).toContain('* antd: ^3.8.0 not compatible with 2.0.0'); } }); });