Example #1
0
        public async Task GetLearner()
        {
            // arrange
            long   uln          = 1234567890;
            string lastname     = "Bloggs";
            int    standardCode = 1;

            var standard = Builder <Models.Certificates.Standard> .CreateNew().With(s => s.StandardCode = standardCode).Build();

            var learner = Builder <Models.Certificates.Learner> .CreateNew().With(l => l.Uln = uln).With(l => l.FamilyName = lastname).Build();

            var learnerData = Builder <LearnerData> .CreateNew().With(cd => cd.Standard = standard)
                              .With(cd => cd.Learner         = learner)
                              .With(cd => cd.LearningDetails = Builder <LearningDetails> .CreateNew().Build())
                              .Build();

            var status = new Status {
                CompletionStatus = 1
            };

            var expectedResponse = new Learner {
                LearnerData = learnerData, Status = status, Certificate = null, EpaDetails = null
            };

            _MockHttp.When(HttpMethod.Get, $"{apiBaseAddress}/api/v1/learner/{uln}/{lastname}/{standardCode}")
            .Respond(HttpStatusCode.OK, "application/json", JsonConvert.SerializeObject(expectedResponse));

            // act
            var request = new GetLearnerRequest {
                Uln = uln, FamilyName = lastname, Standard = standardCode.ToString()
            };
            var actual = await _ApiClient.GetLearner(request);

            // assert
            Assert.That(actual.Error, Is.Null);
            Assert.That(actual.Learner, Is.Not.Null);
        }
        public async Task GetLearnerExample()
        {
            long   uln      = 1234567890;
            string lastName = "Blogs";
            string standard = "1";

            GetLearnerRequest learnerToGet = new GetLearnerRequest
            {
                Uln        = uln,
                FamilyName = lastName,
                Standard   = standard,
            };

            if (learnerToGet.IsValid(out _))
            {
                // NOTE: The External API performs validation, however it is a good idea to check beforehand
                await _LearnerApiClient.GetLearner(learnerToGet);
            }
        }
        public async Task GetLearnerExample()
        {
            const string filePath = @"CsvFiles\getLearners.csv";

            IEnumerable <GetLearnerRequest> learners;

            using (TextReader textReader = File.OpenText(filePath))
            {
                using (CsvReader csv = new CsvReader(textReader))
                {
                    csv.Configuration.HeaderValidated   = null;
                    csv.Configuration.MissingFieldFound = null;
                    learners = csv.GetRecords <GetLearnerRequest>().ToList();
                }
            }

            // NOTE: The External API performs validation, however it is a good idea to check beforehand.
            bool invalidDataSupplied = learners.Any(c => !c.IsValid(out _));

            if (invalidDataSupplied)
            {
                throw new InvalidOperationException("The supplied CSV file contains invalid data. Please correct and then try again.");
            }
            else
            {
                // NOTE: The External API does not have an batch delete (for safety reasons). You'll have to loop.
                foreach (var request in learners)
                {
                    var response = await _LearnerApiClient.GetLearner(request);

                    if (response is null)
                    {
                        // NOTE: You may want to deal with bad records separately
                    }
                }
            }
        }