mirror of https://github.com/oxen-io/session-ios
[Invite Flow] Use email address to collate contacts when no given or family name is provided
* Add tests to ContactsPicker collate contacts functionalitypull/1/head
parent
89730f2b85
commit
76d01863db
@ -0,0 +1,89 @@
|
||||
//
|
||||
// ContactsPickerTest.swift
|
||||
// Signal
|
||||
//
|
||||
// Created by Daniel Rosado on 03/12/16.
|
||||
// Copyright © 2016 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import Signal
|
||||
|
||||
final class ContactsPickerTest: XCTestCase {
|
||||
private var prevLang: Any?
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
|
||||
prevLang = getLang()
|
||||
}
|
||||
|
||||
override func tearDown() {
|
||||
super.tearDown()
|
||||
|
||||
if let prevLang = prevLang {
|
||||
setLang(value: prevLang)
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS 9.0, *)
|
||||
func testContactSectionMatchesEmailFirstLetterWhenOnlyEmailContact() {
|
||||
setLangEN()
|
||||
|
||||
let emailOnlyContactB = CNMutableContact()
|
||||
emailOnlyContactB.emailAddresses.append(CNLabeledValue(label: nil, value: "bla@bla.com"))
|
||||
|
||||
let emailOnlyContactD = CNMutableContact()
|
||||
emailOnlyContactD.emailAddresses.append(CNLabeledValue(label: nil, value: "dude@bla.com"))
|
||||
|
||||
let contactsPicker = ContactsPicker(delegate: nil)
|
||||
let collatedContacts = contactsPicker.collatedContacts([emailOnlyContactB, emailOnlyContactD])
|
||||
|
||||
let sectionTitles = contactsPicker.collation.sectionTitles
|
||||
if let bIndex = sectionTitles.index(of: "B") {
|
||||
let bSectionContacts = collatedContacts[bIndex]
|
||||
XCTAssertEqual(bSectionContacts.first, emailOnlyContactB)
|
||||
}
|
||||
|
||||
if let dIndex = sectionTitles.index(of: "D") {
|
||||
let dSectionContacts = collatedContacts[dIndex]
|
||||
XCTAssertEqual(dSectionContacts.first, emailOnlyContactD)
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS 9.0, *)
|
||||
func testContactSectionMatchesNameFirstLetterWhenNameExistsInContact() {
|
||||
setLangEN()
|
||||
|
||||
let nameAndEmailContact = CNMutableContact()
|
||||
nameAndEmailContact.givenName = "Alice"
|
||||
nameAndEmailContact.emailAddresses.append(CNLabeledValue(label: nil, value: "nameAndEmail@bla.com"))
|
||||
|
||||
let contactsPicker = ContactsPicker(delegate: nil)
|
||||
let collatedContacts = contactsPicker.collatedContacts([nameAndEmailContact])
|
||||
|
||||
let sectionTitles = contactsPicker.collation.sectionTitles
|
||||
if let aIndex = sectionTitles.index(of: "A") {
|
||||
let aSectionContacts = collatedContacts[aIndex]
|
||||
XCTAssertEqual(aSectionContacts.first, nameAndEmailContact)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private func setLangEN() {
|
||||
setLang(value: "en")
|
||||
}
|
||||
|
||||
private func setLang(value: Any) {
|
||||
UserDefaults.standard.set(value, forKey: "AppleLanguages")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
|
||||
private func setLang(value: String) {
|
||||
setLang(value: [value])
|
||||
}
|
||||
|
||||
private func getLang() -> Any? {
|
||||
return UserDefaults.standard.value(forKey: "AppleLanguages")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue