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 } } } }