public async Task Should_Call_UpdateAsync() { //Arrange const int houseId = 1; var model = new HouseToUpdate { Id = houseId }; var entity = new HouseEf { Id = houseId }; _houseRepositoryMock.Setup(x => x.GetByIdAsync(model.Id)) .ReturnsAsync(entity); _mapperMock.Setup(x => x.Map(model, entity)) .Returns(entity); _manager = new HouseManager(_mapperMock.Object, _houseRepositoryMock.Object); //Act await _manager.UpdateAsync(model); //Assert _houseRepositoryMock.Verify(x => x.GetByIdAsync(model.Id), Times.Once); _mapperMock.Verify(x => x.Map(model, entity)); _houseRepositoryMock.Verify(x => x.UpdateAsync(entity), Times.Once); }
public async Task UpdateAsync(HouseToUpdate model) { var entity = await _repository.GetByIdAsync(model.Id); _mapper.Map(model, entity); await _repository.UpdateAsync(entity); }
private static HouseEf ConvertFrom_Entity_To_HouseToUpdate(HouseToUpdate model, HouseEf entity) { var instance = entity ?? new HouseEf(); instance.Name = model.Name.RemoveSpace(); instance.Street = model.Street.RemoveSpace(); instance.OutdoorNumber = model.OutdoorNumber.RemoveSpace(); instance.InteriorNumber = model.InteriorNumber.RemoveSpace(); instance.HouseUsers.Clear(); instance.HouseUsers = model.Users? .Select(user => new HouseUserEf { UserId = user.Id, HouseId = model.Id }).ToList(); return(instance); }
public async Task Should_GetByIdAsync_ReturnsAHouses() { //Arrange const int houseId = 1; var houseEntity = new HouseEf { Id = houseId }; var houseModels = new HouseToUpdate { Id = houseId }; var parameter = new Parameter { ItemsPerPage = 5 }; _houseRepositoryMock.Setup(x => x.GetByIdAsync(houseId)) .ReturnsAsync(houseEntity); _mapperMock.Setup(x => x.Map <HouseToUpdate>(houseEntity)) .Returns(houseModels); _manager = new HouseManager(_mapperMock.Object, _houseRepositoryMock.Object); //Act var model = await _manager.GetByIdAsync(houseId); //Assert _houseRepositoryMock.Verify(x => x.GetByIdAsync(houseId), Times.Once); _mapperMock.Verify(x => x.Map <HouseToUpdate>(houseEntity), Times.Once); Assert.NotNull(model); Assert.Equal(houseId, model.Id); }
private static HouseToUpdate ConvertFrom_HouseToUpdate_To_Entity(HouseEf entity, HouseToUpdate model) { var instance = model ?? new HouseToUpdate(); instance.Id = entity.Id; instance.Name = entity.Name; instance.Street = entity.Street; instance.IsActive = entity.IsActive; instance.OutdoorNumber = entity.OutdoorNumber; instance.ResidentialId = entity.ResidentialId; instance.InteriorNumber = entity.InteriorNumber; instance.Users = entity.HouseUsers?.Select( houseUser => new FilteredUser { Id = houseUser.User.Id, Email = houseUser.User.Email, FullName = $"{houseUser.User.Name} {houseUser.User.LastName}" }).ToList(); return(instance); }
public async Task <IActionResult> Update([FromRoute] int residentialId, [FromRoute] int houseId, [FromBody] HouseToUpdate house) { if (!ModelState.IsValid) { return(BadRequest()); } var loggedUser = User.GetUserId(); if (!await _userManager.IsAdminAsync(residentialId, loggedUser)) { return(Forbid(_localizer.GetValue(LocalizationMessage.YouDoNotHavePermissionToAccessThisResource))); } if (!await _residentialManager.ExistsAsync(residentialId)) { return(NotFound(_localizer.GetValue(LocalizationMessage.ResidentialNotFound))); } if (!await _houseManager.ExistsAsync(residentialId, houseId)) { return(NotFound(_localizer.GetValue(LocalizationMessage.HouseNotFound))); } if (await _houseManager.ExistsAsync(residentialId, house.Id, house.Name)) { return(BadRequest(_localizer.GetValue(LocalizationMessage.NameOfHouseAlreadyExists))); } await _houseManager.UpdateAsync(house); return(NoContent()); }
public async Task Should_Get_ReturnsANotFoundResultBecauseHouseDoesNotExist() { //Arrange const int userId = 2; const int houseId = 1; const int residentialId = 3; var houseModel = new HouseToUpdate { Id = houseId }; _userManagerMock.Setup(x => x.IsAdminAsync(residentialId, userId)) .ReturnsAsync(true); _residentialManagerMock.Setup(x => x.ExistsAsync(residentialId)) .ReturnsAsync(true); _houseManagerMock.Setup(x => x.ExistsAsync(residentialId, houseId)) .ReturnsAsync(false); _houseManagerMock.Setup(x => x.GetByIdAsync(houseId)) .ReturnsAsync(houseModel); var localizedString = new LocalizedString(LocalizationMessage.HouseNotFound, LocalizationMessage.HouseNotFound); _localizerMock.Setup(x => x[LocalizationMessage.HouseNotFound]) .Returns(localizedString); var claims = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(Business.Utils.ClaimsCustomTypes.Id, userId + ""), new Claim(Business.Utils.ClaimsCustomTypes.RoleId, ((int)RoleEnum.Admin) + "") })); var controllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext { User = claims } }; _controller = new HouseController(_userManagerMock.Object, _houseManagerMock.Object, _residentialManagerMock.Object, _localizerMock.Object) { ControllerContext = controllerContext }; //Act var result = await _controller.Get(residentialId, houseId); //Assert _userManagerMock.Verify(x => x.IsAdminAsync(residentialId, userId), Times.Once); _residentialManagerMock.Verify(x => x.ExistsAsync(residentialId), Times.Once); _houseManagerMock.Verify(x => x.ExistsAsync(residentialId, houseId), Times.Once); _houseManagerMock.Verify(x => x.GetByIdAsync(houseId), Times.Never); var notFoundObjectResult = Assert.IsType <NotFoundObjectResult>(result); Assert.NotNull(notFoundObjectResult); Assert.Equal(notFoundObjectResult.Value, LocalizationMessage.HouseNotFound); }
public async Task Should_Get_ReturnsAForbidResult() { //Arrange const int userId = 2; const int houseId = 1; const int residentialId = 3; var houseModel = new HouseToUpdate { Id = houseId }; _userManagerMock.Setup(x => x.IsAdminAsync(residentialId, userId)) .ReturnsAsync(false); _residentialManagerMock.Setup(x => x.ExistsAsync(residentialId)) .ReturnsAsync(true); _houseManagerMock.Setup(x => x.ExistsAsync(residentialId, houseId)) .ReturnsAsync(true); _houseManagerMock.Setup(x => x.GetByIdAsync(houseId)) .ReturnsAsync(houseModel); var localizedString = new LocalizedString(LocalizationMessage.YouDoNotHavePermissionToAccessThisResource, LocalizationMessage.YouDoNotHavePermissionToAccessThisResource); _localizerMock.Setup(x => x[LocalizationMessage.YouDoNotHavePermissionToAccessThisResource]) .Returns(localizedString); var claims = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(Business.Utils.ClaimsCustomTypes.Id, userId + ""), new Claim(Business.Utils.ClaimsCustomTypes.RoleId, ((int)RoleEnum.Admin) + "") })); var controllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext { User = claims } }; _controller = new HouseController(_userManagerMock.Object, _houseManagerMock.Object, _residentialManagerMock.Object, _localizerMock.Object) { ControllerContext = controllerContext }; //Act var result = await _controller.Get(residentialId, houseId); //Assert _userManagerMock.Verify(x => x.IsAdminAsync(residentialId, userId), Times.Once); _residentialManagerMock.Verify(x => x.ExistsAsync(residentialId), Times.Never); _houseManagerMock.Verify(x => x.ExistsAsync(residentialId, houseId), Times.Never); _houseManagerMock.Verify(x => x.GetByIdAsync(houseId), Times.Never); var forbidResult = Assert.IsType <ForbidResult>(result); Assert.NotNull(forbidResult); Assert.True(forbidResult.AuthenticationSchemes.Contains(LocalizationMessage.YouDoNotHavePermissionToAccessThisResource)); }
public async Task Should_Get_ReturnsAHouseModel() { //Arrange const int userId = 2; const int houseId = 1; const int residentialId = 3; var houseModel = new HouseToUpdate { Id = houseId }; _userManagerMock.Setup(x => x.IsAdminAsync(residentialId, userId)) .ReturnsAsync(true); _residentialManagerMock.Setup(x => x.ExistsAsync(residentialId)) .ReturnsAsync(true); _houseManagerMock.Setup(x => x.ExistsAsync(residentialId, houseId)) .ReturnsAsync(true); _houseManagerMock.Setup(x => x.GetByIdAsync(houseId)) .ReturnsAsync(houseModel); var claims = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(Business.Utils.ClaimsCustomTypes.Id, userId + ""), new Claim(Business.Utils.ClaimsCustomTypes.RoleId, ((int)RoleEnum.SuperAdmin) + "") })); var controllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext { User = claims } }; _controller = new HouseController(_userManagerMock.Object, _houseManagerMock.Object, _residentialManagerMock.Object, _localizerMock.Object) { ControllerContext = controllerContext }; //Act var result = await _controller.Get(residentialId, houseId); //Assert _userManagerMock.Verify(x => x.IsAdminAsync(residentialId, userId), Times.Once); _residentialManagerMock.Verify(x => x.ExistsAsync(residentialId), Times.Once); _houseManagerMock.Verify(x => x.ExistsAsync(residentialId, houseId), Times.Once); _houseManagerMock.Verify(x => x.GetByIdAsync(houseId), Times.Once); var OkResult = Assert.IsType <OkObjectResult>(result); var model = Assert.IsAssignableFrom <HouseToUpdate>(OkResult.Value); Assert.NotNull(model); Assert.Equal(houseId, model.Id); }