fix(09): WR-06 default a relation list to its first sortable column

This commit is contained in:
Jakub Zych
2026-10-01 21:07:54 +02:00
parent 9bca815b1b
commit 889250c8fb
2 changed files with 32 additions and 4 deletions

View File

@@ -94,6 +94,27 @@ func TestRelationStablePages(t *testing.T) {
}
}
// TestRelationDefaultSort pins WR-06: with no sort in the request the panel
// orders by its first sortable column, or by the primary key when none is
// sortable, instead of rejecting the request.
func TestRelationDefaultSort(t *testing.T) {
schema := &RelationSchema{
View: RelationPanel{List: RelationList{Columns: []RelationColumn{{Key: "label"}, {Key: "email", Sortable: true}}}},
Manage: RelationPanel{List: RelationList{Columns: []RelationColumn{{Key: "label"}}}},
}
_, _, key, _, err := normalizeRelationQuery(schema, false, RelationQuery{})
if err != nil || key != "email" {
t.Fatalf("view default sort = %q err=%v, want the first sortable column", key, err)
}
_, _, key, _, err = normalizeRelationQuery(schema, true, RelationQuery{})
if err != nil || key != "" {
t.Fatalf("manage default sort = %q err=%v, want none (primary key order)", key, err)
}
if _, _, _, _, err := normalizeRelationQuery(schema, false, RelationQuery{Sort: "label"}); err == nil {
t.Fatal("an explicit sort on a non-sortable column was accepted")
}
}
func TestRelationCandidateExclusions(t *testing.T) {
contract := relationTestController{}.AdminRelationContracts()[0]
ids, err := contract.ExcludedRelatedIDs(&relationTestOwner{OwnerID: 41})