| /* |
| * 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 VCardUtilsTests: XCTestCase { |
| |
| let photo = "photo.jpg" |
| |
| func generateVCardStingWithNameAndImage() -> String { |
| return """ |
| BEGIN:VCARD |
| FN:\(profileName1) |
| TEL;other:ring:\(jamiId1) |
| PHOTO;ENCODING=BASE64;TYPE=JPEG:\(photo) |
| END:VCARD |
| """ |
| } |
| |
| func generateVCardStingWithName() -> String { |
| return """ |
| BEGIN:VCARD |
| FN:\(profileName1) |
| TEL;other:ring:\(jamiId1) |
| END:VCARD |
| """ |
| } |
| |
| func generateVCardStingWithImage() -> String { |
| return """ |
| BEGIN:VCARD |
| FN: |
| TEL;other:ring:\(jamiId1) |
| PHOTO;ENCODING=BASE64;TYPE=JPEG:\(photo) |
| END:VCARD |
| """ |
| } |
| |
| func getJamiUri() -> String { |
| return "ring:\(jamiId1)" |
| } |
| |
| func testParseToProfile() { |
| // Arrange |
| let data = generateVCardStingWithNameAndImage().data(using: .utf8)! |
| // Act |
| let profile = VCardUtils.parseToProfile(data: data) |
| // Assert |
| XCTAssertEqual(profile?.alias, profileName1) |
| XCTAssertEqual(profile?.photo, photo) |
| XCTAssertEqual(profile?.uri, getJamiUri()) |
| } |
| |
| func testDataWithImageAndUUID_whenProfileHasPhotoAndAlias() throws { |
| // Arrange |
| let profile = Profile(uri: getJamiUri(), alias: profileName1, photo: photo, type: ProfileType.ring.rawValue) |
| let expectedData = generateVCardStingWithNameAndImage().data(using: .utf8) |
| // Act |
| let data = try XCTUnwrap(VCardUtils.dataWithImageAndUUID(from: profile)) |
| // Assert |
| XCTAssertEqual(data, expectedData) |
| } |
| |
| func testDataWithImageAndUUID_whenProfileMissingPhoto() throws { |
| // Arrange |
| let profile = Profile(uri: getJamiUri(), alias: profileName1, photo: nil, type: ProfileType.ring.rawValue) |
| let expectedData = generateVCardStingWithName().data(using: .utf8) |
| // Act |
| let data = try XCTUnwrap(VCardUtils.dataWithImageAndUUID(from: profile)) |
| // Assert |
| XCTAssertEqual(data, expectedData) |
| } |
| |
| func testDataWithImageAndUUID_whenProfileAliasHasLeadingWhitespace() throws { |
| // Arrange |
| let profile = Profile(uri: getJamiUri(), alias: " " + profileName1, photo: photo, type: ProfileType.ring.rawValue) |
| let expectedData = generateVCardStingWithNameAndImage().data(using: .utf8) |
| // Act |
| let data = try XCTUnwrap(VCardUtils.dataWithImageAndUUID(from: profile)) |
| // Assert |
| XCTAssertEqual(data, expectedData) |
| } |
| |
| func test_dataWithImageAndUUID_whenProfileHasNoAlias() throws { |
| // Arrange |
| let profile = Profile(uri: getJamiUri(), alias: nil, photo: photo, type: ProfileType.ring.rawValue) |
| let expectedData = generateVCardStingWithImage().data(using: .utf8) |
| // Act |
| let data = try XCTUnwrap(VCardUtils.dataWithImageAndUUID(from: profile)) |
| // Assert |
| XCTAssertEqual(data, expectedData) |
| } |
| |
| } |