public NewAssessmentFunctions(ILogService logService, IResponseWithCorrelation responseWithCorrelation, IQuestionSetRepository questionSetRepository, IUserSessionRepository userSessionRepository, ISessionClient sessionClient, ICorrelationIdProvider correlationIdProvider)
 {
     this.logService = logService;
     this.responseWithCorrelation = responseWithCorrelation;
     this.questionSetRepository   = questionSetRepository;
     this.sessionClient           = sessionClient;
     this.correlationIdProvider   = correlationIdProvider;
     this.userSessionRepository   = userSessionRepository;
 }
        public ShortQuestionSetDataProcessorTests()
        {
            _questionRepository    = Substitute.For <IQuestionRepository>();
            _questionSetRepository = Substitute.For <IQuestionSetRepository>();
            _siteFinityHttpService = Substitute.For <ISiteFinityHttpService>();
            _logger = Substitute.For <ILogger>();

            _sut = new ShortQuestionSetDataProcessor(_siteFinityHttpService, _questionRepository, _questionSetRepository);
        }
 public ShortQuestionSetDataProcessor(
     ISiteFinityHttpService sitefinity,
     IQuestionRepository questionRepository,
     IQuestionSetRepository questionSetRepository)
 {
     _sitefinity            = sitefinity;
     _questionRepository    = questionRepository;
     _questionSetRepository = questionSetRepository;
 }
 public FilteredQuestionSetDataProcessor(
     IQuestionRepository questionRepository,
     IQuestionSetRepository questionSetRepository,
     ISiteFinityHttpService sitefinity)
 {
     _questionRepository    = questionRepository;
     _questionSetRepository = questionSetRepository;
     _sitefinity            = sitefinity;
 }
 public AssessmentCalculationService(
     IJobCategoryRepository jobCategoryRepository,
     IShortTraitRepository traitRepository,
     IQuestionRepository questionRepository,
     IQuestionSetRepository questionSetRepository)
 {
     _jobCategoryRepository = jobCategoryRepository;
     _traitRepository       = traitRepository;
     _questionRepository    = questionRepository;
     _questionSetRepository = questionSetRepository;
 }
 public NewAssessmentHttpTriggerTests()
 {
     _request                   = new DefaultHttpRequest(new DefaultHttpContext());
     _log                       = Substitute.For <ILogger>();
     _httpRequestHelper         = Substitute.For <IHttpRequestHelper>();
     _httpResponseMessageHelper = Substitute.For <IHttpResponseMessageHelper>();
     _userSessionRepository     = Substitute.For <IUserSessionRepository>();
     _questionSetRepository     = Substitute.For <IQuestionSetRepository>();
     _optsAppSettings           = Options.Create(new AppSettings {
         SessionSalt = "ncs"
     });
 }
        public CreateNewSkillsAssessmentTests()
        {
            httpRequest = A.Fake <HttpRequest>();
            var httpContextAccessor = A.Fake <IHttpContextAccessor>();

            questionSetRepository = A.Fake <IQuestionSetRepository>();
            userSessionRepository = A.Fake <IUserSessionRepository>();
            sessionClient         = A.Fake <ISessionClient>();
            var correlationProvider = new RequestHeaderCorrelationIdProvider(httpContextAccessor);

            using var telemetryConfig = new TelemetryConfiguration();
            var telemetryClient     = new TelemetryClient(telemetryConfig);
            var logger              = new LogService(correlationProvider, telemetryClient);
            var correlationResponse = new ResponseWithCorrelation(correlationProvider, httpContextAccessor);

            functionApp = new NewAssessmentFunctions(logger, correlationResponse, questionSetRepository, userSessionRepository, sessionClient, correlationProvider);
        }
        public ResultTests()
        {
            _jobFamilyRepository   = Substitute.For <IJobCategoryRepository>();
            _shortTraitRepository  = Substitute.For <IShortTraitRepository>();
            _questionSetRepository = Substitute.For <IQuestionSetRepository>();
            _questionRepository    = Substitute.For <IQuestionRepository>();

            _logger = Substitute.For <ILogger>();

            _assessmentCalculationService = new AssessmentCalculationService(
                _jobFamilyRepository,
                _shortTraitRepository,
                _questionRepository,
                _questionSetRepository);

            _shortTraitRepository.GetTraits().Returns(
                Task.FromResult(ResultTestMockData.Traits.ToArray())
                );

            _jobFamilyRepository.GetJobCategories("job-categories").Returns(
                Task.FromResult(ResultTestMockData.JobFamilies.ToArray())
                );

            _questionSetRepository.GetCurrentQuestionSet("filtered").Returns(
                Task.FromResult(new QuestionSet
            {
                Title              = "qs-1",
                QuestionSetKey     = "qs-1",
                QuestionSetVersion = "qs-1",
                MaxQuestions       = 3
            }));

            _questionRepository.GetQuestions("qs-1").Returns(Task.FromResult(new []
            {
                new Question {
                    TraitCode        = "Self Control",
                    IsFilterQuestion = true,
                    QuestionId       = "1", Order = 1, Texts = new []
                    {
                        new QuestionText {
                            LanguageCode = "en", Text = "Question 1"
                        }
                    }
                }
            }));
        }
