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" } } } })); }
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; }
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 }); } }
public QuestionSetService(IQuestionSetRepository questionSetRepository) { QuestionSetRepository = questionSetRepository; }