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}