Esempio n. 9
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "questionset/{assessmentType}/{title}/{version}")] HttpRequest req,
            string assessmentType,
            string title,
            int version,
            ILogger log,
            [Inject] IHttpRequestHelper httpRequestHelper,
            [Inject] IHttpResponseMessageHelper httpResponseMessageHelper,
            [Inject] IQuestionSetRepository questionSetRepository)
        {
            try
            {
                var correlationId = httpRequestHelper.GetDssCorrelationId(req);
                if (string.IsNullOrEmpty(correlationId))
                {
                    log.LogInformation("Unable to locate 'DssCorrelationId' in request header");
                }

                if (!Guid.TryParse(correlationId, out var correlationGuid))
                {
                    log.LogInformation("Unable to parse 'DssCorrelationId' to a Guid");
                    correlationGuid = Guid.NewGuid();
                }

                var questionSet = await questionSetRepository.GetQuestionSetVersion(assessmentType, title, version);

                if (questionSet == null)
                {
                    log.LogInformation($"Correlation Id: {correlationId} - Question set version does not exist {version}");
                    return(httpResponseMessageHelper.NoContent());
                }

                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(questionSet)));
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Fatal exception {message}", ex.ToString());
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
        }
 public QuestionSetController(QuestionSetService questionSetService, IQuestionSetRepository questionSetRepository)
 {
     QuestionSetService    = questionSetService;
     QuestionSetRepository = questionSetRepository;
 }
Esempio n. 11
0
        public static async Task <HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assessment")] HttpRequest req,
            ILogger log,
            [Inject] IHttpRequestHelper httpRequestHelper,
            [Inject] IHttpResponseMessageHelper httpResponseMessageHelper,
            [Inject] IUserSessionRepository userSessionRepository,
            [Inject] IQuestionSetRepository questionSetRepository,
            [Inject] IOptions <AppSettings> appSettings)
        {
            try
            {
                var correlationId = httpRequestHelper.GetDssCorrelationId(req);
                if (string.IsNullOrEmpty(correlationId))
                {
                    log.LogWarning("Unable to locate 'DssCorrelationId' in request header");
                    correlationId = Guid.NewGuid().ToString();
                }

                log.LogInformation($"CorrelationId: {correlationId} - Creating a new assessment");

                // Get the assessmentType and questionSetTitle values from the query string
                var queryDictionary = System.Web.HttpUtility.ParseQueryString(req.QueryString.ToString());
                var assessmentType  = queryDictionary.Get("assessmentType");
                if (string.IsNullOrEmpty(assessmentType))
                {
                    log.LogInformation($"CorrelationId: {correlationId} - Missing assessmentType {assessmentType}");
                    return(httpResponseMessageHelper.BadRequest());
                }

                // Get the current question set version for this assesssment type and title (supplied by CMS - configured in appsettings)
                var currentQuestionSetInfo = await questionSetRepository.GetCurrentQuestionSet(assessmentType);

                if (currentQuestionSetInfo == null)
                {
                    log.LogInformation($"CorrelationId: {correlationId} - Unable to load latest question set {assessmentType}");
                    return(httpResponseMessageHelper.NoContent());
                }


                // Create a new user session
                string salt         = appSettings.Value.SessionSalt;
                string sessionId    = SessionIdHelper.GenerateSessionId(salt);
                string partitionKey = PartitionKeyGenerator.UserSession(sessionId);

                var userSession = new UserSession()
                {
                    UserSessionId   = sessionId,
                    Salt            = salt,
                    StartedDt       = DateTime.Now,
                    LanguageCode    = "en",
                    PartitionKey    = partitionKey,
                    AssessmentState = new AssessmentState(currentQuestionSetInfo.QuestionSetVersion, currentQuestionSetInfo.MaxQuestions),
                    AssessmentType  = currentQuestionSetInfo.AssessmentType.ToLower()
                };
                await userSessionRepository.CreateUserSession(userSession);

                log.LogInformation($"CorrelationId: {correlationId} - Finished creating new assessment {userSession.UserSessionId}");

                var result = new FilterSessionResponse()
                {
                    SessionId = userSession.PrimaryKey
                };
                return(httpResponseMessageHelper.Ok(JsonConvert.SerializeObject(result)));
            }
            catch (Exception ex)
            {
                log.LogError(ex, "Fatal exception {message}", ex.ToString());
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.InternalServerError
                });
            }
        }
Esempio n. 12
0
 public QuestionSetService(IQuestionSetRepository questionSetRepository)
 {
     QuestionSetRepository = questionSetRepository;
 }