Browse Source

DI Event Store in Menubar Title Provider.

pull/113/head
Abhishek 3 years ago
parent
commit
0cd1739250
  1. 36
      Clocker/ClockerUnitTests/StandardMenubarHandlerTests.swift
  2. 2
      Clocker/Panel/ParentPanelController.swift
  3. 10
      Clocker/Preferences/Menu Bar/MenubarTitleProvider.swift
  4. 4
      Clocker/Preferences/Menu Bar/StatusItemHandler.swift

36
Clocker/ClockerUnitTests/StandardMenubarHandlerTests.swift

@ -19,7 +19,7 @@ class StandardMenubarHandlerTests: XCTestCase {
private func makeMockStore(with menubarMode: Int = 1) -> DataStore {
// Wipe all timezones from UserDefaults
let defaults = UserDefaults(suiteName: "com.abhishek.Clocker.StandardMenubarHandlerTests")!
let defaults = UserDefaults(suiteName: "com.abhishek.Clocker.StandardMenubarHandlerTests")!
defaults.set(menubarMode, forKey: CLMenubarCompactMode)
defaults.set(0, forKey: CLShowMeetingInMenubar)
XCTAssertNotEqual(defaults, UserDefaults.standard)
@ -67,7 +67,7 @@ class StandardMenubarHandlerTests: XCTestCase {
let store = makeMockStore()
// Wipe all timezones from UserDefaults
store.setTimezones(nil)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
let emptyMenubarString = menubarHandler.titleForMenubar()
// Returns early because DataStore.menubarTimezones is nil
XCTAssertNil(emptyMenubarString)
@ -86,7 +86,7 @@ class StandardMenubarHandlerTests: XCTestCase {
func testWithEmptyMenubarTimezones() {
let store = makeMockStore()
store.setTimezones(nil)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
XCTAssertNil(menubarHandler.titleForMenubar())
}
@ -98,7 +98,7 @@ class StandardMenubarHandlerTests: XCTestCase {
dataObject.isFavourite = 1
saveObject(object: dataObject, in: store)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
XCTAssertNil(menubarHandler.titleForMenubar())
}
@ -110,7 +110,7 @@ class StandardMenubarHandlerTests: XCTestCase {
dataObject.isFavourite = 1
saveObject(object: dataObject, in: store)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
XCTAssertNotNil(menubarHandler.titleForMenubar())
}
@ -122,7 +122,7 @@ class StandardMenubarHandlerTests: XCTestCase {
mockEvent.title = "Mock Title"
mockEvent.startDate = Date().add(futureChunk)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
XCTAssert(menubarHandler.format(event: mockEvent) == "Mock Title in 10m",
"Suffix \(menubarHandler.format(event: mockEvent)) doesn't match expectation")
}
@ -135,7 +135,7 @@ class StandardMenubarHandlerTests: XCTestCase {
mockEvent.title = "Mock Title"
mockEvent.startDate = Date().add(futureChunk)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
XCTAssert(menubarHandler.format(event: mockEvent) == "Mock Title in 1m",
"Suffix \(menubarHandler.format(event: mockEvent)) doesn't match expectation")
}
@ -148,7 +148,7 @@ class StandardMenubarHandlerTests: XCTestCase {
mockEvent.title = "Mock Title"
mockEvent.startDate = Date().add(futureChunk)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
XCTAssert(menubarHandler.format(event: mockEvent) == "Mock Title starts now.",
"Suffix \(menubarHandler.format(event: mockEvent)) doesn't match expectation")
}
@ -160,7 +160,7 @@ class StandardMenubarHandlerTests: XCTestCase {
let mockEvent = EKEvent(eventStore: eventStore)
mockEvent.startDate = Date().add(futureChunk)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
XCTAssert(menubarHandler.format(event: mockEvent) == CLEmptyString,
"Suffix \(menubarHandler.format(event: mockEvent)) doesn't match expectation")
}
@ -173,11 +173,11 @@ class StandardMenubarHandlerTests: XCTestCase {
mockEvent.title = "Really long calendar event title that longer than the longest name"
mockEvent.startDate = Date().add(futureChunk)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
XCTAssert(menubarHandler.format(event: mockEvent) == "Really long calendar event tit... starts now.",
"Suffix \(menubarHandler.format(event: mockEvent)) doesn't match expectation")
}
func testUpcomingEventHappeningInFiveMinutes() throws {
let store = makeMockStore()
@ -190,14 +190,14 @@ class StandardMenubarHandlerTests: XCTestCase {
meetingURL: nil,
attendeStatus: .accepted)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
let calendar = Calendar.autoupdatingCurrent
let events: [Date: [EventInfo]] = [calendar.startOfDay(for: Date()): [eventInfo]]
let actualResult = try XCTUnwrap(menubarHandler.checkForUpcomingEvents(events, calendar: calendar))
let expectedResult = "Event happening in 5m"
XCTAssert(actualResult == expectedResult, "Actual Result \(actualResult)")
}
func testUpcomingEventHappeningIn29Minutes() throws {
let store = makeMockStore()
@ -210,14 +210,14 @@ class StandardMenubarHandlerTests: XCTestCase {
meetingURL: nil,
attendeStatus: .accepted)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
let calendar = Calendar.autoupdatingCurrent
let events: [Date: [EventInfo]] = [calendar.startOfDay(for: Date()): [eventInfo]]
let actualResult = try XCTUnwrap(menubarHandler.checkForUpcomingEvents(events, calendar: calendar))
let expectedResult = "Event happening in 29m"
XCTAssert(actualResult == expectedResult, "Actual Result \(actualResult)")
}
func testUpcomingEventHappeningIn31Minutes() throws {
let store = makeMockStore()
@ -230,12 +230,12 @@ class StandardMenubarHandlerTests: XCTestCase {
meetingURL: nil,
attendeStatus: .accepted)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
let calendar = Calendar.autoupdatingCurrent
let events: [Date: [EventInfo]] = [calendar.startOfDay(for: Date()): [eventInfo]]
XCTAssertNil(menubarHandler.checkForUpcomingEvents(events, calendar: calendar))
}
func testUpcomingEventHappeningIn31MinutesWithEmptyEvent() throws {
let store = makeMockStore()
@ -247,7 +247,7 @@ class StandardMenubarHandlerTests: XCTestCase {
meetingURL: nil,
attendeStatus: .accepted)
let menubarHandler = MenubarTitleProvider(with: store)
let menubarHandler = MenubarTitleProvider(with: store, eventStore: EventCenter.sharedCenter())
let calendar = Calendar.autoupdatingCurrent
let events: [Date: [EventInfo]] = [calendar.startOfDay(for: Date()): [eventInfo]]
XCTAssertNil(menubarHandler.checkForUpcomingEvents(events, calendar: calendar))

2
Clocker/Panel/ParentPanelController.swift

@ -584,7 +584,7 @@ class ParentPanelController: NSWindowController {
Logger.log(object: nil, for: "Deleted Timezone Through Swipe")
}
private lazy var menubarTitleHandler = MenubarTitleProvider(with: DataStore.shared())
private lazy var menubarTitleHandler = MenubarTitleProvider(with: DataStore.shared(), eventStore: EventCenter.sharedCenter())
@objc func updateTime() {
let store = DataStore.shared()

10
Clocker/Preferences/Menu Bar/MenubarTitleProvider.swift

@ -7,16 +7,18 @@ import EventKit
class MenubarTitleProvider: NSObject {
private let store: DataStore
private let eventCenter: EventCenter
init(with dataStore: DataStore) {
init(with dataStore: DataStore, eventStore: EventCenter) {
store = dataStore
eventCenter = eventStore
super.init()
}
func titleForMenubar() -> String? {
let eventCenter = EventCenter.sharedCenter().eventsForDate
let autoupdatingCalendar = EventCenter.sharedCenter().autoupdatingCalendar
if let nextEvent = checkForUpcomingEvents(eventCenter, calendar: autoupdatingCalendar) {
let filteredEvents = eventCenter.eventsForDate
let autoupdatingCalendar = eventCenter.autoupdatingCalendar
if let nextEvent = checkForUpcomingEvents(filteredEvents, calendar: autoupdatingCalendar) {
return nextEvent
}

4
Clocker/Preferences/Menu Bar/StatusItemHandler.swift

@ -22,7 +22,7 @@ class StatusItemHandler: NSObject {
return statusItem
}()
private lazy var menubarTitleHandler = MenubarTitleProvider(with: self.store)
private lazy var menubarTitleHandler = MenubarTitleProvider(with: self.store, eventStore: EventCenter.sharedCenter())
private var statusContainerView: StatusContainerView?
@ -380,7 +380,7 @@ class StatusItemHandler: NSObject {
let filteredEvents = EventCenter.sharedCenter().filteredEvents
let calendar = EventCenter.sharedCenter().autoupdatingCalendar
let checkForUpcomingEvents = menubarTitleHandler.checkForUpcomingEvents(filteredEvents, calendar: calendar)
constructCompactView(with: checkForUpcomingEvents != nil)
constructCompactView(with: checkForUpcomingEvents != nil)
updateMenubar()
}

Loading…
Cancel
Save