新增 release artifact JSON workflow API
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
createProjectReleaseGateActionPlan,
|
||||
createProjectReleaseGateManifest,
|
||||
createProjectReleaseGateResultMatrix,
|
||||
createProjectReleaseReadinessArtifactJsonWorkflow,
|
||||
createProjectReleaseReadinessArtifactValidation,
|
||||
createProjectReleaseReadinessArtifactValidationActionPlan,
|
||||
createProjectReleaseReadinessArtifactValidationSummaryViewModel,
|
||||
@@ -180,6 +181,9 @@ const artifactValidationSummary = createProjectReleaseReadinessArtifactValidatio
|
||||
const artifactValidationActionPlan = createProjectReleaseReadinessArtifactValidationActionPlan(
|
||||
createProjectReleaseReadinessArtifactValidation(report),
|
||||
);
|
||||
const artifactJsonWorkflow = createProjectReleaseReadinessArtifactJsonWorkflow({
|
||||
artifactJson: JSON.stringify(report),
|
||||
});
|
||||
assert.equal(
|
||||
artifactValidationSummary.apiName,
|
||||
"project-release-readiness-artifact-validation-summary-view-model",
|
||||
@@ -227,11 +231,35 @@ assert.deepEqual(artifactValidationActionPlan, {
|
||||
},
|
||||
],
|
||||
});
|
||||
assert.equal(artifactJsonWorkflow.apiName, "project-release-readiness-artifact-json-workflow");
|
||||
assert.equal(artifactJsonWorkflow.workflowVersion, 1);
|
||||
assert.equal(artifactJsonWorkflow.phase, "ready");
|
||||
assert.equal(artifactJsonWorkflow.ready, true);
|
||||
assert.equal(artifactJsonWorkflow.parsed, true);
|
||||
assert.equal(artifactJsonWorkflow.parseError, null);
|
||||
assert.equal(artifactJsonWorkflow.artifactApiName, "project-release-readiness-report");
|
||||
assert.equal(artifactJsonWorkflow.validation.ready, true);
|
||||
assert.equal(artifactJsonWorkflow.summaryViewModel.statusLine, "Ready: Artifact evidence complete");
|
||||
assert.equal(artifactJsonWorkflow.actionPlan.commandCount, 0);
|
||||
assert.deepEqual(
|
||||
artifactJsonWorkflow.rows.map(({ id, value }) => [id, value]),
|
||||
[
|
||||
["parse", "ready"],
|
||||
["validation", "ready"],
|
||||
["next-command", "none"],
|
||||
],
|
||||
);
|
||||
const staleArtifactValidationSummary = createProjectReleaseReadinessArtifactValidationSummaryViewModel(
|
||||
createProjectReleaseReadinessArtifactValidation({}),
|
||||
);
|
||||
const staleArtifactValidation = createProjectReleaseReadinessArtifactValidation({});
|
||||
const staleArtifactValidationActionPlan = createProjectReleaseReadinessArtifactValidationActionPlan(staleArtifactValidation);
|
||||
const staleArtifactJsonWorkflow = createProjectReleaseReadinessArtifactJsonWorkflow({
|
||||
artifactJson: "{}",
|
||||
});
|
||||
const invalidArtifactJsonWorkflow = createProjectReleaseReadinessArtifactJsonWorkflow({
|
||||
artifactJson: "{not-json",
|
||||
});
|
||||
assert.equal(staleArtifactValidationSummary.phase, "blocked");
|
||||
assert.match(staleArtifactValidationSummary.statusLine, /^Blocked: apiName, reportVersion/);
|
||||
assert.equal(staleArtifactValidationSummary.rows.find(({ id }) => id === "gate-action-plan")?.value, "missing");
|
||||
@@ -254,5 +282,27 @@ assert.equal(
|
||||
staleArtifactValidationActionPlan.rows.find(({ id }) => id === "missing")?.value,
|
||||
staleArtifactValidation.missing.join(", "),
|
||||
);
|
||||
assert.equal(staleArtifactJsonWorkflow.parsed, true);
|
||||
assert.equal(staleArtifactJsonWorkflow.ready, false);
|
||||
assert.equal(staleArtifactJsonWorkflow.phase, "blocked");
|
||||
assert.equal(staleArtifactJsonWorkflow.actionPlan.commandCount, 2);
|
||||
assert.deepEqual(staleArtifactJsonWorkflow.missing, staleArtifactValidation.missing);
|
||||
assert.equal(invalidArtifactJsonWorkflow.parsed, false);
|
||||
assert.equal(invalidArtifactJsonWorkflow.ready, false);
|
||||
assert.equal(invalidArtifactJsonWorkflow.phase, "blocked");
|
||||
assert.match(invalidArtifactJsonWorkflow.parseError, /JSON/);
|
||||
assert.equal(invalidArtifactJsonWorkflow.missing[0], "artifact-json");
|
||||
assert.equal(
|
||||
invalidArtifactJsonWorkflow.actionPlan.nextCommand,
|
||||
"wasm-port/tests/host/verify_project_release_gate.sh",
|
||||
);
|
||||
assert.deepEqual(
|
||||
invalidArtifactJsonWorkflow.rows.map(({ id, value }) => [id, value]),
|
||||
[
|
||||
["parse", "blocked"],
|
||||
["validation", "blocked"],
|
||||
["next-command", "wasm-port/tests/host/verify_project_release_gate.sh"],
|
||||
],
|
||||
);
|
||||
|
||||
console.log("project_release_gate_manifest_node_smoke=ok");
|
||||
|
||||
@@ -37,6 +37,7 @@ import {
|
||||
createProjectReleaseGateActionPlan,
|
||||
createProjectReleaseGateManifest,
|
||||
createProjectReleaseGateResultMatrix,
|
||||
createProjectReleaseReadinessArtifactJsonWorkflow,
|
||||
createProjectReleaseReadinessArtifactValidation,
|
||||
createProjectReleaseReadinessArtifactValidationActionPlan,
|
||||
createProjectReleaseReadinessArtifactValidationSummaryViewModel,
|
||||
@@ -94,6 +95,7 @@ const requiredExports = [
|
||||
["createProjectReleaseGateActionPlan", createProjectReleaseGateActionPlan],
|
||||
["createProjectReleaseGateManifest", createProjectReleaseGateManifest],
|
||||
["createProjectReleaseGateResultMatrix", createProjectReleaseGateResultMatrix],
|
||||
["createProjectReleaseReadinessArtifactJsonWorkflow", createProjectReleaseReadinessArtifactJsonWorkflow],
|
||||
["createProjectReleaseReadinessArtifactValidation", createProjectReleaseReadinessArtifactValidation],
|
||||
[
|
||||
"createProjectReleaseReadinessArtifactValidationActionPlan",
|
||||
@@ -343,6 +345,16 @@ assert.equal(
|
||||
.nextCommand,
|
||||
"wasm-port/tests/host/verify_project_release_gate.sh",
|
||||
);
|
||||
assert.equal(
|
||||
createProjectReleaseReadinessArtifactJsonWorkflow({
|
||||
artifactJson: JSON.stringify(releaseReadinessArtifact),
|
||||
}).summaryViewModel.statusLine,
|
||||
"Ready: Artifact evidence complete",
|
||||
);
|
||||
assert.equal(
|
||||
createProjectReleaseReadinessArtifactJsonWorkflow({ artifactJson: "not-json" }).parsed,
|
||||
false,
|
||||
);
|
||||
assert.deepEqual(
|
||||
createProjectReleaseReadinessArtifactValidation({}).missing,
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user