1.6 KiB
1.6 KiB
Plan: pkg/ui (3.8%)
Existing
object_dataops_test.go(indexes, views, sequences, scripts, domain assignment)- Rules:
pkg/ui/ui_rules.md
Layers
| Layer | Files | Testable? | Approach |
|---|---|---|---|
| Data ops | column_, relation_, domain_, schema_, table_, database_dataops.go | Yes, pure | CRUD tests per file: create, duplicate, update/rename, delete, not-found, bounds, UpdateDate side effects |
| Pure helpers | sortedKeys, schemaLocations, tableLocations, getColumnNames, parseSkipTablesUI, help-text getters |
Yes | Table-driven |
| Kind definitions | indexKind/viewKind/sequenceKind/scriptKind |
Yes | Assert row builders and form-to-model mapping without rendering |
| Load/save | loadDatabase, saveDatabase, createNewDatabase, importAndMergeDatabase, performMerge |
Partly | Temp files from tests/assets; verify format dispatch and error paths; avoid UI dialogs |
| Screens | *_screens.go, dialogs.go, main_menu.go | Yes, via simulation | tview app on tcell SimulationScreen; inject key events; assert navigation, form submit mutates model, cancel leaves it unchanged, delete confirm paths |
Order
- Data ops (largest gain, no tview)
- Pure helpers and kinds
- Load/save logic
- Screen tests on simulation screen (menu, lists, forms, confirm dialogs, load/save)
Decision
- Screen smoke tests via tview simulation screen are in scope (tcell
SimulationScreen); drive keys/events, assert no panic and expected state.
Live DB cases (dbtest)
- Load/save and import-merge from a live pgsql source:
dbtest.sh up postgres; skip whenRELSPEC_TEST_PG_CONNunset.