smartlist: fix search for swarm conversations

This patch:

- fixes search for conversation with more than one participant
- adds unit tests

Gitlab: #261
Change-Id: I55274fe8423f5a9c242f28d502782a244610c1c6
diff --git a/Ring/RingTests/ContactUtilsTests.swift b/Ring/RingTests/ContactUtilsTests.swift
new file mode 100644
index 0000000..e7b5a35
--- /dev/null
+++ b/Ring/RingTests/ContactUtilsTests.swift
@@ -0,0 +1,77 @@
+/*
+ *  Copyright (C) 2023 Savoir-faire Linux Inc.
+ *
+ *  Author: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+
+import XCTest
+@testable import Ring
+
+final class ContactUtilsTests: XCTestCase {
+
+    override func setUpWithError() throws {
+        try super.setUpWithError()
+    }
+
+    override func tearDownWithError() throws {
+        try super.tearDownWithError()
+    }
+
+    func testGetFinalName_FromHashOnly() {
+        let finalName = ContactsUtils.getFinalNameFrom(registeredName: "", profileName: "", hash: jamiId1)
+        XCTAssertEqual(finalName, jamiId1)
+    }
+
+    func testGetFinalName_FromHashAndAlias() {
+        let finalName = ContactsUtils.getFinalNameFrom(registeredName: "", profileName: profileName1, hash: jamiId1)
+        XCTAssertEqual(finalName, profileName1)
+    }
+
+    func testGetFinalName_FromHashAndRegisteredName() {
+        let finalName = ContactsUtils.getFinalNameFrom(registeredName: registeredName1, profileName: "", hash: jamiId1)
+        XCTAssertEqual(finalName, registeredName1)
+    }
+
+    func testGetFinalName_FromHashAndRegisteredNameAndAlias() {
+        let finalName = ContactsUtils.getFinalNameFrom(registeredName: registeredName1, profileName: profileName1, hash: jamiId1)
+        XCTAssertEqual(finalName, profileName1)
+    }
+
+    func testDesirealizeuserDetails() {
+        let userName = "username"
+        let firstName = "firstName"
+        let lastName = "lastName"
+        let organization = "organization"
+        let jamiId = "jamiId"
+        let profilePicture = "profilePicture"
+        let dictionary = ["username": userName,
+                          "firstName": firstName,
+                          "lastName": lastName,
+                          "organization": organization,
+                          "jamiId": jamiId,
+                          "profilePicture": profilePicture]
+        let imageData = NSData(base64Encoded: profilePicture, options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) as Data?
+        let userDetails = ContactsUtils.deserializeUser(dictionary: dictionary)
+        XCTAssertEqual(userDetails?.username, userName)
+        XCTAssertEqual(userDetails?.firstName, firstName)
+        XCTAssertEqual(userDetails?.lastName, lastName)
+        XCTAssertEqual(userDetails?.organization, organization)
+        XCTAssertEqual(userDetails?.jamiId, jamiId)
+        XCTAssertEqual(userDetails?.profilePicture, imageData)
+    }
+
+}