mirror of
https://codeberg.org/secana/Forji.git
synced 2026-06-16 05:13:55 -07:00
62 lines
2.3 KiB
Swift
62 lines
2.3 KiB
Swift
import Foundation
|
|
import Testing
|
|
@testable import Forji
|
|
|
|
@MainActor
|
|
struct InstanceFormViewTests {
|
|
private func makeInstance(
|
|
server: String = "https://a.com",
|
|
username: String = "user",
|
|
name: String = "Account",
|
|
) -> ForgejoInstance {
|
|
ForgejoInstance(serverURL: server, username: username, name: name)
|
|
}
|
|
|
|
// MARK: - accountAlreadyExists
|
|
|
|
@Test func detectsDuplicateServerAndUsername() {
|
|
let existing = [makeInstance(server: "https://a.com", username: "user", name: "Work")]
|
|
#expect(InstanceFormView.accountAlreadyExists(
|
|
serverURL: "https://a.com", username: "user", in: existing,
|
|
))
|
|
}
|
|
|
|
@Test func differentServerIsNotDuplicate() {
|
|
let existing = [makeInstance(server: "https://a.com", username: "user")]
|
|
#expect(!InstanceFormView.accountAlreadyExists(
|
|
serverURL: "https://b.com", username: "user", in: existing,
|
|
))
|
|
}
|
|
|
|
@Test func differentUsernameIsNotDuplicate() {
|
|
let existing = [makeInstance(server: "https://a.com", username: "user")]
|
|
#expect(!InstanceFormView.accountAlreadyExists(
|
|
serverURL: "https://a.com", username: "other", in: existing,
|
|
))
|
|
}
|
|
|
|
@Test func emptyListIsNeverDuplicate() {
|
|
#expect(!InstanceFormView.accountAlreadyExists(
|
|
serverURL: "https://a.com", username: "user", in: [],
|
|
))
|
|
}
|
|
|
|
// MARK: - excluding (edit path)
|
|
|
|
@Test func editingInstanceWithoutChangingIdentityIsAllowed() {
|
|
// Editing only the name on an existing account must not flag itself as a duplicate.
|
|
let instance = makeInstance(server: "https://a.com", username: "user", name: "Old")
|
|
#expect(!InstanceFormView.accountAlreadyExists(
|
|
serverURL: "https://a.com", username: "user", in: [instance], excluding: instance,
|
|
))
|
|
}
|
|
|
|
@Test func editingIntoAnotherAccountsIdentityIsRejected() {
|
|
// Two distinct accounts; editing the second to match the first must be caught.
|
|
let first = makeInstance(server: "https://a.com", username: "user", name: "First")
|
|
let second = makeInstance(server: "https://b.com", username: "user", name: "Second")
|
|
#expect(InstanceFormView.accountAlreadyExists(
|
|
serverURL: "https://a.com", username: "user", in: [first, second], excluding: second,
|
|
))
|
|
}
|
|
}
|