mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Swift
		
	
//
 | 
						|
//  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | 
						|
//
 | 
						|
 | 
						|
import XCTest
 | 
						|
import Contacts
 | 
						|
@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)
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    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(allowsMultipleSelection: false, subtitleCellType: .phoneNumber)
 | 
						|
        let collatedContacts = contactsPicker.collatedContacts([emailOnlyContactB, emailOnlyContactD])
 | 
						|
 | 
						|
        let sectionTitles = contactsPicker.collationForTests.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)
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    func testContactSectionMatchesNameFirstLetterWhenNameExistsInContact() {
 | 
						|
        setLangEN()
 | 
						|
 | 
						|
        let nameAndEmailContact = CNMutableContact()
 | 
						|
        nameAndEmailContact.givenName = "Alice"
 | 
						|
        nameAndEmailContact.emailAddresses.append(CNLabeledValue(label: nil, value: "nameAndEmail@bla.com"))
 | 
						|
 | 
						|
        let contactsPicker = ContactsPicker(allowsMultipleSelection: false, subtitleCellType: .phoneNumber)
 | 
						|
        let collatedContacts = contactsPicker.collatedContacts([nameAndEmailContact])
 | 
						|
 | 
						|
        let sectionTitles = contactsPicker.collationForTests.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")
 | 
						|
    }
 | 
						|
}
 |