public void When_InitiateDysacWithErrors_ThrowException()
            {
                var userSession = new DfcUserSession();

                userSession.PartitionKey = "key";

                var restClient = Substitute.For <IRestClient>();

                var lastResponse = Substitute.For <RestClient.APIResponse>(new HttpResponseMessage()
                {
                    Content = new StringContent("something", Encoding.UTF8), StatusCode = HttpStatusCode.BadRequest
                });

                restClient.LastResponse.Returns(lastResponse);

                restClient.PostAsync <AssessmentShortResponse>(apiPath: "", content: null).ReturnsForAnyArgs(new AssessmentShortResponse()
                {
                    CreatedDate  = DateTime.Now,
                    SessionId    = "sesionId",
                    Salt         = "salt",
                    PartitionKey = "p-key"
                });

                IDysacSessionReader dysacService = new DysacService(_log, restClient, _dysacServiceSetings, _oldDysacServiceSetings, _sessionClient);

                Assert.ThrowsAsync <DysacException>(() => dysacService.InitiateDysac(userSession));
            }
            public async Task When_InitiateDysacOnlySessionWithNoErrors_ReturnOK()
            {
                var userSession = new DfcUserSession();

                userSession.PartitionKey = "key";

                var lastResponse = Substitute.For <RestClient.APIResponse>(new HttpResponseMessage()
                {
                    Content = new StringContent("something", Encoding.UTF8), StatusCode = HttpStatusCode.Created
                });

                _restClient.LastResponse.Returns(lastResponse);

                _restClient.PostAsync <AssessmentShortResponse>(Arg.Any <string>(), Arg.Any <HttpRequestMessage>())
                .ReturnsForAnyArgs(new AssessmentShortResponse
                {
                    CreatedDate  = DateTime.Now,
                    SessionId    = "sesionId",
                    Salt         = "salt",
                    PartitionKey = "p-key"
                }
                                   );

                IDysacSessionReader dysacService = new DysacService(_log, _restClient, _dysacServiceSetings, _oldDysacServiceSetings, _sessionClient);
                await dysacService.InitiateDysacOnly();
            }
        public async Task WhenNullResponse_ReturnEmpty()
        {
            _client = Substitute.For <IRestClient>();
            _client.GetAsync <DysacResults>(Arg.Any <string>()).ReturnsNullForAnyArgs();
            _service = new DysacService(_logger, _client, _settings, _oldDysacSettings, _sessionClient);
            var result = await _service.GetDysacJobCategories("SessionId");

            result.Should().BeEmpty();
        }
        public async Task WhenApiSuccess_ReturnDysacResults()
        {
            var response = new DysacServiceResponse();

            response.ResponseMessage = "message";
            response.ResponseMessage = "message";
            var returnObject = Mapping.Mapper.Map <DysacJobCategory[]>(DysacTestData.SuccessfulApiCall().JobCategories);

            _client = Substitute.For <IRestClient>();
            _client.GetAsync <DysacResults>(Arg.Any <string>(), Arg.Any <HttpRequestMessage>()).Returns(DysacTestData.SuccessfulApiCall());
            _service = new DysacService(_logger, _client, _settings, _oldDysacSettings, _sessionClient);
            var result = await _service.GetDysacJobCategories("SessionId");

            result[0].JobFamilyCode.Should().Be("CAM");
            result[0].JobFamilyName.Should().Be("Creative and media");
            result[0].JobFamilyUrl.Should().Be("creative-and-media");
        }
        public async Task WhenApiError_ReturnEmpty()
        {
            var oldDysacSettings = new OldDysacSettings()
            {
                ApiKey           = "key",
                AssessmentApiUrl = "Url",
                DysacResultsUrl  = "url"
            };
            var key        = oldDysacSettings.ApiKey;
            var assessment = oldDysacSettings.AssessmentApiUrl;
            var dysac      = oldDysacSettings.DysacResultsUrl;

            _client = Substitute.For <IRestClient>();
            _client.GetAsync <DysacResults>(Arg.Any <string>(), Arg.Any <HttpRequestMessage>()).Throws(new Exception("Exception"));
            _service = new DysacService(_logger, _client, _settings, Options.Create(oldDysacSettings), _sessionClient);
            var result = await _service.GetDysacJobCategories("SessionId");

            result.Should().BeNull();
            key.Should().Be(oldDysacSettings.ApiKey);
            assessment.Should().Be(oldDysacSettings.AssessmentApiUrl);
            dysac.Should().Be(oldDysacSettings.DysacResultsUrl);
        }
            public async Task When_LoadExistingDysacOnlyAssessmentReturnsValidResponse_ReturnOK()
            {
                _restClient.GetAsync <AssessmentShortResponse>(Arg.Any <string>(), Arg.Any <HttpRequestMessage>()).ReturnsForAnyArgs(new AssessmentShortResponse()
                {
                    CreatedDate  = DateTime.Now,
                    PartitionKey = "partitionkey",
                    SessionId    = "session",
                    Salt         = "salt"
                });

                var lastResponse = Substitute.For <RestClient.APIResponse>(new HttpResponseMessage()
                {
                    Content = new StringContent("something", Encoding.UTF8), StatusCode = HttpStatusCode.Created
                });

                _restClient.LastResponse.Returns(lastResponse);

                var dysacService = new DysacService(_log, _restClient, _dysacServiceSetings, _oldDysacServiceSetings, _sessionClient);


                await dysacService.LoadExistingDysacOnlyAssessment("session");
            }
        public void Init()
        {
            _logger        = Substitute.For <ILogger <DysacService> >();
            _client        = Substitute.For <IRestClient>();
            _sessionClient = Substitute.For <ISessionClient>();
            _settings      = Options.Create(new DysacSettings()
            {
                ApiKey         = "9238dfjsjdsidfs83fds",
                ApiUrl         = "https://this.is.anApi.org.uk",
                ApiVersion     = "v1",
                DysacReturnUrl = "SomeURL",
                DysacSaveUrl   = "SaveURL",
                DysacUrl       = "DysacURL"
            });
            _oldDysacSettings = Options.Create(new OldDysacSettings()
            {
                ApiKey           = "9238dfjsjdsidfs83fds",
                AssessmentApiUrl = "https://this.is.anApi.org.uk",
                DysacResultsUrl  = "https://this.is.anApi.org.uk",
            });

            _service = new DysacService(_logger, _client, _settings, _oldDysacSettings, _sessionClient);
        }
 public void When_DysacService_ObjectCreated()
 {
     var logger       = Substitute.For <ILogger <DysacService> >();
     var restClient   = Substitute.For <IRestClient>();
     var dysacService = new DysacService(logger, restClient, _dysacServiceSetings, _oldDysacServiceSetings, _sessionClient);
 }