199 lines
8.2 KiB
Swift
199 lines
8.2 KiB
Swift
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import Foundation
|
|
import MobileCoreServices
|
|
|
|
private enum Gender {
|
|
case male
|
|
case female
|
|
}
|
|
|
|
class OCTManagerMock: NSObject, OCTManager {
|
|
var bootstrap: OCTSubmanagerBootstrap
|
|
var calls: OCTSubmanagerCalls
|
|
var chats: OCTSubmanagerChats
|
|
var files: OCTSubmanagerFiles
|
|
var friends: OCTSubmanagerFriends
|
|
var objects: OCTSubmanagerObjects
|
|
var user: OCTSubmanagerUser
|
|
|
|
var realm: RLMRealm
|
|
|
|
override init() {
|
|
let configuration = RLMRealmConfiguration.default()
|
|
configuration.inMemoryIdentifier = "test realm"
|
|
realm = try! RLMRealm(configuration: configuration)
|
|
|
|
bootstrap = OCTSubmanagerBootstrapMock()
|
|
calls = OCTSubmanagerCallsMock()
|
|
chats = OCTSubmanagerChatsMock()
|
|
files = OCTSubmanagerFilesMock()
|
|
friends = OCTSubmanagerFriendsMock()
|
|
objects = OCTSubmanagerObjectsMock(realm: realm)
|
|
user = OCTSubmanagerUserMock()
|
|
|
|
super.init()
|
|
|
|
populateRealm()
|
|
}
|
|
|
|
func configuration() -> OCTManagerConfiguration {
|
|
return OCTManagerConfiguration()
|
|
}
|
|
|
|
func exportToxSaveFile() throws -> String {
|
|
return "123"
|
|
}
|
|
|
|
func changeEncryptPassword(_ newPassword: String, oldPassword: String) -> Bool {
|
|
return true
|
|
}
|
|
|
|
func isManagerEncrypted(withPassword password: String) -> Bool {
|
|
return true
|
|
}
|
|
}
|
|
|
|
private extension OCTManagerMock {
|
|
func populateRealm() {
|
|
realm.beginWriteTransaction()
|
|
|
|
let f1 = addFriend(gender: .female, number: 1, connectionStatus: .TCP, status: .none)
|
|
let f2 = addFriend(gender: .male, number: 1, connectionStatus: .TCP, status: .busy)
|
|
let f3 = addFriend(gender: .female, number: 2, connectionStatus: .none, status: .none)
|
|
let f4 = addFriend(gender: .male, number: 2, connectionStatus: .TCP, status: .away)
|
|
let f5 = addFriend(gender: .male, number: 3, connectionStatus: .TCP, status: .none)
|
|
let f6 = addFriend(gender: .female, number: 3, connectionStatus: .TCP, status: .away)
|
|
let f7 = addFriend(gender: .male, number: 4, connectionStatus: .TCP, status: .away)
|
|
let f8 = addFriend(gender: .female, number: 4, connectionStatus: .none, status: .none)
|
|
let f9 = addFriend(gender: .female, number: 5, connectionStatus: .TCP, status: .none)
|
|
let f10 = addFriend(gender: .male, number: 5, connectionStatus: .none, status: .none)
|
|
|
|
let c1 = addChat(friend: f1)
|
|
let c2 = addChat(friend: f2)
|
|
let c3 = addChat(friend: f3)
|
|
let c4 = addChat(friend: f4)
|
|
let c5 = addChat(friend: f5)
|
|
let c6 = addChat(friend: f6)
|
|
let c7 = addChat(friend: f7)
|
|
let c8 = addChat(friend: f8)
|
|
let c9 = addChat(friend: f9)
|
|
let c10 = addChat(friend: f10)
|
|
|
|
addDemoConversationToChat(c1)
|
|
addCallMessage(chat: c2, outgoing: false, answered: false, duration: 0.0)
|
|
addTextMessage(chat: c3, outgoing: false, text: String(localized: "app_store_screenshot_chat_message_1"))
|
|
addCallMessage(chat: c4, outgoing: true, answered: true, duration: 1473.0)
|
|
addTextMessage(chat: c5, outgoing: false, text: String(localized: "app_store_screenshot_chat_message_2"))
|
|
addFileMessage(chat: c6, outgoing: false, fileName: "party.png")
|
|
addTextMessage(chat: c7, outgoing: true, text: String(localized: "app_store_screenshot_chat_message_3"))
|
|
addTextMessage(chat: c8, outgoing: true, text: String(localized: "app_store_screenshot_chat_message_4"))
|
|
addFileMessage(chat: c9, outgoing: true, fileName: "presentation_2016.pdf")
|
|
addTextMessage(chat: c10, outgoing: false, text: String(localized: "app_store_screenshot_chat_message_5"))
|
|
|
|
c1.lastReadDateInterval = Date().timeIntervalSince1970
|
|
// unread message
|
|
// c2.lastReadDateInterval = NSDate().timeIntervalSince1970
|
|
c3.lastReadDateInterval = Date().timeIntervalSince1970
|
|
c4.lastReadDateInterval = Date().timeIntervalSince1970
|
|
c5.lastReadDateInterval = Date().timeIntervalSince1970
|
|
c6.lastReadDateInterval = Date().timeIntervalSince1970
|
|
c7.lastReadDateInterval = Date().timeIntervalSince1970
|
|
c8.lastReadDateInterval = Date().timeIntervalSince1970
|
|
c9.lastReadDateInterval = Date().timeIntervalSince1970
|
|
c10.lastReadDateInterval = Date().timeIntervalSince1970
|
|
|
|
try! realm.commitWriteTransaction()
|
|
}
|
|
|
|
func addFriend(gender: Gender,
|
|
number: Int,
|
|
connectionStatus: OCTToxConnectionStatus,
|
|
status: OCTToxUserStatus) -> OCTFriend {
|
|
let friend = OCTFriend()
|
|
friend.publicKey = "123"
|
|
friend.connectionStatus = connectionStatus
|
|
friend.isConnected = connectionStatus != .none
|
|
friend.status = status
|
|
|
|
switch gender {
|
|
case .male:
|
|
friend.nickname = String(localized: "app_store_screenshot_friend_male_\(number)")
|
|
friend.avatarData = UIImagePNGRepresentation(UIImage(named: "male-\(number)")!)
|
|
case .female:
|
|
friend.nickname = String(localized: "app_store_screenshot_friend_female_\(number)")
|
|
friend.avatarData = UIImagePNGRepresentation(UIImage(named: "female-\(number)")!)
|
|
}
|
|
|
|
realm.add(friend)
|
|
|
|
return friend
|
|
}
|
|
|
|
func addChat(friend: OCTFriend) -> OCTChat {
|
|
let chat = OCTChat()
|
|
|
|
realm.add(chat)
|
|
chat.friends.add(friend)
|
|
|
|
return chat
|
|
}
|
|
|
|
func addDemoConversationToChat(_ chat: OCTChat) {
|
|
addFileMessage(chat: chat, outgoing: false, fileName: "party.png")
|
|
addTextMessage(chat: chat, outgoing: true, text: String(localized: "app_store_screenshot_conversation_1"))
|
|
addTextMessage(chat: chat, outgoing: false, text: String(localized: "app_store_screenshot_conversation_2"))
|
|
addTextMessage(chat: chat, outgoing: true, text: String(localized: "app_store_screenshot_conversation_3"))
|
|
addTextMessage(chat: chat, outgoing: false, text: String(localized: "app_store_screenshot_conversation_4"))
|
|
addTextMessage(chat: chat, outgoing: false, text: String(localized: "app_store_screenshot_conversation_5"))
|
|
addTextMessage(chat: chat, outgoing: true, text: String(localized: "app_store_screenshot_conversation_6"))
|
|
addTextMessage(chat: chat, outgoing: true, text: String(localized: "app_store_screenshot_conversation_7"))
|
|
}
|
|
|
|
func addTextMessage(chat: OCTChat, outgoing: Bool, text: String) {
|
|
let messageText = OCTMessageText()
|
|
messageText.text = text
|
|
messageText.isDelivered = outgoing
|
|
|
|
let message = addMessageAbstract(chat: chat, outgoing: outgoing)
|
|
message.messageText = messageText
|
|
}
|
|
|
|
func addFileMessage(chat: OCTChat, outgoing: Bool, fileName: String) {
|
|
let messageFile = OCTMessageFile()
|
|
messageFile.fileName = fileName
|
|
messageFile.internalFilePath = Bundle.main.path(forResource: "dummy-photo", ofType: "jpg")
|
|
messageFile.fileType = .ready
|
|
messageFile.fileUTI = kUTTypeImage as String
|
|
|
|
let message = addMessageAbstract(chat: chat, outgoing: outgoing)
|
|
message.messageFile = messageFile
|
|
}
|
|
|
|
func addCallMessage(chat: OCTChat, outgoing: Bool, answered: Bool, duration: TimeInterval) {
|
|
let messageCall = OCTMessageCall()
|
|
messageCall.callDuration = duration
|
|
messageCall.callEvent = answered ? .answered : .unanswered
|
|
|
|
let message = addMessageAbstract(chat: chat, outgoing: outgoing)
|
|
message.messageCall = messageCall
|
|
}
|
|
|
|
func addMessageAbstract(chat: OCTChat, outgoing: Bool) -> OCTMessageAbstract {
|
|
let message = OCTMessageAbstract()
|
|
if !outgoing {
|
|
let friend = chat.friends.firstObject() as! OCTFriend
|
|
message.senderUniqueIdentifier = friend.uniqueIdentifier
|
|
}
|
|
message.chatUniqueIdentifier = chat.uniqueIdentifier
|
|
message.dateInterval = Date().timeIntervalSince1970
|
|
|
|
realm.add(message)
|
|
chat.lastMessage = message
|
|
|
|
return message
|
|
}
|
|
}
|