summaryrefslogtreecommitdiff
path: root/HutchTests/GitObjectTests.swift
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)
    }
}