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