Example #1
0
        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);
        }
Example #4
0
        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);
        }
Example #6
0
        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());
        }
Example #7
0
        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);
        }
Example #8
0
        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));
        }
Example #9
0
        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);
        }