public async Task SetLocationAsync_ReturnsBadRequestWithStringObject_WhenExceptionIsRaised() { // Arrange var mockUserManager = SharedFunctions.InitialiseMockUserManager(); mockUserManager.Setup(repo => repo.FindByNameAsync(It.IsAny <string>())) .ThrowsAsync(new InvalidOperationException()); var controller = new ManageController(_mapper, _emailSender.Object, _urlService.Object, _logger.Object, mockUserManager.Object); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = SharedFunctions.GetTestClaimsPrincipal("example name") } }; var model = new SetLocationViewModel() { DefaultLocationLatitude = 2F, DefaultLocationLongitude = 2F }; // Act var result = await controller.SetLocationAsync(model); // Assert Assert.IsType <BadRequestObjectResult>(result); var objectResult = result as ObjectResult; Assert.Equal("There was an error updating the user", objectResult.Value); }
public async Task <IActionResult> SetLocationAsync(SetLocationViewModel model) { try { var user = await _userManager.FindByNameAsync(User.Identity.Name); if (user == null) { _logger.LogError(LoggingEvents.GetItemNotFound, "SetLocationAsync"); return(NotFound("User not found")); } var coordinates = string.Concat(user.DefaultLocationLatitude, ",", user.DefaultLocationLongitude); if (string.Concat(model.DefaultLocationLatitude, ",", model.DefaultLocationLongitude) != coordinates) { user.DefaultLocationLatitude = model.DefaultLocationLatitude; user.DefaultLocationLongitude = model.DefaultLocationLongitude; var setCoordinates = await _userManager.UpdateAsync(user); if (!setCoordinates.Succeeded) { throw new ApplicationException($"Unexpected error occurred setting the location for user with ID '{user.Id}'."); } } return(Ok(model)); } catch (Exception ex) { _logger.LogError(LoggingEvents.UpdateItemNotFound, ex, "SetLocation"); return(BadRequest("There was an error updating the user")); } }
public async Task SetLocationAsync_ReturnsNotFound_WithUserManagerReturnsNull() { // Arrange var mockUserManager = SharedFunctions.InitialiseMockUserManager(); mockUserManager.Setup(repo => repo.FindByNameAsync(It.IsAny <string>())) .Returns(Task.FromResult <ApplicationUser>(null)); var controller = new ManageController(_mapper, _emailSender.Object, _urlService.Object, _logger.Object, mockUserManager.Object); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = SharedFunctions.GetTestClaimsPrincipal("example name") } }; var model = new SetLocationViewModel() { DefaultLocationLatitude = 2F, DefaultLocationLongitude = 2F }; // Act var result = await controller.SetLocationAsync(model); // Assert var objectResult = Assert.IsType <NotFoundObjectResult>(result); Assert.IsType <String>(objectResult.Value); Assert.Equal("User not found", objectResult.Value); }
public SelectLocation() { vm = new SetLocationViewModel(); BindingContext = vm; InitializeComponent(); NavigationPage.SetHasBackButton(this, false); NavigationPage.SetHasNavigationBar(this, false); }
public async Task SetLocationAsync_ReturnsOK_WhenSuccessful() { // Arrange var mockUserManager = SharedFunctions.InitialiseMockUserManager(); mockUserManager.Setup(repo => repo.FindByNameAsync(It.IsAny <string>())) .ReturnsAsync(GetValidTestUser()); mockUserManager.Setup(repo => repo.UpdateAsync(It.IsAny <ApplicationUser>())) .Returns(Task.FromResult(IdentityResult.Success)); var controller = new ManageController(_mapper, _emailSender.Object, _urlService.Object, _logger.Object, mockUserManager.Object); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = SharedFunctions.GetTestClaimsPrincipal("example name") } }; var model = new SetLocationViewModel() { DefaultLocationLatitude = 2F, DefaultLocationLongitude = 2F }; // Act var result = await controller.SetLocationAsync(model); // Assert var objectResult = Assert.IsType <OkObjectResult>(result); Assert.NotNull(objectResult); Assert.True(objectResult is OkObjectResult); Assert.Equal(StatusCodes.Status200OK, objectResult.StatusCode); var returnObject = Assert.IsType <SetLocationViewModel>(objectResult.Value); Assert.Equal(model, returnObject); }