Files
Luma/Tests/ChatArchiveTests.swift
T
wt e54e95489e
iOS CI / Build and Test SwiftUI App (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build Unsigned iOS IPA (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build macOS ZIP (push) Canceled after 0s
Update ChatArchiveTests.swift
2026-08-17 17:26:15 +07:00

55 lines
2.1 KiB
Swift

import XCTest
@testable import Luma
final class ChatArchiveTests: XCTestCase {
func testSnapshotRoundTrip() async throws {
let jid = "test-\(UUID().uuidString)@example.org"
let archive = ChatArchive(accountJID: jid)
let conversation = Conversation(jid: "bob@example.org", displayName: "Bob")
let message = ChatMessage(
conversationID: conversation.id,
senderJID: jid,
body: "Encrypted hello",
timestamp: Date(timeIntervalSince1970: 1_700_000_000),
direction: .outgoing,
delivery: .sent,
security: .omemo
)
try await archive.save(.init(
conversations: [conversation],
messages: [message],
locallyDeletedMessageIDs: ["deleted-message-id"],
rosterContactJIDs: [conversation.jid],
lastSuccessfulMAMSync: Date(timeIntervalSince1970: 1_700_000_000),
lastSuccessfulMAMCursor: "mam-cursor-42"
))
let loaded = await archive.load()
XCTAssertEqual(loaded.conversations, [conversation])
XCTAssertEqual(loaded.messages, [message])
XCTAssertEqual(loaded.locallyDeletedMessageIDs, Set(["deleted-message-id"]))
XCTAssertEqual(loaded.rosterContactJIDs, Set([conversation.jid]))
XCTAssertEqual(
loaded.lastSuccessfulMAMSync,
Date(timeIntervalSince1970: 1_700_000_000)
)
XCTAssertEqual(loaded.lastSuccessfulMAMCursor, "mam-cursor-42")
XCTAssertEqual(loaded.schemaVersion, ChatArchive.Snapshot.currentSchemaVersion)
try await archive.erase()
}
func testLegacySnapshotDefaultsToSchemaOne() throws {
let data = Data(
#"{"conversations":[],"messages":[],"locallyDeletedMessageIDs":[]}"#.utf8
)
let snapshot = try JSONDecoder().decode(ChatArchive.Snapshot.self, from: data)
XCTAssertEqual(snapshot.schemaVersion, 1)
XCTAssertTrue(snapshot.rosterContactJIDs.isEmpty)
XCTAssertNil(snapshot.lastSuccessfulMAMSync)
XCTAssertNil(snapshot.lastSuccessfulMAMCursor)
}
}