The GitHub Actions job "Required Checks" on texera.git/gh-readonly-queue/main/pr-5797-f2867f0ab0a74f3e8e8922f3668b929f0beaa357 has failed. Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).
Head commit for run: 58fab0d7ab0b16aaf31d6e437e3b15afe4169a9d / Xinyuan Lin <[email protected]> test(workflow-operator): add unit test coverage for small visualization config bags (BulletChartStepDefinition + HierarchySection + BandConfig) (#5797) ### What changes were proposed in this PR? Pin defaults, mutability, JSON round-trip, and annotation surface for three small Jackson-deserializable config classes in the visualization operator subtree. Each one lives on a descriptor's wire-format (frontend ↔ backend JSON), so any drift in defaults, wire-key names, or annotation values silently breaks the workflow saved-state round-trip. No production-code changes. | Spec | Source class | Tests | | --- | --- | --- | | `BulletChartStepDefinitionSpec` | `BulletChartStepDefinition` | 7 | | `HierarchySectionSpec` | `HierarchySection` | 7 | | `BandConfigSpec` | `BandConfig` | 9 | All three spec files follow the `<srcClassName>Spec.scala` one-to-one convention. **Behavior pinned — `BulletChartStepDefinition`** | Surface | Contract | | --- | --- | | Construction | stores both `@JsonCreator` constructor arguments | | Mutability | both `var` fields are reassignable | | Wire keys | serializes under `start` / `end` (tree-API verified) | | JSON round-trip | preserves both fields | | Annotations | `@JsonProperty(\"start\")` and `@JsonProperty(\"end\")` live on the **constructor parameters** (Scala's default for `var` ctor params unless `@meta.field` is used); verified via `Constructor.getParameterAnnotations` | | Instance independence | no static state shared | **Behavior pinned — `HierarchySection`** | Surface | Contract | | --- | --- | | Defaults | `attributeName == \"\"` | | Mutability | `attributeName` is reassignable | | JSON round-trip | preserves the field, including the default-empty case | | Annotations | `@JsonProperty(required = true)` + `@AutofillAttributeName` + `@NotNull(\"Attribute Name cannot be empty\")` | | Instance independence | no static state shared | **Behavior pinned — `BandConfig`** | Surface | Contract | | --- | --- | | Inheritance | extends `LineConfig` (compile-time enforced) | | Defaults | `yUpper`, `yLower`, `fillColor` all default to `\"\"` | | Mutability | all three fields are reassignable | | JSON round-trip | preserves all three fields | | `yUpper` annotations | `@JsonProperty(required = true)` + `@NotNull(\"Y-Axis Upper Bound cannot be empty\")` + `@AutofillAttributeName` | | `yLower` annotations | `@JsonProperty(required = true)` + `@NotNull(\"Y-Axis Lower Bound cannot be empty\")` + `@AutofillAttributeName` | | `fillColor` annotations | `@JsonProperty(required = false)`, **no** `@NotNull` | | Instance independence | no static state shared | ### Any related issues, documentation, discussions? Closes #5794. ### How was this PR tested? Pure unit-test additions; verified locally with: - `sbt \"WorkflowOperator/testOnly org.apache.texera.amber.operator.visualization.bulletChart.BulletChartStepDefinitionSpec org.apache.texera.amber.operator.visualization.hierarchychart.HierarchySectionSpec org.apache.texera.amber.operator.visualization.continuousErrorBands.BandConfigSpec\"` — 23 tests, all green - `sbt \"WorkflowOperator/Test/scalafmtCheck\"` — clean - CI to confirm ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Opus 4.7 [1M context]) Report URL: https://github.com/apache/texera/actions/runs/27856133198 With regards, GitHub Actions via GitBox
