public async Task CreateEpaRecordsExample() { long uln = 1234567890; string firstName = "Fred"; string lastName = "Blogs"; int standardCode = 1; string standardReference = "ST0127"; string epaOutcome = "Fail"; DateTime epaDate = DateTime.UtcNow; CreateEpaRequest newEpa = new CreateEpaRequest { Learner = new Learner { Uln = uln, GivenNames = firstName, FamilyName = lastName }, Standard = new Standard { StandardCode = standardCode, StandardReference = standardReference }, EpaDetails = new EpaDetails { Epas = new List <EpaRecord> { new EpaRecord { EpaOutcome = epaOutcome, EpaDate = epaDate } } } }; if (newEpa.IsValid(out _)) { // NOTE: The External API performs validation, however it is a good idea to check beforehand await _EpaApiClient.CreateEpaRecords(new List <CreateEpaRequest> { newEpa }); } }
public async Task CreateEpaRecordsExample() { const string filePath = @"CsvFiles\createEpaRecords.csv"; IEnumerable <CreateEpaRequest> epaRecordsToCreate; using (TextReader textReader = File.OpenText(filePath)) { using (CsvReader csv = new CsvReader(textReader)) { csv.Configuration.HeaderValidated = null; csv.Configuration.MissingFieldFound = null; csv.Configuration.RegisterClassMap(new CsvClassMaps.CreateEpaRequestMap()); epaRecordsToCreate = csv.GetRecords <CreateEpaRequest>().ToList(); } } // NOTE: The External API performs validation, however it is a good idea to check beforehand. bool invalidDataSupplied = epaRecordsToCreate.Any(c => !c.IsValid(out _)); if (invalidDataSupplied) { throw new InvalidOperationException("The supplied CSV file contains invalid data. Please correct and then try again."); } else { var response = (await _EpaApiClient.CreateEpaRecords(epaRecordsToCreate)).ToList(); // NOTE: You may want to deal with good & bad records separately var goodEpaRecords = response.Where(c => c.EpaReference != null && !c.ValidationErrors.Any()); var badEpaRecords = response.Except(goodEpaRecords); Console.WriteLine($"Good Certificates: {goodEpaRecords.Count()}, Bad Certificates: {badEpaRecords.Count()} "); } }
public async Task CreateEpaRecord() { // arrange var learner = Builder <Models.Certificates.Learner> .CreateNew().Build(); var standard = Builder <Models.Certificates.Standard> .CreateNew().Build(); var epaRecord = Builder <EpaRecord> .CreateNew().With(er => er.EpaOutcome = "Pass").Build(); var epaDetails = Builder <EpaDetails> .CreateNew().With(ed => ed.Epas = new List <EpaRecord> { epaRecord }).Build(); var epaRequest = new CreateEpaRequest { Learner = learner, Standard = standard, EpaDetails = epaDetails }; var expectedResponse = new List <CreateEpaResponse> { new CreateEpaResponse { EpaReference = "1234567890" } }; _MockHttp.When(HttpMethod.Post, $"{apiBaseAddress}/api/v1/epa") .Respond(HttpStatusCode.OK, "application/json", JsonConvert.SerializeObject(expectedResponse)); // act var actual = await _ApiClient.CreateEpaRecords(new List <CreateEpaRequest> { epaRequest }); // assert Assert.That(actual, Has.Count.EqualTo(1)); Assert.That(actual.First().ValidationErrors, Has.Count.EqualTo(0)); Assert.That(actual.First().EpaReference, Is.EqualTo(expectedResponse.First().EpaReference)); }