UnitChatViewControllerTest.swift 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. //
  2. // SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
  3. // SPDX-License-Identifier: GPL-3.0-or-later
  4. //
  5. import XCTest
  6. @testable import NextcloudTalk
  7. final class UnitChatViewControllerTest: TestBaseRealm {
  8. func testLocalMention() throws {
  9. let activeAccount = NCDatabaseManager.sharedInstance().activeAccount()
  10. let roomName = "Expire Messages Test Room"
  11. let roomToken = "expToken"
  12. let room = NCRoom()
  13. room.token = roomToken
  14. room.name = roomName
  15. room.accountId = activeAccount.accountId
  16. // Create 2 messages which are in different sections
  17. let expMessage1 = NCChatMessage()
  18. expMessage1.internalId = "internal1"
  19. expMessage1.accountId = activeAccount.accountId
  20. expMessage1.actorDisplayName = activeAccount.userDisplayName
  21. expMessage1.actorId = activeAccount.userId
  22. expMessage1.actorType = "users"
  23. expMessage1.timestamp = Int(Date().timeIntervalSince1970) - 1000000
  24. expMessage1.expirationTimestamp = Int(Date().timeIntervalSince1970) - 1000
  25. expMessage1.token = roomToken
  26. expMessage1.message = "Message 1"
  27. let expMessage2 = NCChatMessage()
  28. expMessage2.internalId = "internal2"
  29. expMessage2.accountId = activeAccount.accountId
  30. expMessage2.actorDisplayName = activeAccount.userDisplayName
  31. expMessage2.actorId = activeAccount.userId
  32. expMessage2.actorType = "users"
  33. expMessage2.timestamp = Int(Date().timeIntervalSince1970)
  34. expMessage2.expirationTimestamp = Int(Date().timeIntervalSince1970) - 1000
  35. expMessage2.token = roomToken
  36. expMessage2.message = "Message 2"
  37. try? realm.transaction {
  38. realm.add(room)
  39. realm.add(expMessage1)
  40. realm.add(expMessage2)
  41. }
  42. XCTAssertEqual(NCChatMessage.allObjects().count, 2)
  43. let chatViewController = ChatViewController(for: room)!
  44. let messageArray = [expMessage1, expMessage2].map { NCChatMessage(value: $0) }
  45. chatViewController.appendMessages(messages: messageArray)
  46. chatViewController.removeExpiredMessages()
  47. // Since removeExpiredMessages is dispatched, we need to wait until it was scheduled
  48. let exp = expectation(description: "\(#function)\(#line)")
  49. DispatchQueue.main.async {
  50. exp.fulfill()
  51. }
  52. waitForExpectations(timeout: TestConstants.timeoutShort, handler: nil)
  53. XCTAssertEqual(NCChatMessage.allObjects().count, 0)
  54. }
  55. func testFrequentlyEmojis() throws {
  56. var activeAccount = NCDatabaseManager.sharedInstance().activeAccount()
  57. XCTAssertEqual(activeAccount.frequentlyUsedEmojis, ["👍", "❤️", "😂", "😅"])
  58. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "👍", forAccount: activeAccount.accountId)
  59. activeAccount = NCDatabaseManager.sharedInstance().activeAccount()
  60. XCTAssertEqual(activeAccount.frequentlyUsedEmojis, ["👍", "❤️", "😂", "😅"])
  61. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🙈", forAccount: activeAccount.accountId)
  62. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🙈", forAccount: activeAccount.accountId)
  63. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🙈", forAccount: activeAccount.accountId)
  64. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🙈", forAccount: activeAccount.accountId)
  65. activeAccount = NCDatabaseManager.sharedInstance().activeAccount()
  66. XCTAssertEqual(activeAccount.frequentlyUsedEmojis, ["🙈", "👍", "❤️", "😂"])
  67. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🇫🇮", forAccount: activeAccount.accountId)
  68. activeAccount = NCDatabaseManager.sharedInstance().activeAccount()
  69. XCTAssertEqual(activeAccount.frequentlyUsedEmojis, ["🙈", "🇫🇮", "👍", "❤️"])
  70. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🇫🇮", forAccount: activeAccount.accountId)
  71. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🇫🇮", forAccount: activeAccount.accountId)
  72. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🇫🇮", forAccount: activeAccount.accountId)
  73. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🇫🇮", forAccount: activeAccount.accountId)
  74. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🇫🇮", forAccount: activeAccount.accountId)
  75. activeAccount = NCDatabaseManager.sharedInstance().activeAccount()
  76. XCTAssertEqual(activeAccount.frequentlyUsedEmojis, ["🇫🇮", "🙈", "👍", "❤️"])
  77. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "😵‍💫", forAccount: activeAccount.accountId)
  78. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "😵‍💫", forAccount: activeAccount.accountId)
  79. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "😵‍💫", forAccount: activeAccount.accountId)
  80. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🤷‍♂️", forAccount: activeAccount.accountId)
  81. NCDatabaseManager.sharedInstance().increaseEmojiUsage(forEmoji: "🤷‍♂️", forAccount: activeAccount.accountId)
  82. activeAccount = NCDatabaseManager.sharedInstance().activeAccount()
  83. XCTAssertEqual(activeAccount.frequentlyUsedEmojis, ["🇫🇮", "🙈", "😵‍💫", "🤷‍♂️"])
  84. }
  85. }