         }
     }
 
-    func testAuthorizedAlwaysWhenAuthorizedAlways() {
-        CLLocationManagerMock._authorizationStatus = .authorizedAlways
-        let expectation = self.expectation(description: "onSuccess fulfilled for future")
+    func testAuthorized_WhenAuthorizedAlwaysRequestedAndStatusIsAuthorizedAlways_CompletesSuccessfully() {
+        CLLocationManagerMock._authorizationStatus = .authorizedAlways
         let future = self.locationManager.authorize(.authorizedAlways)
-        future.onSuccess {
-            XCTAssertFalse(self.mock.requestAlwaysAuthorizationCalled, "requestAlwaysAuthorization called")
+        XCTAssertFutureSucceeds(future, context: TestContext.immediate) {
+            XCTAssertFalse(self.mock.requestAlwaysAuthorizationCalled)
+        }
+    }
+
+    func testAuthorized_WhenAuthorizedAlwaysRequestedAndStatusIsNotDetermined_CompletesSuccessfully() {
+        CLLocationManagerMock._authorizationStatus = .notDetermined
+        let future = self.locationManager.authorize(.authorizedAlways)
+        self.locationManager.didChangeAuthorizationStatus(.authorizedAlways)
+        XCTAssertFutureSucceeds(future, context: TestContext.immediate) {
+            XCTAssertFalse(self.mock.requestAlwaysAuthorizationCalled)
+        }
+    }
+
+    func testAuthorized_WhenAuthorizedAlwaysRequestedAndStatusIsAuthorizedWhenInUse_CompletesSuccessfully() {
+        CLLocationManagerMock._authorizationStatus = .authorizedWhenInUse
+        let future = self.locationManager.authorize(.authorizedAlways)
+        self.locationManager.didChangeAuthorizationStatus(.authorizedAlways)
+        XCTAssertFutureSucceeds(future, context: TestContext.immediate) {
+            XCTAssertFalse(self.mock.requestAlwaysAuthorizationCalled)
+        }
+    }
+
+
+    func testAuthorized_WhenAuthorizedAlwaysRequestedAndRequestDenied_CompletesWithError() {
+        CLLocationManagerMock._authorizationStatus = .notDetermined
+        let expectation = self.expectation(description: "onFailure fulfilled for future")
+        let future = self.locationManager.authorize(.authorizedAlways)
+        future.onSuccess {
+            XCTFail()
+        }
+        future.onFailure{ error in
+            expectation.fulfill()
+        }
+        self.locationManager.didChangeAuthorizationStatus(.denied)
+        waitForExpectations()
+        XCTAssertFutureFails(future, context: TestContext.immediate) { error in
+            XCTAssert(self.mock.requestAlwaysAuthorizationCalled)
+            XCTAssertEqualErrors(error, LocationError.authorizationAlwaysFailed)
+        }
+    }
+
+    func testAuthorized_WhenAuthorizedWhenInUseRequestedAndStatusIsAuthorizedWhenInUse_CompletesSuccessfully() {
+        CLLocationManagerMock._authorizationStatus = .authorizedWhenInUse
+        let expectation = self.expectation(description: "onSuccess fulfilled for future")
+        let future = self.locationManager.authorize(.authorizedWhenInUse)
+        future.onSuccess {
+            XCTAssertFalse(self.mock.requestWhenInUseAuthorizationCalled)
             expectation.fulfill()
         }
         future.onFailure{error in
-            XCTAssert(false, "onFailure called")
-        }
-        waitForExpectations()
-    }
-
-    func testAuthorizedAlwaysSuccess() {
-        CLLocationManagerMock._authorizationStatus = .notDetermined
-        let expectation = self.expectation(description: "onSuccess fulfilled for future")
-        let future = self.locationManager.authorize(.authorizedAlways)
-        future.onSuccess {
-            XCTAssert(self.mock.requestAlwaysAuthorizationCalled, "requestAlwaysAuthorization not called")
+            XCTFail()
+        }
+        waitForExpectations()
+    }
+    
+    func testAuthorized_WhenAuthorizedWhenInUseRequestedAndStatusIsNotDetermined_CompletesSuccessfully() {
+        CLLocationManagerMock._authorizationStatus = .notDetermined
+        let expectation = self.expectation(description: "onSuccess fulfilled for future")
+        let future = self.locationManager.authorize(.authorizedWhenInUse)
+        future.onSuccess {
+            XCTAssert(self.mock.requestWhenInUseAuthorizationCalled)
             expectation.fulfill()
         }
         future.onFailure{error in
-            XCTAssert(false, "onFailure called")
-        }
-        self.locationManager.didChangeAuthorizationStatus(.authorizedAlways)
-        waitForExpectations()
-    }
-
-    func testAuthorizedAlwaysFailure() {
-        CLLocationManagerMock._authorizationStatus = .notDetermined
-        let expectation = self.expectation(description: "onFailure fulfilled for future")
-        let future = self.locationManager.authorize(.authorizedAlways)
+            XCTFail()
+        }
+        self.locationManager.didChangeAuthorizationStatus(.authorizedWhenInUse)
+        waitForExpectations()
+    }
+    
+    func testAuthorized_WhenAuthorizedWhenInUseRequestedAndRequestDenied_CompletesWithError() {
+        CLLocationManagerMock._authorizationStatus = .notDetermined
+        let expectation = self.expectation(description: "onFailure fulfilled for future")
+        let future = self.locationManager.authorize(.authorizedWhenInUse)
         future.onSuccess {
             XCTAssert(false, "onSuccess called")
         }
         future.onFailure{error in
-            XCTAssert(self.mock.requestAlwaysAuthorizationCalled, "requestAlwaysAuthorization not called")
-            expectation.fulfill()
-        }
-        self.locationManager.didChangeAuthorizationStatus(.denied)
-        waitForExpectations()
-    }
-
-    func testAuthorizedWhenInUseWhenAuthorizedWhenInUse() {
-        CLLocationManagerMock._authorizationStatus = .authorizedWhenInUse
-        let expectation = self.expectation(description: "onSuccess fulfilled for future")
-        let future = self.locationManager.authorize(.authorizedWhenInUse)
-        future.onSuccess {
-            XCTAssertFalse(self.mock.requestWhenInUseAuthorizationCalled, "requestWhenInUseAuthorization called")
-            expectation.fulfill()
-        }
-        future.onFailure{error in
-            XCTAssert(false, "onFailure called")
-        }
-        waitForExpectations()
-    }
-    
-    func testAuthorizedWhenInUseSuccess() {
-        CLLocationManagerMock._authorizationStatus = .notDetermined
-        let expectation = self.expectation(description: "onSuccess fulfilled for future")
-        let future = self.locationManager.authorize(.authorizedWhenInUse)
-        future.onSuccess {
-            XCTAssert(self.mock.requestWhenInUseAuthorizationCalled, "requestWhenInUseAuthorization not called")
-            expectation.fulfill()
-        }
-        future.onFailure{error in
-            XCTAssert(false, "onFailure called")
-        }
-        self.locationManager.didChangeAuthorizationStatus(.authorizedWhenInUse)
-        waitForExpectations()
-    }
-    
-    func testAuthorizedWhenInUseFailure() {
-        CLLocationManagerMock._authorizationStatus = .notDetermined
-        let expectation = self.expectation(description: "onFailure fulfilled for future")
-        let future = self.locationManager.authorize(.authorizedWhenInUse)
-        future.onSuccess {
-            XCTAssert(false, "onSuccess called")
-        }
-        future.onFailure{error in
-            XCTAssert(self.mock.requestWhenInUseAuthorizationCalled, "requestWhenInUseAuthorization not called")
-            XCTAssertEqual(error.code, FLError.authorizationWhenInUseFailed.code, "Error code invalid")
+            XCTAssert(self.mock.requestWhenInUseAuthorizationCalled)
+            XCTAssertEqualErrors(error, LocationError.authorizationWhenInUseFailed)
             expectation.fulfill()
         }
         locationManager.didChangeAuthorizationStatus(.denied)

        waitForExpectations()
    }

    func testStopSignificantLocationChangeUpdates() {
        CLLocationManagerMock._authorizationStatus = .authorizedAlways
        let expectation = self.expectation(description: "onSuccess fulfilled for future")
        let context = ImmediateContext()

        waitForExpectations()
    }
    
    func testStartMonitoringSignificantLocationChanges_WhenAuthorizedAlwaysAndUpdateSucceeds_CompletesSuccessfully() {
        CLLocationManagerMock._authorizationStatus = .authorizedAlways
        let expectation = self.expectation(description: "onFailure fulfilled for future")
        let context = ImmediateContext()
