mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-24 21:45:20 +00:00
116 lines
3.2 KiB
Swift
116 lines
3.2 KiB
Swift
import BitFoundation
|
|
import Foundation
|
|
import Testing
|
|
@testable import bitchat
|
|
|
|
struct ChatUnreadStateResolverTests {
|
|
@Test
|
|
func directUnreadPeerReturnsTrue() {
|
|
let peerID = PeerID(str: "peer-a")
|
|
let context = ChatUnreadPeerContext(
|
|
peerID: peerID,
|
|
noiseKeyPeerID: nil,
|
|
nostrPeerID: nil,
|
|
nickname: nil
|
|
)
|
|
|
|
#expect(ChatUnreadStateResolver.hasUnreadMessages(
|
|
for: context,
|
|
unreadPrivateMessages: [peerID],
|
|
privateChats: [:]
|
|
))
|
|
}
|
|
|
|
@Test
|
|
func stableNoiseKeyUnreadReturnsTrue() {
|
|
let peerID = PeerID(str: "ephemeral")
|
|
let stableID = PeerID(str: "stable")
|
|
let context = ChatUnreadPeerContext(
|
|
peerID: peerID,
|
|
noiseKeyPeerID: stableID,
|
|
nostrPeerID: nil,
|
|
nickname: nil
|
|
)
|
|
|
|
#expect(ChatUnreadStateResolver.hasUnreadMessages(
|
|
for: context,
|
|
unreadPrivateMessages: [stableID],
|
|
privateChats: [:]
|
|
))
|
|
}
|
|
|
|
@Test
|
|
func nostrConversationUnreadReturnsTrue() {
|
|
let peerID = PeerID(str: "ephemeral")
|
|
let nostrID = PeerID(nostr_: "abcdef")
|
|
let context = ChatUnreadPeerContext(
|
|
peerID: peerID,
|
|
noiseKeyPeerID: nil,
|
|
nostrPeerID: nostrID,
|
|
nickname: nil
|
|
)
|
|
|
|
#expect(ChatUnreadStateResolver.hasUnreadMessages(
|
|
for: context,
|
|
unreadPrivateMessages: [nostrID],
|
|
privateChats: [:]
|
|
))
|
|
}
|
|
|
|
@Test
|
|
func temporaryGeoDMWithMatchingNicknameReturnsTrue() {
|
|
let peerID = PeerID(str: "mesh-peer")
|
|
let geoDM = PeerID(nostr_: "0123456789abcdef")
|
|
let context = ChatUnreadPeerContext(
|
|
peerID: peerID,
|
|
noiseKeyPeerID: nil,
|
|
nostrPeerID: nil,
|
|
nickname: "Alice"
|
|
)
|
|
let message = BitchatMessage(
|
|
sender: "alice",
|
|
content: "hi",
|
|
timestamp: Date(timeIntervalSince1970: 1),
|
|
isRelay: false,
|
|
originalSender: nil,
|
|
isPrivate: true,
|
|
recipientNickname: "me",
|
|
senderPeerID: geoDM
|
|
)
|
|
|
|
#expect(ChatUnreadStateResolver.hasUnreadMessages(
|
|
for: context,
|
|
unreadPrivateMessages: [geoDM],
|
|
privateChats: [geoDM: [message]]
|
|
))
|
|
}
|
|
|
|
@Test
|
|
func unmatchedUnreadStateReturnsFalse() {
|
|
let peerID = PeerID(str: "mesh-peer")
|
|
let geoDM = PeerID(nostr_: "0123456789abcdef")
|
|
let context = ChatUnreadPeerContext(
|
|
peerID: peerID,
|
|
noiseKeyPeerID: nil,
|
|
nostrPeerID: nil,
|
|
nickname: "Alice"
|
|
)
|
|
let message = BitchatMessage(
|
|
sender: "bob",
|
|
content: "hi",
|
|
timestamp: Date(timeIntervalSince1970: 1),
|
|
isRelay: false,
|
|
originalSender: nil,
|
|
isPrivate: true,
|
|
recipientNickname: "me",
|
|
senderPeerID: geoDM
|
|
)
|
|
|
|
#expect(!ChatUnreadStateResolver.hasUnreadMessages(
|
|
for: context,
|
|
unreadPrivateMessages: [geoDM],
|
|
privateChats: [geoDM: [message]]
|
|
))
|
|
}
|
|
}
|