     }
 
     private(set) var wasAskedForEventsPermissions = false
-    func requestAccessToEvents() {
+    func requestAccessToEvents(completionHandler: (Bool) -> Void) {
         wasAskedForEventsPermissions = true
     }
+    
+    private(set) var didMakeEvent = false
+    var createdEvent: CalendarEvent = StubCalendarEvent()
+    func makeEvent() -> CalendarEvent {
+        didMakeEvent = true
+        return createdEvent
+    }
+    
+    private(set) var savedEvent: CalendarEvent?
+    func save(event: CalendarEvent) {
+        savedEvent = event
+    }
 
+}
+
+class StubCalendarEvent: CalendarEvent {
+    
 }
 
 class AuthorizedCalendarPort: CapturingCalendarPort {

        XCTAssertFalse(capturingCalendar.wasAskedForEventsPermissions)
    }
    
}

    }

    func add(event: Any) {
        if calendar.isAuthorizedForEventsAccess {
            let calendarEvent = calendar.makeEvent()
            calendar.save(event: calendarEvent)
        }
        else {
            calendar.requestAccessToEvents() { authorized in
                if authorized {
                    _ = calendar.makeEvent()
                }
            }
        }
    }

