Adds tests, one test-kit builder and goldens only; no production file changes. TestPlanLaddersGolden builds three ladders (Hosting with Basic and Shared, Support with Shared, Empty with no tier), five products (a shared one, an add-on, one with no category, a draft), three organization types (defaulting to Hosting, to nothing and to the empty ladder) and an organization holding Basic, and compares with files under testdata/operator_plan_ladders: the topology's columns, rank rows, shared products, off-ladder strip and type summary together with the ladder list (page); the ladder page's tiers with their organization counts (detail); and the reorder preview's order for the ladder's own order (preview). The page lists every ladder in the database, so the files hold the fixture's ladders, products and types. The properties subtest holds the whole grid to the ladders' own reads: rows ascend by rank, every row has one cell per column, and every column, the fixture's or not, counts what CountActiveAttachmentsByLadder returns and holds the tiers ListTiersByLadderWithProducts returns. Each file was read against the fixture before it was committed; a type whose default ladder has no rank-0 tier reads as no default. TestPlanLaddersReadFailures pins, per read (ladder listing, shared products, ladder counts, tier reads, product list, rank-0 listing, organization types, tier counts on the ladder page and in the preview), what the pages show when that read fails. world gains AddTier. The read-count table gains plan-ladders (4 reads per ladder), plan-ladder-detail (1 per tier) and tier-reorder-preview (2 per tier), each as the plan predicted; the table's request can now be a POST. Names and results of ./internal/server and ./internal/testkit/... match the parent apart from the new tests, which pass: TestPlanLaddersGolden and its four subtests, TestPlanLaddersReadFailures and its nine, and the three read-count rows. A second run without -update leaves the tree unchanged, and the tests pass three runs in a row after a reset. Thirty-two edits to the topology and the ladder code, each breaking one fact, fail the test that names it. Unprobed: each column's and list row's IsActive and description, the org-type summary's display names (moved unchanged); the list's name filter and paging, which no section of this step edits; the order of same-named products in the shared index, which is unspecified today and which no section of this step fixes; the reorder preview's classification path (rank 0 does not change in the fixture); the topology's template rendering, which its own tests keep.
17 lines
246 B
JSON
17 lines
246 B
JSON
[
|
|
{
|
|
"ProductID": "<product:Basic>",
|
|
"Name": "Basic",
|
|
"Rank": 0,
|
|
"Attached": 1,
|
|
"Holders": true
|
|
},
|
|
{
|
|
"ProductID": "<product:Shared>",
|
|
"Name": "Shared",
|
|
"Rank": 1,
|
|
"Attached": 0,
|
|
"Holders": false
|
|
}
|
|
]
|