diff options
| author | Christian Cleberg <[email protected]> | 2026-04-01 22:03:14 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-01 22:03:14 -0500 |
| commit | 902055d5eaa7f5512b76e22f57df3939f956181f (patch) | |
| tree | 08b7bb220b980adc9eaa9c195dc26e846707b311 /HutchTests | |
| parent | 209155dc431cf70d9c8dba20625bab7e3b1a5085 (diff) | |
| download | hutch-902055d5eaa7f5512b76e22f57df3939f956181f.tar.gz hutch-902055d5eaa7f5512b76e22f57df3939f956181f.tar.bz2 hutch-902055d5eaa7f5512b76e22f57df3939f956181f.zip | |
Add tracker management (delete/update, ACLs, labels)v2.7.0
- Add swipe actions (delete/edit) to tracker list
- Add tracker settings menu on detail screen
- Implement updateTracker and deleteTracker mutations
- Implement ACL management (updateUserACL, updateTrackerACL, deleteACL)
- Implement label management (createLabel, updateLabel, deleteLabel)
- Add dedicated UI flows for ACLs and labels
- Ensure state refresh after mutations
- Handle loading, errors, and destructive confirmations
Implements: https://todo.sr.ht/~ccleberg/Hutch/12
Diffstat (limited to 'HutchTests')
| -rw-r--r-- | HutchTests/TrackerManagementViewModelTests.swift | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/HutchTests/TrackerManagementViewModelTests.swift b/HutchTests/TrackerManagementViewModelTests.swift new file mode 100644 index 0000000..78edfc9 --- /dev/null +++ b/HutchTests/TrackerManagementViewModelTests.swift @@ -0,0 +1,36 @@ +import Testing +@testable import Hutch + +struct TrackerManagementViewModelTests { + + @Test + func normalizedUsernameStripsLeadingTildeAndWhitespace() { + #expect(TrackerManagementViewModel.normalizedUsername(" ~alice ") == "alice") + #expect(TrackerManagementViewModel.normalizedUsername("bob") == "bob") + } + + @Test + func hexColorValidationRequiresPoundAndSixHexDigits() { + #expect(TrackerManagementViewModel.isValidHexColor("#a1B2c3")) + #expect(!TrackerManagementViewModel.isValidHexColor("a1B2c3")) + #expect(!TrackerManagementViewModel.isValidHexColor("#12345")) + #expect(!TrackerManagementViewModel.isValidHexColor("#12GG45")) + } + + @Test + func trackerACLPermissionsExposeBooleanFlags() { + let permissions = TrackerACLPermissions( + browse: true, + submit: false, + comment: true, + edit: false, + triage: true + ) + + #expect(permissions.browse) + #expect(!permissions.submit) + #expect(permissions.comment) + #expect(!permissions.edit) + #expect(permissions.triage) + } +} |
