Skip to content

Commit da23151

Browse files
committed
refactor(assets): starting work on tests
1 parent a34527a commit da23151

File tree

6 files changed

+67
-4
lines changed

6 files changed

+67
-4
lines changed

Diff for: packages/plugin-assets/jest.config.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const base = require('../../jest.config.base.js');
2+
const { join } = require('path');
3+
4+
module.exports = {
5+
...base,
6+
preset: null,
7+
name: 'plugin-assets',
8+
displayName: 'plugin-assets',
9+
globalTeardown: join(__dirname, 'jest.teardown.js'),
10+
};

Diff for: packages/plugin-assets/jest.teardown.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const { join } = require('path');
2+
const { tmpdir } = require('os');
3+
const rimraf = require('rimraf');
4+
5+
module.exports = () => {
6+
rimraf.sync(join(tmpdir(), 'scratch'));
7+
};

Diff for: packages/plugin-assets/package.json

+5-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
"@oclif/dev-cli": "^1.22.2",
2222
"@oclif/plugin-help": "^2.2.1",
2323
"@oclif/test": "^1.2.5",
24-
"@twilio/cli-test": "^2.0.2"
24+
"@twilio/cli-test": "^2.0.2",
25+
"jest": "^26.6.3",
26+
"rimraf": "^3.0.2"
2527
},
2628
"engines": {
2729
"node": ">=10"
@@ -76,6 +78,7 @@
7678
"scripts": {
7779
"postpack": "rm -f oclif.manifest.json",
7880
"prepack": "oclif-dev manifest && oclif-dev readme",
79-
"version": "oclif-dev readme && git add README.md"
81+
"version": "oclif-dev readme && git add README.md",
82+
"test": "jest"
8083
}
8184
}

Diff for: packages/plugin-assets/src/configStore.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { join } = require('path');
2-
const { readFile, writeFile } = require('fs/promises');
2+
const { readFile, writeFile, mkdir } = require('fs/promises');
33

44
const CONFIG_FILE_NAME = 'plugin-assets-config.json';
55

@@ -21,6 +21,7 @@ class ConfigStore {
2121
}
2222

2323
async save(config) {
24+
await mkdir(this.configDir, { recursive: true });
2425
writeFile(this.configPath, JSON.stringify(config), { encoding: 'utf-8' });
2526
}
2627
}

Diff for: packages/plugin-assets/src/init.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const { ConfigStore } = require('./configStore');
1010
const { createUtils } = require('./utils');
1111
const { printInBox } = require('./print');
1212

13-
const { spinner, debug, handleError } = createUtils('init');
13+
const { spinner, handleError } = createUtils('init');
1414

1515
const DEFAULT_ASSET_SERVICE_NAME = 'CLI-Assets-Bucket';
1616

Diff for: packages/plugin-assets/tests/init.test.js

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
const { init } = require('../src/init');
2+
const path = require('path');
3+
const fs = require('fs/promises');
4+
const { tmpdir } = require('os');
5+
const { equal } = require('assert');
6+
7+
jest.mock('@twilio-labs/serverless-api/dist/api/services', () => {
8+
return { createService: jest.fn().mockResolvedValue('new-service-sid') };
9+
});
10+
jest.mock('@twilio-labs/serverless-api/dist/api/environments', () => {
11+
return {
12+
createEnvironmentFromSuffix: jest
13+
.fn()
14+
.mockResolvedValue({ sid: 'new-environment-sid' }),
15+
};
16+
});
17+
18+
describe('init', () => {
19+
describe('with nothing in the config', () => {
20+
it('creates a new service and environment and writes it to config', async () => {
21+
const configPath = path.join(
22+
tmpdir(),
23+
'scratch',
24+
'plugin-assets-config.json'
25+
);
26+
await init({
27+
apiKey: 'apiKey',
28+
apiSecret: 'apiSecret',
29+
accountSid: 'test-account-sid',
30+
configDir: path.dirname(configPath),
31+
});
32+
33+
const config = JSON.parse(
34+
await fs.readFile(configPath, { encoding: 'utf-8' })
35+
);
36+
expect(config['test-account-sid']['serviceSid']).toBe('new-service-sid');
37+
expect(config['test-account-sid']['environmentSid']).toBe(
38+
'new-environment-sid'
39+
);
40+
});
41+
});
42+
});

0 commit comments

Comments
 (0)