import ThreemaEssentials
import XCTest
@testable import ThreemaFramework
final class PushSettingTests: XCTestCase {
private var databasePreparer: TestDatabasePreparer!
private var conversation: ConversationEntity!
override func setUpWithError() throws {
AppGroup.setGroupID("group.ch.threema")
let testDatabase = TestDatabase()
databasePreparer = testDatabase.preparer
databasePreparer.save {
conversation = databasePreparer.createConversation(
typing: false,
unreadMessageCount: 0,
visibility: .default,
complete: nil
)
}
}
func testEncodeDecodeIdentityWithDefaultValues() throws {
var pushSetting = PushSetting(identity: ThreemaIdentity("ECHOECHO"))
let encoder = JSONEncoder()
let data = try encoder.encode(pushSetting)
print(String(data: data, encoding: .utf8)!)
let decoder = JSONDecoder()
var result = try decoder.decode(PushSetting.self, from: data)
XCTAssertEqual(result.identity, pushSetting.identity)
XCTAssertNil(result.groupIdentity)
XCTAssertEqual(result.type, pushSetting.type)
XCTAssertEqual(result.muted, pushSetting.muted)
XCTAssertEqual(result.mentioned, pushSetting.mentioned)
XCTAssertNil(result.periodOffTillDate)
}
func testEncodeDecodeGroupIdentityWithDefaultValues() throws {
var pushSetting =
PushSetting(groupIdentity: GroupIdentity(
id: BytesUtility.generateGroupID(),
creator: ThreemaIdentity("ECHOECHO")
))
pushSetting.type = .offPeriod
pushSetting.setPeriodOffTime(.time1Day)
let encoder = JSONEncoder()
let data = try encoder.encode(pushSetting)
print(String(data: data, encoding: .utf8)!)
let decoder = JSONDecoder()
var result = try decoder.decode(PushSetting.self, from: data)
XCTAssertNil(result.identity)
XCTAssertEqual(result.groupIdentity, pushSetting.groupIdentity)
XCTAssertEqual(result.type, pushSetting.type)
XCTAssertEqual(result.muted, pushSetting.muted)
XCTAssertEqual(result.mentioned, pushSetting.mentioned)
XCTAssertTrue(result.periodOffTillDate?.compare(Date()) == .orderedDescending)
}
func testMentionContents() {
var textMessage1: BaseMessageEntity!
databasePreparer.save {
textMessage1 = databasePreparer.createTextMessage(
conversation: conversation,
text: "Hello @[@@@@@@@@]",
date: Date(),
delivered: false,
id: BytesUtility.generateRandomBytes(length: ThreemaProtocol.messageIDLength)!,
isOwn: false,
read: false,
sent: false,
userack: false,
sender: nil,
remoteSentDate: Date(timeIntervalSinceNow: -100)
)
}
XCTAssertTrue(MarkupParser().isMeOrAllMention(in: textMessage1.contentToCheckForMentions() ?? ""))
var textMessage2: BaseMessageEntity!
databasePreparer.save {
textMessage2 = databasePreparer.createTextMessage(
conversation: conversation,
text: "Hello!",
date: Date(),
delivered: false,
id: BytesUtility.generateRandomBytes(length: ThreemaProtocol.messageIDLength)!,
isOwn: false,
read: false,
sent: false,
userack: false,
sender: nil,
remoteSentDate: Date(timeIntervalSinceNow: -100)
)
}
XCTAssertFalse(MarkupParser().isMeOrAllMention(in: textMessage2.contentToCheckForMentions() ?? ""))
var fileMessage1: FileMessageEntity!
databasePreparer.save {
fileMessage1 = databasePreparer.createFileMessageEntity(
conversation: conversation,
caption: "Hello @[@@@@@@@@]"
)
}
XCTAssertTrue(MarkupParser().isMeOrAllMention(in: fileMessage1.contentToCheckForMentions() ?? ""))
var fileMessage2: FileMessageEntity!
databasePreparer.save {
fileMessage2 = databasePreparer.createFileMessageEntity(conversation: conversation, caption: "Hello!")
}
XCTAssertFalse(MarkupParser().isMeOrAllMention(in: fileMessage2.contentToCheckForMentions() ?? ""))
}
}
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland