public void Update_CallsValidator_WithRuleset()
        {
            var logic = new SolutionsExLogic(
                _solutionsModifier.Object,
                _capabilitiesImplementedModifier.Object,
                _standardsApplicableModifier.Object,
                _capabilitiesImplementedEvidenceModifier.Object,
                _standardsApplicableEvidenceModifier.Object,
                _capabilitiesImplementedReviewsModifier.Object,
                _standardsApplicableReviewsModifier.Object,
                _datastore.Object, _context.Object, _validator.Object, _filter.Object,
                _contacts.Object, _evidenceBlobStoreLogic.Object);
            var solnEx = Creator.GetSolutionEx();

            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());

            var valres = new ValidationResult();

            _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres);

            logic.Update(solnEx);

            _validator.Verify(x => x.ValidateAndThrowEx(
                                  It.Is <SolutionEx>(sex => sex == solnEx),
                                  It.Is <string>(rs => rs == nameof(ISolutionsExLogic.Update))), Times.Once());
        }
        public void Update_DoesNotCallPrepareForSolution_WhenNotRegistered(SolutionStatus status)
        {
            var logic = new SolutionsExLogic(
                _solutionsModifier.Object,
                _capabilitiesImplementedModifier.Object,
                _standardsApplicableModifier.Object,
                _capabilitiesImplementedEvidenceModifier.Object,
                _standardsApplicableEvidenceModifier.Object,
                _capabilitiesImplementedReviewsModifier.Object,
                _standardsApplicableReviewsModifier.Object,
                _datastore.Object, _context.Object, _validator.Object, _filter.Object,
                _contacts.Object, _evidenceBlobStoreLogic.Object);
            var soln   = Creator.GetSolution(status: status);
            var solnEx = Creator.GetSolutionEx(soln: soln);

            _context.Setup(x => x.HttpContext).Returns(Creator.GetContext());
            _contacts.Setup(x => x.ByEmail(It.IsAny <string>())).Returns(Creator.GetContact());

            var valres = new ValidationResult();

            _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres);

            logic.Update(solnEx);

            _evidenceBlobStoreLogic.Verify(x => x.PrepareForSolution(soln.Id), Times.Never);
        }
        public void Update_Calls_SolutionModifier()
        {
            var logic = new SolutionsExLogic(
                _solutionsModifier.Object,
                _capabilitiesImplementedModifier.Object,
                _standardsApplicableModifier.Object,
                _capabilitiesImplementedEvidenceModifier.Object,
                _standardsApplicableEvidenceModifier.Object,
                _capabilitiesImplementedReviewsModifier.Object,
                _standardsApplicableReviewsModifier.Object,
                _datastore.Object, _context.Object, _validator.Object, _filter.Object,
                _contacts.Object, _evidenceBlobStoreLogic.Object);
            var soln   = Creator.GetSolution();
            var solnEx = Creator.GetSolutionEx(soln: soln);

            var valres = new ValidationResult();

            _validator.Setup(x => x.Validate(It.IsAny <ValidationContext>())).Returns(valres);

            logic.Update(solnEx);

            _solutionsModifier.Verify(x => x.ForUpdate(soln), Times.Once);
        }