diff options
| author | Christian Cleberg <[email protected]> | 2026-04-12 22:30:22 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-12 22:30:22 -0500 |
| commit | 54d037548261c1546555a89a6a803b542a769880 (patch) | |
| tree | c99bf489071d40e4acc0d99aae769abc8e614497 /HutchTests/RepositorySettingsViewModelTests.swift | |
| parent | 7a875798fea9321bad2636040d9be2c30bc0fa8f (diff) | |
| download | hutch-54d037548261c1546555a89a6a803b542a769880.tar.gz hutch-54d037548261c1546555a89a6a803b542a769880.tar.bz2 hutch-54d037548261c1546555a89a6a803b542a769880.zip | |
feat: add repo settings management
Implements: https://todo.sr.ht/~ccleberg/hutch/42
Implements: https://todo.sr.ht/~ccleberg/hutch/43
Implements: https://todo.sr.ht/~ccleberg/hutch/44
Diffstat (limited to 'HutchTests/RepositorySettingsViewModelTests.swift')
| -rw-r--r-- | HutchTests/RepositorySettingsViewModelTests.swift | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/HutchTests/RepositorySettingsViewModelTests.swift b/HutchTests/RepositorySettingsViewModelTests.swift index 5b06539..3b76da1 100644 --- a/HutchTests/RepositorySettingsViewModelTests.swift +++ b/HutchTests/RepositorySettingsViewModelTests.swift @@ -89,6 +89,32 @@ struct RepositorySettingsViewModelTests { #expect(viewModel.selectedHeadReferenceForSave() == nil) } + @Test + @MainActor + func metadataValidationRejectsEmptyOrInvalidNames() { + #expect(RepositorySettingsViewModel.metadataValidationMessage(for: "") == "Enter a repository name.") + #expect(RepositorySettingsViewModel.metadataValidationMessage(for: "repo/name") == "Repository names can't contain '/'.") + #expect(RepositorySettingsViewModel.metadataValidationMessage(for: "repo name") == "Repository names can't contain spaces.") + } + + @Test + @MainActor + func metadataDirtyStateTracksNormalizedInputs() { + let viewModel = RepositorySettingsViewModel( + repository: makeRepository(headName: "refs/heads/main"), + branches: [ReferenceDetail(name: "refs/heads/main", target: nil, date: nil)], + client: SRHTClient(token: "test-token") + ) + + #expect(viewModel.isMetadataDirty == false) + viewModel.editedDescription = " updated " + #expect(viewModel.isMetadataDirty) + + viewModel.editedDescription = "desc" + viewModel.editedName = " repo " + #expect(viewModel.isMetadataDirty == false) + } + @MainActor private func makeRepository(headName: String?) -> RepositorySummary { RepositorySummary( |
