private async Task ProcessSynonyms(ITISSynonymTransformer transformer, SynonymProcessor processor, List <Vernacular> vernaculars) { if (vernaculars.Any()) { var synonyms = new List <Synonym>(); foreach (var vernacular in vernaculars) { try { var synonym = transformer.Transform(vernacular); synonyms.Add(synonym); } catch (Exception ex) { _logger.LogError($"Unable to process {vernacular.Taxon} {vernacular.Name} {vernacular.Rank} {ex.Message}", ex); } } var synonymsResult = await processor.Process(synonyms); foreach (var synonymResult in synonymsResult) { _logger.LogInformation("TaxonId" + ": " + synonymResult.Taxon.TaxonId + " Synonym" + ": " + synonymResult.Name + " Rank" + ": " + synonymResult.Rank); } } }
public async Task TestITISSynonymProcessor() { var transformer = new ITISSynonymTransformer(); var itisData = ITISSynonymData(); var synonyms = new List <Synonym>(); itisData.ForEach(i => synonyms.Add(transformer.Transform(i))); var originRepository = RepositoryMocks.GetStandardMockOriginRepository(new List <Stores.Origin>()); var locationRepository = RepositoryMocks.GetStandardMockLocationRepository(new List <Stores.Location>()); var synonymRepository = RepositoryMocks.GetStandardMockSynonymRepository(new List <Stores.Synonym>()); var taxonRepository = RepositoryMocks.GetStandardMockTaxonRepository(new List <Stores.Taxon>()); var locationService = new LocationService(locationRepository.Object); var originService = new OriginService(originRepository.Object, locationService); var synonymService = new SynonymService(synonymRepository.Object); var taxonService = new TaxonService(taxonRepository.Object, synonymService); var processor = new SynonymProcessor(synonymService, originService, taxonService); await processor.InitializeOrigin(transformer.Origin); await processor.InitializeTaxons(); var result = await processor.Process(synonyms); result.Count().Should().Be(16); result.Count(s => s.Taxon.Kingdom == "Plantae").Should().Be(1); result.Count(s => s.Language == "English").Should().Be(10); result.Count(s => s.DateUpdated.Year == 2003).Should().Be(3); result.Count(s => s.Rank == "Variety").Should().Be(2); result.Count(s => s.Taxon.Variety != null).Should().Be(2); result.Count(s => s.Taxon.Variety == "paludicola").Should().Be(1); result.Select(s => s.Origin).Count().Should().Be(16); }