The GitHub Actions job "Required Checks" on 
texera.git/gh-readonly-queue/main/pr-5697-0f79251c56d36ca9b4c05e53cf2625a6ad49a131
 has succeeded.
Run started by GitHub user Yicong-Huang (triggered by Yicong-Huang).

Head commit for run:
612a79cbe48dc915e2975d856541847a918322b4 / Xinyuan Lin <[email protected]>
test(workflow-operator): add unit test coverage for visualization chart-config 
classes (#5697)

### What changes were proposed in this PR?

Pin behavior of four previously-uncovered Jackson-annotated config
classes that back visualization operators in
`common/workflow-operator/operator/visualization/`. No production-code
changes.

| Spec | Source class | Tests |
| --- | --- | --- |
| `TablesConfigSpec` | `TablesConfig` | 7 |
| `NestedTableConfigSpec` | `NestedTableConfig` | 9 |
| `FigureFactoryTableConfigSpec` | `FigureFactoryTableConfig` | 7 |
| `DumbbellDotConfigSpec` | `DumbbellDotConfig` | 9 |

All four spec files follow the `<srcClassName>Spec.scala` one-to-one
convention.

**Behavior pinned (each class)**

| Surface | Contract |
| --- | --- |
| Default field values | empty strings on a fresh instance |
| Mutability | `var` fields are assignable post-construction |
| JSON round-trip via `objectMapper.writeValueAsString` + `readValue` |
preserves every field |
| `@JsonProperty(required = true)` annotation | present on every
documented required field — verified via reflection |
| Distinct instances | no static-field leakage across `new` calls |

**Per-class specifics**

| Spec | Additional pins |
| --- | --- |
| `TablesConfigSpec` | `@NotNull` annotation on `attributeName` (jakarta
validation) |
| `NestedTableConfigSpec` | `newName` serializes under wire-key `name`
(per `@JsonProperty(value = "name")`); the field name `newName` MUST NOT
appear as a JSON key; deserialization from `{"name":...}` re-populates
`newName` |
| `FigureFactoryTableConfigSpec` | `@AutofillAttributeName` annotation
on `attributeName` (UI dropdown contract) |
| `DumbbellDotConfigSpec` | `dotValue` serializes under wire-key `dot`;
`@NotNull` + `@AutofillAttributeName` annotations; class-level
`@JsonSchemaInject` restricts `dot` to integer/long/double attribute
types |

### Any related issues, documentation, discussions?

Closes #5694.

### How was this PR tested?

Pure unit-test additions; verified locally with:

- `sbt "WorkflowOperator/testOnly
org.apache.texera.amber.operator.visualization.tablesChart.TablesConfigSpec
org.apache.texera.amber.operator.visualization.nestedTable.NestedTableConfigSpec
org.apache.texera.amber.operator.visualization.figureFactoryTable.FigureFactoryTableConfigSpec
org.apache.texera.amber.operator.visualization.dumbbellPlot.DumbbellDotConfigSpec"`
— 32 tests, all green
- `sbt scalafmtCheckAll` — 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/27528452106

With regards,
GitHub Actions via GitBox

Reply via email to