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