498f407585
Introduce optional Apple account-backed credits with scoped gateway access while preserving local and BYOK paths. Refresh assistant behavior, tests, privacy disclosures, docs, and the website for the 2.0 experience.
83 lines
2.9 KiB
Swift
83 lines
2.9 KiB
Swift
@testable import OSGKeyboardShared
|
|
import XCTest
|
|
|
|
final class EditTransactionStoreTests: XCTestCase {
|
|
func testHistoryMutationOutboxIsOrderedAndIdempotent() throws {
|
|
let suite = "EditTransactionStoreTests.\(UUID().uuidString)"
|
|
let defaults = try XCTUnwrap(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let entryID = UUID()
|
|
let later = HistoryMutation(
|
|
sequence: 2,
|
|
action: .update,
|
|
entryID: entryID,
|
|
text: "later"
|
|
)
|
|
let earlier = HistoryMutation(
|
|
sequence: 1,
|
|
action: .update,
|
|
entryID: entryID,
|
|
text: "earlier"
|
|
)
|
|
|
|
HistoryMutationOutbox.enqueue(later, defaults: defaults)
|
|
HistoryMutationOutbox.enqueue(earlier, defaults: defaults)
|
|
HistoryMutationOutbox.enqueue(earlier, defaults: defaults)
|
|
XCTAssertEqual(
|
|
HistoryMutationOutbox.pending(defaults: defaults).map(\.id),
|
|
[earlier.id, later.id]
|
|
)
|
|
|
|
HistoryMutationOutbox.acknowledge(earlier.id, defaults: defaults)
|
|
XCTAssertEqual(
|
|
HistoryMutationOutbox.pending(defaults: defaults).map(\.id),
|
|
[later.id]
|
|
)
|
|
}
|
|
|
|
func testPendingTransactionRoundTrip() throws {
|
|
let suite = "PendingTextEditTransactionTests.\(UUID().uuidString)"
|
|
let defaults = try XCTUnwrap(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let mutation = HistoryMutation(
|
|
action: .update,
|
|
entryID: UUID(),
|
|
expectedRevision: 3,
|
|
text: "after"
|
|
)
|
|
let transaction = PendingTextEditTransaction(
|
|
deliveryMode: .replace,
|
|
beforeText: "before",
|
|
afterText: "after",
|
|
expectedFieldFingerprint: "field",
|
|
historyMutation: mutation
|
|
)
|
|
PendingTextEditTransactionStore.save(transaction, defaults: defaults)
|
|
XCTAssertEqual(
|
|
PendingTextEditTransactionStore.load(defaults: defaults),
|
|
transaction
|
|
)
|
|
PendingTextEditTransactionStore.clear(defaults: defaults)
|
|
XCTAssertNil(PendingTextEditTransactionStore.load(defaults: defaults))
|
|
}
|
|
|
|
func testHistoryMutationReceiptRoundTrip() throws {
|
|
let suite = "HistoryMutationReceiptTests.\(UUID().uuidString)"
|
|
let defaults = try XCTUnwrap(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
let receipt = HistoryMutationReceipt(
|
|
mutationID: UUID(),
|
|
entryID: UUID(),
|
|
revision: 4
|
|
)
|
|
HistoryMutationReceiptStore.save(receipt, defaults: defaults)
|
|
XCTAssertEqual(
|
|
HistoryMutationReceiptStore.receipt(
|
|
for: receipt.mutationID,
|
|
defaults: defaults
|
|
),
|
|
receipt
|
|
)
|
|
}
|
|
}
|