import Foundation import Testing @testable import PediFoods private func makeCard(nickname: String? = nil, brand: String? = "visa") -> SavedCard { let json = """ {"id":"1","nickname":\(nickname.map { "\"\($0)\"" } ?? "null"),"holderName":"Jane Doe", "last4":"4242","brand":\(brand.map { "\"\($0)\"" } ?? "null"), "expiryMonth":"09","expiryYear":"2027","isDefault":false} """ return try! JSONDecoder().decode(SavedCard.self, from: Data(json.utf8)) } @Test("SavedCard.displayLabel uses the nickname when present") func savedCardDisplayLabelUsesNickname() { let card = makeCard(nickname: "Meu cartão") #expect(card.displayLabel == "Meu cartão") } @Test("SavedCard.displayLabel falls back to capitalized brand + last4 when nickname is absent") func savedCardDisplayLabelFallsBackToBrand() { let card = makeCard(nickname: nil, brand: "visa") #expect(card.displayLabel == "Visa •••• 4242") } @Test("SavedCard.displayLabel falls back to a generic label when both nickname and brand are absent") func savedCardDisplayLabelFallsBackToGeneric() { let card = makeCard(nickname: nil, brand: nil) #expect(card.displayLabel == "Cartão •••• 4242") } @Test("SavedCard.displayLabel ignores an empty-string nickname") func savedCardDisplayLabelIgnoresEmptyNickname() { let card = makeCard(nickname: "", brand: "mastercard") #expect(card.displayLabel == "Mastercard •••• 4242") } @Test("SavedCard.expiryLabel joins month and year with a slash") func savedCardExpiryLabel() { let card = makeCard() #expect(card.expiryLabel == "09/2027") }