public void Given_valid_request_When_DetachDocuments_is_called_Then_should_call_appropiate_methods()
        {
            //Given
            var riskAssessmentService = CreateRiskAssessmentService();
            var detachDocumentsFromRiskAssessmentRequest = new DetachDocumentsFromRiskAssessmentRequest()
                                                               {
                                                                   DocumentsToDetach = new List<long>()
                                                                                           {
                                                                                               1,
                                                                                               2
                                                                                           },
                                                                   RiskAssessmentId = 2,
                                                                   CompanyId = 1,
                                                                   UserId = Guid.NewGuid()
                                                               };

            var mockRiskAssessment = new Mock<GeneralRiskAssessment>();
            _riskAssessmentRepository
                .Setup(rr => rr.GetByIdAndCompanyId(detachDocumentsFromRiskAssessmentRequest.RiskAssessmentId, detachDocumentsFromRiskAssessmentRequest.CompanyId))
                .Returns(mockRiskAssessment.Object);

            _userRepository
                .Setup(x => x.GetByIdAndCompanyId(detachDocumentsFromRiskAssessmentRequest.UserId, detachDocumentsFromRiskAssessmentRequest.CompanyId))
                .Returns(_user);

            //When
            riskAssessmentService.DetachDocumentsToRiskAssessment(detachDocumentsFromRiskAssessmentRequest);

            //Then
            _riskAssessmentRepository.Verify(x => x.SaveOrUpdate(mockRiskAssessment.Object));
            _userRepository.Verify(x => x.GetByIdAndCompanyId(detachDocumentsFromRiskAssessmentRequest.UserId, detachDocumentsFromRiskAssessmentRequest.CompanyId));
            mockRiskAssessment.Verify(x => x.DetachDocumentFromRiskAssessment(It.Is<IEnumerable<long>>(y => y.Count() == detachDocumentsFromRiskAssessmentRequest.DocumentsToDetach.Count), _user), Times.Once());
        }
        public void DetachDocumentsToRiskAssessment(DetachDocumentsFromRiskAssessmentRequest request)
        {
            _log.Add(request);

            try
            {
                var user = _userForAuditingRepository.GetByIdAndCompanyId(request.UserId, request.CompanyId);
                var riskAssessment = _riskAssessmentRepository.GetByIdAndCompanyId(request.RiskAssessmentId, request.CompanyId);

                riskAssessment.DetachDocumentFromRiskAssessment(request.DocumentsToDetach, user);

                _riskAssessmentRepository.SaveOrUpdate(riskAssessment);
            }
            catch (Exception ex)
            {
                _log.Add(ex);
                throw;
            }
        }