|
|
|
// Copyright © 2015 Abhishek Banthia
|
|
|
|
|
|
|
|
import CoreModelKit
|
|
|
|
import XCTest
|
|
|
|
|
|
|
|
@testable import Clocker
|
|
|
|
|
|
|
|
class StandardMenubarHandlerTests: XCTestCase {
|
|
|
|
private let mumbai = ["customLabel": "Ghar",
|
|
|
|
"formattedAddress": "Mumbai",
|
|
|
|
"place_id": "ChIJwe1EZjDG5zsRaYxkjY_tpF0",
|
|
|
|
"timezoneID": "Asia/Calcutta",
|
|
|
|
"nextUpdate": "",
|
|
|
|
"latitude": "19.0759837",
|
|
|
|
"longitude": "72.8776559"]
|
|
|
|
|
|
|
|
func testValidStandardMenubarHandler_returnMenubarTitle() {
|
|
|
|
// Wipe all timezones from UserDefaults
|
|
|
|
UserDefaults.standard.setValue(nil, forKey: CLDefaultPreferenceKey)
|
|
|
|
|
|
|
|
// Save a menubar selected timezone
|
|
|
|
let dataObject = TimezoneData(with: mumbai)
|
|
|
|
dataObject.isFavourite = 1
|
|
|
|
let operationsObject = TimezoneDataOperations(with: dataObject)
|
|
|
|
operationsObject.saveObject()
|
|
|
|
|
|
|
|
let menubarTimezones = DataStore.shared().menubarTimezones()
|
|
|
|
XCTAssertTrue(menubarTimezones?.count == 1)
|
|
|
|
|
|
|
|
// Set standard menubar in Prefs
|
|
|
|
UserDefaults.standard.set(1, forKey: CLMenubarCompactMode)
|
|
|
|
|
|
|
|
let menubarHandler = MenubarHandler()
|
|
|
|
let menubarString = menubarHandler.titleForMenubar() ?? ""
|
|
|
|
|
|
|
|
// Test menubar string is present
|
|
|
|
XCTAssertTrue(menubarString.count > 0)
|
|
|
|
XCTAssertTrue(menubarString.contains("Ghar"))
|
|
|
|
|
|
|
|
// Set default back to compact menubar
|
|
|
|
UserDefaults.standard.set(0, forKey: CLMenubarCompactMode)
|
|
|
|
}
|
|
|
|
|
|
|
|
func testUnfavouritedTimezone_returnEmptyMenubarTimezoneCount() {
|
|
|
|
// Wipe all timezones from UserDefaults
|
|
|
|
UserDefaults.standard.setValue(nil, forKey: CLDefaultPreferenceKey)
|
|
|
|
|
|
|
|
// Save a menubar selected timezone
|
|
|
|
let dataObject = TimezoneData(with: mumbai)
|
|
|
|
dataObject.isFavourite = 0
|
|
|
|
let operationsObject = TimezoneDataOperations(with: dataObject)
|
|
|
|
operationsObject.saveObject()
|
|
|
|
|
|
|
|
let menubarTimezones = DataStore.shared().menubarTimezones()
|
|
|
|
XCTAssertTrue(menubarTimezones?.count == 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func testUnfavouritedTimezone_returnNilMenubarString() {
|
|
|
|
// Wipe all timezones from UserDefaults
|
|
|
|
UserDefaults.standard.setValue(nil, forKey: CLDefaultPreferenceKey)
|
|
|
|
let menubarHandler = MenubarHandler()
|
|
|
|
let emptyMenubarString = menubarHandler.titleForMenubar()
|
|
|
|
// Returns early because DataStore.menubarTimezones is nil
|
|
|
|
XCTAssertNil(emptyMenubarString)
|
|
|
|
|
|
|
|
// Save a menubar selected timezone
|
|
|
|
let dataObject = TimezoneData(with: mumbai)
|
|
|
|
dataObject.isFavourite = 0
|
|
|
|
let operationsObject = TimezoneDataOperations(with: dataObject)
|
|
|
|
operationsObject.saveObject()
|
|
|
|
|
|
|
|
let menubarString = menubarHandler.titleForMenubar() ?? ""
|
|
|
|
|
|
|
|
// Test menubar string is absent
|
|
|
|
XCTAssertTrue(menubarString.count == 0)
|
|
|
|
}
|
|
|
|
}
|