From 902055d5eaa7f5512b76e22f57df3939f956181f Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Wed, 1 Apr 2026 22:03:14 -0500 Subject: Add tracker management (delete/update, ACLs, labels) - 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 --- HutchTests/TrackerManagementViewModelTests.swift | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 HutchTests/TrackerManagementViewModelTests.swift (limited to 'HutchTests/TrackerManagementViewModelTests.swift') 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) + } +} -- cgit v1.2.3