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