     }
 
     func requestAlwaysAuthorization() {
-        requestedAuthorizationStatus = .AuthorizedAlways
+        requestedAuthorization = .Always
     }
 
     func requestWhenInUseAuthorization() {
-        requestedAuthorizationStatus = .AuthorizedWhenInUse
+        requestedAuthorization = .WhenInUse
     }
     
     func startUpdatingLocation() {

    }
    
    // MARK: Request authorization
    
    func testRequestAuthPreconditions() {
        let manager = MockCLLocationManager()
        let provider = LocationManager(manager: manager)
        let subject = LocationAuthorizationService(locationAuthorizationProvider: provider)

        manager.withMockServicesEnabled(false) {
            let error = subject.requestAuthorization(.WhenInUse)
            XCTAssertNotNil(error, "Request auth returns error when location services are disabled")
        }
        
        manager.withMockAuthorizationStatus(.Denied) {
            let error = subject.requestAuthorization(.WhenInUse)
            XCTAssertNotNil(error, "Request auth returns error when authorization is denied")
        }

        manager.withMockAuthorizationStatus(.Restricted) {
            let error = subject.requestAuthorization(.WhenInUse)
            XCTAssertNotNil(error, "Request auth returns error when authorization is restricted")
        }

        manager.withMockAuthorizationStatus(.AuthorizedWhenInUse) {
            let error = subject.requestAuthorization(.Always)
            XCTAssertNotNil(error, "Request auth returns error for .Always when existing authorization is only .WhenInUse")
        }
    }

    func testRequestAuth() {
        let manager = MockCLLocationManager()
        let provider = LocationManager(manager: manager)
        let subject = LocationAuthorizationService(locationAuthorizationProvider: provider)

        manager.withMockAuthorizationStatus(.AuthorizedWhenInUse) {
            let error = subject.requestAuthorization(.WhenInUse)
            XCTAssertNil(error, "Request auth does not return error when already authorized")
            XCTAssertNil(manager.requestedAuthorizationStatus, "Request auth does nothing when already authorized")
        }

        manager.withMockAuthorizationStatus(.AuthorizedAlways) {
            let error = subject.requestAuthorization(.Always)
            XCTAssertNil(error, "Request auth does not return error when already authorized")
            XCTAssertNil(manager.requestedAuthorizationStatus, "Request auth does nothing when already authorized")
        }

        manager.withMockAuthorizationStatus(.NotDetermined) {
            subject.requestAuthorization(.WhenInUse)
            XCTAssertEqual(manager.requestedAuthorizationStatus, .AuthorizedWhenInUse, "Requests auth when necessary")
        }

        manager.withMockAuthorizationStatus(.NotDetermined) {
            subject.requestAuthorization(.Always)
            XCTAssertEqual(manager.requestedAuthorizationStatus, .AuthorizedAlways, "Requests auth when necessary")
        }
    }
    
    // MARK: Location Updates

    func testLocationMonitoring() {

class MockCLLocationManager: ELCLLocationManager {
    var coreLocationServicesEnabled: Bool = true
    var coreLocationAuthorizationStatus: CLAuthorizationStatus = .NotDetermined
    var requestedAuthorization: LocationAuthorization? = nil

    var desiredAccuracy: CLLocationAccuracy = kCLLocationAccuracyBest
    var distanceFilter: CLLocationDistance = kCLDistanceFilterNone
