1
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import Foundation
|
||||
|
||||
@main
|
||||
struct AdminAttachmentsTests {
|
||||
static func main() throws {
|
||||
let first = #"{"id":"one","name":"first.pdf","kind":"invoice","mime":"application/pdf","size":10}"#
|
||||
let second = #"{"id":"two","name":"second.pdf","kind":"invoice","mime":"application/pdf","size":20}"#
|
||||
let decoder = JSONDecoder()
|
||||
let legacy = try decoder.decode(AdminAttachmentList.self, from: Data(first.utf8))
|
||||
precondition(legacy.files.count == 1 && legacy.files[0].id == "one")
|
||||
let multiple = try decoder.decode(AdminAttachmentList.self, from: Data("[\(first),\(second)]".utf8))
|
||||
precondition(multiple.files.map(\.id) == ["one", "two"])
|
||||
let roundTrip = try decoder.decode(AdminAttachmentList.self, from: JSONEncoder().encode(multiple))
|
||||
precondition(roundTrip.files.map(\.id) == ["one", "two"])
|
||||
let empty = try decoder.decode(AdminAttachmentList.self, from: Data("[]".utf8))
|
||||
precondition(empty.files.isEmpty)
|
||||
let mixed = try decoder.decode([String: AdminAttachmentList].self, from: Data("{\"invoice\":[\(first),\(second)],\"legacy\":\(first)}".utf8))
|
||||
precondition(mixed.values.flatMap { $0.files }.count == 3)
|
||||
print("Admin attachment compatibility tests passed")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user