mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Send current user location (#1272)
* add new asset for location, add logic for sharing user current location * work on default zoom and auth for location * add attribution button * fix attribution button position, fix isSharingUserLocation * Add NSLocationWhenInUseUsageDescription back * Fix initial animation * change map logo and attribution position * Add annotation just in the setup * add errors and alert for map vies * location unit test * add unit test for location sharing * add changelog * Update ElementX/Sources/Other/MapLibre/MapLibreMapView.swift Co-authored-by: Alfonso Grillo <alfogrillo@gmail.com> * add comments and minor parameters refactor * Update ElementX/Sources/Screens/LocationSharing/StaticLocationScreenCoordinator.swift Co-authored-by: Mauro <34335419+Velin92@users.noreply.github.com> * Update ElementX/Sources/Screens/LocationSharing/StaticLocationScreenViewModel.swift Co-authored-by: Mauro <34335419+Velin92@users.noreply.github.com> * Sort assets * Cleanup * Cleanup * Fix error localizations * Fix tests --------- Co-authored-by: Alfonso Grillo <alfogrillo@gmail.com> Co-authored-by: Mauro <34335419+Velin92@users.noreply.github.com>
This commit is contained in:
@@ -32,13 +32,48 @@ class StaticLocationScreenViewModelTests: XCTestCase {
|
||||
|
||||
override func setUpWithError() throws {
|
||||
let viewModel = StaticLocationScreenViewModel(interactionMode: .picker)
|
||||
viewModel.state.isSharingUserLocation = true
|
||||
viewModel.state.bindings.isLocationAuthorized = true
|
||||
self.viewModel = viewModel
|
||||
}
|
||||
|
||||
func testUserDidPan() async throws {
|
||||
XCTAssertTrue(context.viewState.isSharingUserLocation)
|
||||
XCTAssertEqual(context.showsUserLocationMode, .showAndFollow)
|
||||
context.send(viewAction: .userDidPan)
|
||||
XCTAssertFalse(context.viewState.isSharingUserLocation)
|
||||
XCTAssertEqual(context.showsUserLocationMode, .show)
|
||||
}
|
||||
|
||||
func testCenterOnUser() async throws {
|
||||
XCTAssertTrue(context.viewState.isSharingUserLocation)
|
||||
context.showsUserLocationMode = .show
|
||||
XCTAssertFalse(context.viewState.isSharingUserLocation)
|
||||
context.send(viewAction: .centerToUser)
|
||||
XCTAssertTrue(context.viewState.isSharingUserLocation)
|
||||
XCTAssertEqual(context.showsUserLocationMode, .showAndFollow)
|
||||
}
|
||||
|
||||
func testCenterOnUserWithoutAuth() async throws {
|
||||
context.showsUserLocationMode = .hide
|
||||
context.isLocationAuthorized = nil
|
||||
context.send(viewAction: .centerToUser)
|
||||
XCTAssertEqual(context.showsUserLocationMode, .showAndFollow)
|
||||
}
|
||||
|
||||
func testCenterOnUserWithDeniedAuth() async throws {
|
||||
context.isLocationAuthorized = false
|
||||
context.showsUserLocationMode = .hide
|
||||
context.send(viewAction: .centerToUser)
|
||||
XCTAssertNotEqual(context.showsUserLocationMode, .showAndFollow)
|
||||
XCTAssertNotNil(context.alertInfo)
|
||||
}
|
||||
|
||||
func testErrorMapping() async throws {
|
||||
let mapError = AlertInfo(locationSharingViewError: .mapError(.failedLoadingMap))
|
||||
XCTAssertEqual(mapError.message, L10n.errorFailedLoadingMap(InfoPlistReader.main.bundleDisplayName))
|
||||
let locationError = AlertInfo(locationSharingViewError: .mapError(.failedLocatingUser))
|
||||
XCTAssertEqual(locationError.message, L10n.errorFailedLocatingUser(InfoPlistReader.main.bundleDisplayName))
|
||||
let authorizationError = AlertInfo(locationSharingViewError: .missingAuthorization)
|
||||
XCTAssertEqual(authorizationError.message, L10n.errorMissingLocationAuth(InfoPlistReader.main.bundleDisplayName))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user