codify-plugin-test 0.0.18 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugin-tester.js +6 -5
- package/dist/plugin-tester.js.map +1 -1
- package/package.json +2 -2
- package/src/plugin-tester.ts +6 -5
- package/test/plugin-tester.test.ts +42 -14
- package/test/test-plugin.ts +33 -29
package/dist/plugin-tester.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import Ajv from 'ajv';
|
|
2
2
|
import { IpcMessageSchema, MessageCmd, ResourceOperation, SpawnStatus, SudoRequestDataSchema } from 'codify-schemas';
|
|
3
3
|
import { fork, spawn } from 'node:child_process';
|
|
4
|
-
import inspector from 'node:inspector';
|
|
5
4
|
import path from 'node:path';
|
|
6
5
|
import { CodifyTestUtils } from './test-utils.js';
|
|
7
6
|
const ajv = new Ajv.default({
|
|
@@ -15,8 +14,6 @@ export class PluginTester {
|
|
|
15
14
|
if (!path.isAbsolute(pluginPath)) {
|
|
16
15
|
throw new Error('A fully qualified path must be supplied to PluginTester');
|
|
17
16
|
}
|
|
18
|
-
console.log('Node Inspector:');
|
|
19
|
-
console.log(inspector.url());
|
|
20
17
|
this.childProcess = fork(pluginPath, [], {
|
|
21
18
|
env: { ...process.env },
|
|
22
19
|
execArgv: ['--import', 'tsx/esm', '--inspect=9221'],
|
|
@@ -72,8 +69,12 @@ ${JSON.stringify(unsuccessfulPlans, null, 2)}`);
|
|
|
72
69
|
for (const config of configs) {
|
|
73
70
|
const importResult = await this.import({ config });
|
|
74
71
|
importResults.push(importResult);
|
|
75
|
-
if (importResult.result.length !== 1
|
|
76
|
-
Object.entries(config).some(([k, v]) =>
|
|
72
|
+
if (importResult.result.length !== 1
|
|
73
|
+
|| Object.entries(config).some(([k, v]) => {
|
|
74
|
+
console.log(importResult.result[0][k]);
|
|
75
|
+
console.log(v);
|
|
76
|
+
return JSON.stringify(importResult.result[0][k]) !== JSON.stringify(v);
|
|
77
|
+
})) {
|
|
77
78
|
unsuccessfulImports.push(importResult);
|
|
78
79
|
}
|
|
79
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-tester.js","sourceRoot":"","sources":["../src/plugin-tester.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAKL,gBAAgB,EAChB,UAAU,EAIV,iBAAiB,EACjB,WAAW,EAEX,qBAAqB,EAGtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA8B,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-tester.js","sourceRoot":"","sources":["../src/plugin-tester.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAKL,gBAAgB,EAChB,UAAU,EAIV,iBAAiB,EACjB,WAAW,EAEX,qBAAqB,EAGtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA8B,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;IAC1B,MAAM,EAAE,IAAI;CACb,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC1D,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAGhE,MAAM,OAAO,YAAY;IACvB,YAAY,CAAc;IAO1B,YAAY,UAAkB;QAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CACtB,UAAU,EACV,EAAE,EACF;YAGE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;YACvB,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC;SACpD,CACF,CAAA;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,OAAyB,EACzB,OAMD;QACC,MAAM,EACJ,aAAa,GAAG,KAAK,GACtB,GAAG,OAAO,IAAI,EAAE,CAAA;QAEjB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAEjD,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAG,EAAE,CAC/C,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CACvE,CAAA;QACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,iEAAiE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAC1L,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAC7E,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACzG,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,KAAK,CAAC;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;QAGD,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,eAAe,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC;gBACnC,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChG,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC;EACpB,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACvC,CAAA;QACH,CAAC;QAED,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,MAAM,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,MAAM,mBAAmB,GAAG,EAAE,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YAClD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEjC,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;mBAC/B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;oBACxC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACf,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACzE,CAAC,CAAC,EACF,CAAC;gBACD,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC;EACpB,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB,EAAE,OAE1C;QACC,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC,CAAA;QACL,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,2EAA2E,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YAC7H,CAAC;YAED,MAAM,IAAI,CAAC,KAAK,CAAC;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;QAGD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;gBACrC,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAA;YACF,IAAI,cAAc,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC;;EAEtB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;SAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;YAC7B,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,EAAE;YACpE,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAyB;QACtC,OAAO,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,EAAE;YACpE,GAAG,EAAE,UAAU;YACf,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAqB;QAC9B,OAAO,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,EAAE;YACpE,GAAG,EAAE,MAAM;YACX,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAsB;QAChC,OAAO,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,EAAE;YACpE,GAAG,EAAE,OAAO;YACZ,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAuB;QAClC,OAAO,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,EAAE;YACpE,GAAG,EAAE,QAAQ;YACb,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,kBAAkB,CAAC,OAAqB;QAE9C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,IAAI,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;gBACzB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/G,CAAC;gBAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAkC,CAAC;gBAEhE,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,GAAG,CAAC,CAAA;gBAC3D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAEjD,OAAO,CAAC,IAAI,CAAC;oBACX,GAAG,EAAE,UAAU,CAAC,YAAY,GAAG,WAAW;oBAC1C,IAAI,EAAE,MAAM;iBACb,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAkBD,KAAK,UAAU,SAAS,CACtB,GAAW,EACX,IAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,IAAI,GAAG,QAAQ,GAAG,EAAE,CAAC;QAI3B,MAAM,QAAQ,GAAG,KAAK,CAAC,oBAAoB,IAAI,EAAE,EAAE,EAAE,EAAE;YACrD,GAAG,IAAI;YACP,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;QACnC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC5B,OAAO,CAAC;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK;aAC7D,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codify-plugin-test",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"tsx": "^4.7.3",
|
|
29
29
|
"typescript": "^5",
|
|
30
30
|
"vitest": "^1.4.0",
|
|
31
|
-
"codify-plugin-lib": "1.0.
|
|
31
|
+
"codify-plugin-lib": "1.0.106"
|
|
32
32
|
},
|
|
33
33
|
"engines": {
|
|
34
34
|
"node": ">=18.0.0"
|
package/src/plugin-tester.ts
CHANGED
|
@@ -42,9 +42,6 @@ export class PluginTester {
|
|
|
42
42
|
throw new Error('A fully qualified path must be supplied to PluginTester');
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
console.log('Node Inspector:')
|
|
46
|
-
console.log(inspector.url());
|
|
47
|
-
|
|
48
45
|
this.childProcess = fork(
|
|
49
46
|
pluginPath,
|
|
50
47
|
[],
|
|
@@ -134,8 +131,12 @@ ${JSON.stringify(unsuccessfulPlans, null, 2)}`
|
|
|
134
131
|
const importResult = await this.import({ config })
|
|
135
132
|
importResults.push(importResult);
|
|
136
133
|
|
|
137
|
-
if (importResult.result.length !== 1
|
|
138
|
-
Object.entries(config).some(([k, v]) =>
|
|
134
|
+
if (importResult.result.length !== 1
|
|
135
|
+
|| Object.entries(config).some(([k, v]) => {
|
|
136
|
+
console.log(importResult.result[0][k])
|
|
137
|
+
console.log(v);
|
|
138
|
+
return JSON.stringify(importResult.result[0][k]) !== JSON.stringify(v);
|
|
139
|
+
})
|
|
139
140
|
) {
|
|
140
141
|
unsuccessfulImports.push(importResult);
|
|
141
142
|
}
|
|
@@ -122,7 +122,9 @@ describe('Plugin tester integration tests', () => {
|
|
|
122
122
|
propA: 'a',
|
|
123
123
|
propB: 10,
|
|
124
124
|
propC: 'c',
|
|
125
|
-
}]
|
|
125
|
+
}], {
|
|
126
|
+
skipUninstall: true,
|
|
127
|
+
});
|
|
126
128
|
})
|
|
127
129
|
|
|
128
130
|
it('Full test supports plan assertions to ensure the generated plan is correct', async () => {
|
|
@@ -139,21 +141,45 @@ describe('Plugin tester integration tests', () => {
|
|
|
139
141
|
propA: 'a',
|
|
140
142
|
propB: 10,
|
|
141
143
|
propC: 'c',
|
|
142
|
-
}],
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
144
|
+
}], {
|
|
145
|
+
skipUninstall: true,
|
|
146
|
+
validatePlan: (plans) => {
|
|
147
|
+
expect(plans[0]).toMatchObject({
|
|
148
|
+
planId: expect.any(String),
|
|
149
|
+
operation: ResourceOperation.NOOP,
|
|
150
|
+
resourceType: 'test',
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
expect(plans[1]).toMatchObject({
|
|
154
|
+
planId: expect.any(String),
|
|
155
|
+
operation: ResourceOperation.NOOP,
|
|
156
|
+
resourceType: 'test',
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
})
|
|
155
160
|
})
|
|
156
161
|
|
|
162
|
+
it('Full test supports plan assertions to ensure the generated plan is correct (2)', async () => {
|
|
163
|
+
const plugin = new PluginTester(path.join(__dirname, './test-plugin.ts'));
|
|
164
|
+
|
|
165
|
+
// No expect needed here. This passes if it doesn't throw.
|
|
166
|
+
await plugin.fullTest([{
|
|
167
|
+
type: 'test',
|
|
168
|
+
propA: 'a',
|
|
169
|
+
propB: 10,
|
|
170
|
+
}], {
|
|
171
|
+
skipUninstall: true,
|
|
172
|
+
validatePlan: (plans) => {
|
|
173
|
+
expect(plans[0]).toMatchObject({
|
|
174
|
+
planId: expect.any(String),
|
|
175
|
+
operation: ResourceOperation.NOOP,
|
|
176
|
+
resourceType: 'test',
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
})
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
|
|
157
183
|
it('Has helpers that can uninstall a resource', async () => {
|
|
158
184
|
const plugin = new PluginTester(path.join(__dirname, './test-plugin.ts'));
|
|
159
185
|
|
|
@@ -177,4 +203,6 @@ describe('Plugin tester integration tests', () => {
|
|
|
177
203
|
propC: 'c',
|
|
178
204
|
}])).rejects.toThrowError();
|
|
179
205
|
})
|
|
206
|
+
|
|
207
|
+
|
|
180
208
|
})
|
package/test/test-plugin.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Plugin, Resource, runPlugin } from 'codify-plugin-lib';
|
|
1
|
+
import { CreatePlan, DestroyPlan, Plugin, Resource, ResourceSettings, runPlugin } from 'codify-plugin-lib';
|
|
2
2
|
import { StringIndexedObject } from 'codify-schemas';
|
|
3
3
|
|
|
4
4
|
export interface TestConfig extends StringIndexedObject {
|
|
@@ -8,16 +8,12 @@ export interface TestConfig extends StringIndexedObject {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export class TestResource extends Resource<TestConfig> {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
11
|
+
getSettings(): ResourceSettings<TestConfig> {
|
|
12
|
+
return {
|
|
13
|
+
id: 'test'
|
|
14
|
+
};
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
async applyCreate(): Promise<void> {}
|
|
18
|
-
|
|
19
|
-
async applyDestroy(): Promise<void> {}
|
|
20
|
-
|
|
21
17
|
async refresh(parameters: Partial<TestConfig>): Promise<Partial<TestConfig> | null> {
|
|
22
18
|
if (parameters.propD) {
|
|
23
19
|
throw new Error('Prop D is included');
|
|
@@ -29,34 +25,42 @@ export class TestResource extends Resource<TestConfig> {
|
|
|
29
25
|
propC: 'c',
|
|
30
26
|
};
|
|
31
27
|
}
|
|
32
|
-
}
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
constructor() {
|
|
36
|
-
super({
|
|
37
|
-
type: 'test-uninstall'
|
|
38
|
-
});
|
|
29
|
+
async create(plan: CreatePlan<TestConfig>): Promise<void> {
|
|
39
30
|
}
|
|
40
31
|
|
|
41
|
-
async
|
|
42
|
-
|
|
43
|
-
async applyDestroy(): Promise<void> {}
|
|
44
|
-
|
|
45
|
-
async refresh(): Promise<Partial<TestConfig> | null> {
|
|
46
|
-
return null;
|
|
32
|
+
async destroy(plan: DestroyPlan<TestConfig>): Promise<void> {
|
|
47
33
|
}
|
|
48
34
|
}
|
|
49
35
|
|
|
50
|
-
|
|
51
|
-
|
|
36
|
+
export class TestUninstallResource extends Resource<TestConfig> {
|
|
37
|
+
first = true;
|
|
38
|
+
getSettings(): ResourceSettings<TestConfig> {
|
|
39
|
+
return {
|
|
40
|
+
id: 'test-uninstall'
|
|
41
|
+
}
|
|
42
|
+
}
|
|
52
43
|
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
async create(plan: CreatePlan<TestConfig>): Promise<void> {
|
|
45
|
+
}
|
|
55
46
|
|
|
56
|
-
|
|
57
|
-
|
|
47
|
+
async destroy(plan: DestroyPlan<TestConfig>): Promise<void> {
|
|
48
|
+
}
|
|
58
49
|
|
|
59
|
-
|
|
50
|
+
async refresh(parameters: Partial<TestConfig>): Promise<Array<Partial<TestConfig>> | Partial<TestConfig> | null> {
|
|
51
|
+
if (this.first) {
|
|
52
|
+
this.first = false;
|
|
53
|
+
return parameters;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
60
58
|
}
|
|
61
59
|
|
|
62
|
-
runPlugin(
|
|
60
|
+
runPlugin(Plugin.create(
|
|
61
|
+
'default',
|
|
62
|
+
[
|
|
63
|
+
new TestResource(),
|
|
64
|
+
new TestUninstallResource()
|
|
65
|
+
]
|
|
66
|
+
));
|