wgc 0.129.9 → 0.130.0
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/package.json +1 -1
- package/dist/src/commands/proposal/commands/update-status.d.ts +4 -0
- package/dist/src/commands/proposal/commands/update-status.js +90 -0
- package/dist/src/commands/proposal/commands/update-status.js.map +1 -0
- package/dist/src/commands/proposal/index.js +2 -0
- package/dist/src/commands/proposal/index.js.map +1 -1
- package/dist/test/update-proposal-status.test.d.ts +1 -0
- package/dist/test/update-proposal-status.test.js +129 -0
- package/dist/test/update-proposal-status.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
package/dist/package.json
CHANGED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
|
|
2
|
+
import { Command, InvalidArgumentError } from 'commander';
|
|
3
|
+
import pc from 'picocolors';
|
|
4
|
+
import { getBaseHeaders } from '../../../core/config.js';
|
|
5
|
+
const proposalStatuses = ['APPROVED', 'CLOSED'];
|
|
6
|
+
const createJsonSuccessOutput = (proposalName, status) => ({
|
|
7
|
+
status: 'success',
|
|
8
|
+
message: `Proposal '${proposalName}' status was updated to ${status} successfully.`,
|
|
9
|
+
});
|
|
10
|
+
const createJsonErrorOutput = (proposalName, code, details) => ({
|
|
11
|
+
status: 'error',
|
|
12
|
+
code,
|
|
13
|
+
message: `Failed to update status for proposal '${proposalName}'.`,
|
|
14
|
+
details,
|
|
15
|
+
});
|
|
16
|
+
const parseProposalStatus = (value) => {
|
|
17
|
+
const status = value.toUpperCase();
|
|
18
|
+
if (!proposalStatuses.includes(status)) {
|
|
19
|
+
throw new InvalidArgumentError('Allowed values are approved and closed.');
|
|
20
|
+
}
|
|
21
|
+
return status;
|
|
22
|
+
};
|
|
23
|
+
const updateProposalStatus = async (client, { proposalName, federatedGraphName, namespace, status, }) => {
|
|
24
|
+
try {
|
|
25
|
+
const response = await client.platform.updateProposal({
|
|
26
|
+
proposalName,
|
|
27
|
+
federatedGraphName,
|
|
28
|
+
namespace,
|
|
29
|
+
updateAction: {
|
|
30
|
+
case: 'state',
|
|
31
|
+
value: status,
|
|
32
|
+
},
|
|
33
|
+
}, {
|
|
34
|
+
headers: getBaseHeaders(),
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
status: 'success',
|
|
38
|
+
response,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return {
|
|
43
|
+
status: 'error',
|
|
44
|
+
error: error instanceof Error ? error : new Error('An unknown error occurred.'),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export default (opts) => {
|
|
49
|
+
const command = new Command('update-status');
|
|
50
|
+
command.description('Updates the status of an existing proposal for a federated graph.');
|
|
51
|
+
command.argument('<name>', 'The name of the proposal to update.');
|
|
52
|
+
command.requiredOption('-f, --federation-graph <federatedGraphName>', 'The name of the federated graph this proposal is for.');
|
|
53
|
+
command.requiredOption('-s, --status <status>', 'The status to set. Allowed values: approved, closed.', parseProposalStatus);
|
|
54
|
+
command.option('-n, --namespace [string]', 'The namespace of the federated graph.', 'default');
|
|
55
|
+
command.option('-j, --json', 'Prints to the console in json format instead of text');
|
|
56
|
+
command.action(async (name, options) => {
|
|
57
|
+
var _a, _b, _c, _d, _e;
|
|
58
|
+
const responseMetadata = await updateProposalStatus(opts.client, {
|
|
59
|
+
proposalName: name,
|
|
60
|
+
federatedGraphName: options.federationGraph,
|
|
61
|
+
namespace: options.namespace,
|
|
62
|
+
status: options.status,
|
|
63
|
+
});
|
|
64
|
+
if (responseMetadata.status === 'error') {
|
|
65
|
+
if (options.json) {
|
|
66
|
+
console.log(JSON.stringify(createJsonErrorOutput(name, EnumStatusCode.ERR, responseMetadata.error.message)));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
console.error(pc.red(responseMetadata.error.message));
|
|
70
|
+
}
|
|
71
|
+
process.exitCode = 1;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const resp = responseMetadata.response;
|
|
75
|
+
if (((_a = resp.response) === null || _a === void 0 ? void 0 : _a.code) !== EnumStatusCode.OK) {
|
|
76
|
+
if (options.json) {
|
|
77
|
+
console.log(JSON.stringify(createJsonErrorOutput(name, (_c = (_b = resp.response) === null || _b === void 0 ? void 0 : _b.code) !== null && _c !== void 0 ? _c : EnumStatusCode.ERR, (_d = resp.response) === null || _d === void 0 ? void 0 : _d.details)));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.error(pc.red(((_e = resp.response) === null || _e === void 0 ? void 0 : _e.details) || `Failed to update status for proposal '${name}'.`));
|
|
81
|
+
}
|
|
82
|
+
process.exitCode = 1;
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const output = createJsonSuccessOutput(name, options.status);
|
|
86
|
+
console.log(options.json ? JSON.stringify(output) : pc.green(output.message));
|
|
87
|
+
});
|
|
88
|
+
return command;
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=update-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-status.js","sourceRoot":"","sources":["../../../../../src/commands/proposal/commands/update-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAElF,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAC;AAGzD,MAAM,uBAAuB,GAAG,CAAC,YAAoB,EAAE,MAAsB,EAAE,EAAE,CAAC,CAAC;IACjF,MAAM,EAAE,SAAkB;IAC1B,OAAO,EAAE,aAAa,YAAY,2BAA2B,MAAM,gBAAgB;CACpF,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,YAAoB,EAAE,IAAoB,EAAE,OAAgB,EAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,EAAE,OAAgB;IACxB,IAAI;IACJ,OAAO,EAAE,yCAAyC,YAAY,IAAI;IAClE,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAkB,EAAE;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAwB,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,oBAAoB,CAAC,yCAAyC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,MAAwB,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,EAChC,MAAoC,EACpC,EACE,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,MAAM,GAMP,EAUD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CACnD;YACE,YAAY;YACZ,kBAAkB;YAClB,SAAS;YACT,YAAY,EAAE;gBACZ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,MAAM;aACd;SACF,EACD;YACE,OAAO,EAAE,cAAc,EAAE;SAC1B,CACF,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,QAAQ;SACT,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC;SAChF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO,CAAC,WAAW,CAAC,mEAAmE,CAAC,CAAC;IACzF,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,qCAAqC,CAAC,CAAC;IAClE,OAAO,CAAC,cAAc,CACpB,6CAA6C,EAC7C,uDAAuD,CACxD,CAAC;IACF,OAAO,CAAC,cAAc,CACpB,uBAAuB,EACvB,sDAAsD,EACtD,mBAAmB,CACpB,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,uCAAuC,EAAE,SAAS,CAAC,CAAC;IAC/F,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,sDAAsD,CAAC,CAAC;IAErF,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;;QACrC,MAAM,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/D,YAAY,EAAE,IAAI;YAClB,kBAAkB,EAAE,OAAO,CAAC,eAAe;YAC3C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,gBAAgB,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/G,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAEvC,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,MAAK,cAAc,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ,qBAAqB,CAAC,IAAI,EAAE,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,mCAAI,cAAc,CAAC,GAAG,EAAE,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,CAAC,CAC/F,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,KAAI,yCAAyC,IAAI,IAAI,CAAC,CAAC,CAAC;YACrG,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { checkAuth } from '../auth/utils.js';
|
|
3
3
|
import CreateProposalCommand from './commands/create.js';
|
|
4
|
+
import UpdateProposalStatusCommand from './commands/update-status.js';
|
|
4
5
|
import UpdateProposalCommand from './commands/update.js';
|
|
5
6
|
export default (opts) => {
|
|
6
7
|
const command = new Command('proposal');
|
|
7
8
|
command.description('Provides commands for creating and maintaining proposals for a federated graph');
|
|
8
9
|
command.addCommand(CreateProposalCommand(opts));
|
|
9
10
|
command.addCommand(UpdateProposalCommand(opts));
|
|
11
|
+
command.addCommand(UpdateProposalStatusCommand(opts));
|
|
10
12
|
command.hook('preAction', async (thisCmd) => {
|
|
11
13
|
await checkAuth();
|
|
12
14
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/proposal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,qBAAqB,MAAM,sBAAsB,CAAC;AACzD,OAAO,qBAAqB,MAAM,sBAAsB,CAAC;AAEzD,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO,CAAC,WAAW,CAAC,gFAAgF,CAAC,CAAC;IACtG,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/proposal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,qBAAqB,MAAM,sBAAsB,CAAC;AACzD,OAAO,2BAA2B,MAAM,6BAA6B,CAAC;AACtE,OAAO,qBAAqB,MAAM,sBAAsB,CAAC;AAEzD,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO,CAAC,WAAW,CAAC,gFAAgF,CAAC,CAAC;IACtG,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,UAAU,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1C,MAAM,SAAS,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { createClient, createRouterTransport } from '@connectrpc/connect';
|
|
2
|
+
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
|
|
3
|
+
import { PlatformService, } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
|
6
|
+
import UpdateProposalStatusCommand from '../src/commands/proposal/commands/update-status.js';
|
|
7
|
+
function createMockTransport(response, onUpdateProposal) {
|
|
8
|
+
return createRouterTransport(({ service }) => {
|
|
9
|
+
service(PlatformService, {
|
|
10
|
+
updateProposal: (req) => {
|
|
11
|
+
onUpdateProposal === null || onUpdateProposal === void 0 ? void 0 : onUpdateProposal(req);
|
|
12
|
+
return response;
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async function runUpdateStatus(response, args = [], onUpdateProposal) {
|
|
18
|
+
const client = {
|
|
19
|
+
platform: createClient(PlatformService, createMockTransport(response, onUpdateProposal)),
|
|
20
|
+
};
|
|
21
|
+
const program = new Command();
|
|
22
|
+
program.exitOverride();
|
|
23
|
+
const command = UpdateProposalStatusCommand({ client });
|
|
24
|
+
command.exitOverride();
|
|
25
|
+
program.addCommand(command);
|
|
26
|
+
await program.parseAsync(['update-status', 'my-proposal', '--federation-graph', 'my-graph', '--status', 'approved', ...args], { from: 'user' });
|
|
27
|
+
}
|
|
28
|
+
function getJsonOutput(logSpy) {
|
|
29
|
+
const call = logSpy.mock.calls.find(([arg]) => {
|
|
30
|
+
try {
|
|
31
|
+
JSON.parse(String(arg));
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
if (!call) {
|
|
39
|
+
throw new Error('No JSON output found in console.log calls');
|
|
40
|
+
}
|
|
41
|
+
return JSON.parse(String(call[0]));
|
|
42
|
+
}
|
|
43
|
+
describe('update proposal status', () => {
|
|
44
|
+
let logSpy;
|
|
45
|
+
let errorSpy;
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
48
|
+
errorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
49
|
+
});
|
|
50
|
+
afterEach(() => {
|
|
51
|
+
process.exitCode = undefined;
|
|
52
|
+
vi.restoreAllMocks();
|
|
53
|
+
});
|
|
54
|
+
test('approves a proposal in the default namespace', async () => {
|
|
55
|
+
let request;
|
|
56
|
+
await runUpdateStatus({ response: { code: EnumStatusCode.OK } }, [], (req) => {
|
|
57
|
+
request = req;
|
|
58
|
+
});
|
|
59
|
+
expect(request).toMatchObject({
|
|
60
|
+
proposalName: 'my-proposal',
|
|
61
|
+
federatedGraphName: 'my-graph',
|
|
62
|
+
namespace: 'default',
|
|
63
|
+
updateAction: {
|
|
64
|
+
case: 'state',
|
|
65
|
+
value: 'APPROVED',
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Proposal 'my-proposal' status was updated to APPROVED successfully."));
|
|
69
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
70
|
+
expect(process.exitCode).toBeUndefined();
|
|
71
|
+
});
|
|
72
|
+
test('closes a proposal in an explicitly provided namespace', async () => {
|
|
73
|
+
let request;
|
|
74
|
+
await runUpdateStatus({ response: { code: EnumStatusCode.OK } }, ['--status', 'CLOSED', '--namespace', 'production'], (req) => {
|
|
75
|
+
request = req;
|
|
76
|
+
});
|
|
77
|
+
expect(request).toMatchObject({
|
|
78
|
+
namespace: 'production',
|
|
79
|
+
updateAction: {
|
|
80
|
+
case: 'state',
|
|
81
|
+
value: 'CLOSED',
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
test('prints the updated proposal status as json', async () => {
|
|
86
|
+
await runUpdateStatus({ response: { code: EnumStatusCode.OK } }, ['--json']);
|
|
87
|
+
expect(getJsonOutput(logSpy)).toEqual({
|
|
88
|
+
status: 'success',
|
|
89
|
+
message: "Proposal 'my-proposal' status was updated to APPROVED successfully.",
|
|
90
|
+
});
|
|
91
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
92
|
+
expect(process.exitCode).toBeUndefined();
|
|
93
|
+
});
|
|
94
|
+
test('rejects statuses that cannot be set manually', async () => {
|
|
95
|
+
let updateCalled = false;
|
|
96
|
+
await expect(runUpdateStatus({ response: { code: EnumStatusCode.OK } }, ['--status', 'published'], () => {
|
|
97
|
+
updateCalled = true;
|
|
98
|
+
})).rejects.toThrow('Allowed values are approved and closed.');
|
|
99
|
+
expect(updateCalled).toBe(false);
|
|
100
|
+
});
|
|
101
|
+
test('prints the control-plane error and sets a non-zero exit code', async () => {
|
|
102
|
+
await runUpdateStatus({
|
|
103
|
+
response: {
|
|
104
|
+
code: EnumStatusCode.ERR_NOT_FOUND,
|
|
105
|
+
details: 'Proposal my-proposal not found',
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Proposal my-proposal not found'));
|
|
109
|
+
expect(logSpy).not.toHaveBeenCalled();
|
|
110
|
+
expect(process.exitCode).toBe(1);
|
|
111
|
+
});
|
|
112
|
+
test('prints the control-plane error as json', async () => {
|
|
113
|
+
await runUpdateStatus({
|
|
114
|
+
response: {
|
|
115
|
+
code: EnumStatusCode.ERR_NOT_FOUND,
|
|
116
|
+
details: 'Proposal my-proposal not found',
|
|
117
|
+
},
|
|
118
|
+
}, ['--json']);
|
|
119
|
+
expect(getJsonOutput(logSpy)).toEqual({
|
|
120
|
+
status: 'error',
|
|
121
|
+
code: EnumStatusCode.ERR_NOT_FOUND,
|
|
122
|
+
message: "Failed to update status for proposal 'my-proposal'.",
|
|
123
|
+
details: 'Proposal my-proposal not found',
|
|
124
|
+
});
|
|
125
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
126
|
+
expect(process.exitCode).toBe(1);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
//# sourceMappingURL=update-proposal-status.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-proposal-status.test.js","sourceRoot":"","sources":["../../test/update-proposal-status.test.ts"],"names":[],"mappings":"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"}
|