1 | const ini = require('ini');
|
2 | const chalk = require('chalk');
|
3 |
|
4 | const helpers = require('.././helpers');
|
5 |
|
6 | const { NPMRC, NRMRC, REGISTRY } = require('.././constants');
|
7 |
|
8 |
|
9 |
|
10 | let mockedFiles = Object.create(null);
|
11 |
|
12 | function writeFileSync(path, content) {
|
13 | mockedFiles[path] = content;
|
14 | };
|
15 |
|
16 | jest.mock("fs", () => {
|
17 | const originalModule = jest.requireActual('fs');
|
18 |
|
19 | function readFileSync(path) {
|
20 | return mockedFiles[path];
|
21 | };
|
22 |
|
23 |
|
24 | function writeFileSync(path, content) {
|
25 | mockedFiles[path] = content;
|
26 | };
|
27 |
|
28 | function existsSync(path) {
|
29 | return path in mockedFiles;
|
30 | };
|
31 |
|
32 | return {
|
33 | ...originalModule,
|
34 | existsSync: jest.fn(existsSync),
|
35 | readFileSync: jest.fn(readFileSync),
|
36 | writeFileSync: jest.fn(writeFileSync),
|
37 | };
|
38 | });
|
39 |
|
40 |
|
41 |
|
42 | beforeEach(() => {
|
43 | mockedFiles = Object.create(null);
|
44 | mockedFiles[NPMRC] = '';
|
45 | mockedFiles[NRMRC] = '';
|
46 | });
|
47 |
|
48 | it('geneDashLine', () => {
|
49 | const result1 = helpers.geneDashLine('taobao', 10);
|
50 | const result2 = helpers.geneDashLine('taobao', 1);
|
51 | expect(result1).toBe(` ${chalk.dim('-----')} `);
|
52 | expect(result2).toBe(` ${chalk.dim('-')} `);
|
53 | });
|
54 |
|
55 | it('getCurrentRegistry', async () => {
|
56 | const registry = ' https://registry.npmjs.org/';
|
57 | writeFileSync(NPMRC, ini.stringify({ [REGISTRY]: registry }));
|
58 | const currentRegistry = await helpers.getCurrentRegistry();
|
59 | expect(currentRegistry).toBe(registry);
|
60 | });
|
61 |
|
62 | it('getRegistries', async () => {
|
63 | const name = 'fake name';
|
64 | const registry = 'https://registry.example.com/';
|
65 | writeFileSync(NRMRC, ini.stringify({ [name]: { registry } }));
|
66 | const registries = await helpers.getRegistries();
|
67 | expect(Object.keys(registries).includes(name)).toBe(true);
|
68 | });
|
69 |
|
70 | it('readFile', async () => {
|
71 | const content = 'hello nrm';
|
72 | writeFileSync(NRMRC, ini.stringify({ content: content }));
|
73 | const result1 = await helpers.readFile(NRMRC);
|
74 | const result2 = await helpers.readFile('file not exist');
|
75 | expect(result1.content).toBe(content);
|
76 | expect(result2).toEqual(Object.create(null));
|
77 | });
|
78 |
|
79 | it('writeFile', async () => {
|
80 | const content = { nrm: 'nrm is great' };
|
81 | await helpers.writeFile(NRMRC, { content });
|
82 | const result = await helpers.readFile(NRMRC);
|
83 | expect(result.content).toEqual(content);
|
84 | });
|
85 |
|
86 | test('isLowerCaseEqual', () => {
|
87 | const result1 = helpers.isLowerCaseEqual('taobao', 'TAOBAO');
|
88 | const result2 = helpers.isLowerCaseEqual('jd', 'tb');
|
89 | const result3 = helpers.isLowerCaseEqual('taobao', '');
|
90 | const result4 = helpers.isLowerCaseEqual('', '');
|
91 | expect(result1).toBe(true);
|
92 | expect(result2).toBe(false);
|
93 | expect(result3).toBe(false);
|
94 | expect(result4).toBe(true);
|
95 | });
|
96 |
|
97 | it('isRegistryNotFound', async () => {
|
98 | const unknown = 'unknown';
|
99 | const name = 'custom name';
|
100 | const registry = 'https://registry.example.com/';
|
101 | writeFileSync(NRMRC, ini.stringify({ [name]: registry }));
|
102 | const result1 = await helpers.isRegistryNotFound(unknown, false);
|
103 | const result2 = await helpers.isRegistryNotFound(name, false);
|
104 | expect(result1).toBe(true);
|
105 | expect(result2).toBe(false);
|
106 | });
|
107 |
|
108 | it('isInternalRegistry', async () => {
|
109 | const name = 'custom name';
|
110 | const registry = 'https://registry.example.com/';
|
111 | writeFileSync(NRMRC, ini.stringify({ [name]: registry }));
|
112 | const result1 = await helpers.isInternalRegistry(name);
|
113 | const result2 = await helpers.isInternalRegistry('npm');
|
114 | expect(result1).toBe(false);
|
115 | expect(result2).toBe(true);
|
116 | });
|