blob: 547c6f3fec11e8f4e686e1a9f9f9ea94fe407281 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import Foundation
import Testing
@testable import Hutch
struct GitObjectTests {
@Test
@MainActor
func decodesMetadataOnlyTextBlobUsingTypename() throws {
let data = Data(#"{"type":"BLOB","__typename":"TextBlob","id":"blob123","shortId":"blob123","size":42}"#.utf8)
let blob = try JSONDecoder().decode(GitObject.self, from: data)
guard case .textBlob(let textBlob) = blob else {
Issue.record("Expected metadata-only blob to decode as text blob.")
return
}
#expect(textBlob.id == "blob123")
#expect(textBlob.size == 42)
#expect(textBlob.text == nil)
}
@Test
@MainActor
func decodesMetadataOnlyBinaryBlobUsingTypename() throws {
let data = Data(#"{"type":"BLOB","__typename":"BinaryBlob","id":"blob456","shortId":"blob456","size":64}"#.utf8)
let blob = try JSONDecoder().decode(GitObject.self, from: data)
guard case .binaryBlob(let binaryBlob) = blob else {
Issue.record("Expected metadata-only blob to decode as binary blob.")
return
}
#expect(binaryBlob.id == "blob456")
#expect(binaryBlob.size == 64)
#expect(binaryBlob.content == nil)
}
}
|