summaryrefslogtreecommitdiff
path: root/HutchTests/RepositorySettingsViewModelTests.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-12 22:30:22 -0500
committerChristian Cleberg <[email protected]>2026-04-12 22:30:22 -0500
commit54d037548261c1546555a89a6a803b542a769880 (patch)
treec99bf489071d40e4acc0d99aae769abc8e614497 /HutchTests/RepositorySettingsViewModelTests.swift
parent7a875798fea9321bad2636040d9be2c30bc0fa8f (diff)
downloadhutch-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.swift26
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(