public void GetTaxonomies_Successful_WithInvalidBroader() { //Arrange var expectedTaxonomies = new TaxonomySchemeBuilder().GenerateSampleTaxonomies(); expectedTaxonomies.FirstOrDefault(t => t.Id == "https://pid.bayer.com/2fdbd958-b0c3-4a4d-96a9-41641964140d/0")?.Children.Clear(); var mockTaxonomy = new TaxonomySchemeBuilder() .GenerateSampleMathematicalTaxonomyList() .Build(); var modifiedTaxonomy = mockTaxonomy.FirstOrDefault(t => t.Id == "https://pid.bayer.com/2fdbd958-b0c3-4a4d-96a9-41641964140d/8"); modifiedTaxonomy.Properties[Graph.Metadata.Constants.SKOS.Broader] = new List <dynamic>() { "https://pid.bayer.com/2fdbd958-b0c3-4a4d-96a9-41641964140d/9" }; _taxonomyRepoMock.Setup(mock => mock.GetTaxonomies(It.IsAny <string>())).Returns(mockTaxonomy); // Act var taxonomies = _service.GetTaxonomies("https://pid.bayer.com/kos/19050/MathematicalModelCategory"); // Assert Assert.Equal(taxonomies, expectedTaxonomies); }
public async Task GetTaxonomy_Success() { var identifier = HttpUtility.UrlEncode("https://pid.bayer.com/2fdbd958-b0c3-4a4d-96a9-41641964140d/0"); var expectedTaxonomy = new TaxonomySchemeBuilder().GenerateSampleTaxonomy(); var result = await _client.GetAsync($"{_apiPath}?subject={identifier}"); var content = await result.Content.ReadAsStringAsync().ConfigureAwait(false); var taxonomy = Newtonsoft.Json.JsonConvert.DeserializeObject <TaxonomyResultDtoV2>(content); Assert.NotNull(taxonomy); Assert.Equal("https://pid.bayer.com/2fdbd958-b0c3-4a4d-96a9-41641964140d/0", taxonomy.Subject); Assert.Equal("Classification Model", taxonomy.Name); Assert.False(taxonomy.HasParent); Assert.True(taxonomy.HasChild); Assert.Equal(3, taxonomy.Children.Count); var dlmTaxo = taxonomy.Children.First(t => t.Name == "Deep Learning Model"); Assert.Equal("Deep Learning Model", dlmTaxo.Name); Assert.True(dlmTaxo.HasParent); Assert.True(dlmTaxo.HasChild); Assert.Equal("https://pid.bayer.com/2fdbd958-b0c3-4a4d-96a9-41641964140d/8", dlmTaxo.Subject); Assert.Equal(4, dlmTaxo.Children.Count); }
public TaxonomyValidatorTests() { var loggerMock = new Mock <ILogger <TaxonomyService> >(); var validationServiceMock = new Mock <IValidationService>(); var metadataServiceMock = new Mock <IMetadataService>(); var cacheServiceMock = new Mock <ICacheService>(); var mathematicalTaxonomy = new TaxonomySchemeBuilder().GenerateSampleMathematicalTaxonomyList().Build(); var informationClassificationTaxonomy = new TaxonomySchemeBuilder().GenerateSampleInformationClassificationTaxonomyList().Build(); var taxonomyRepoMock = new Mock <ITaxonomyRepository>(); taxonomyRepoMock.Setup(t => t.GetTaxonomies(Graph.Metadata.Constants.Resource.Type.MathematicalModelCategory)).Returns(mathematicalTaxonomy); taxonomyRepoMock.Setup(t => t.GetTaxonomies(Graph.Metadata.Constants.Resource.Type.InformationClassification)).Returns(informationClassificationTaxonomy); cacheServiceMock.Setup(t => t.GetOrAdd(It.IsAny <string>(), It.IsAny <Func <IList <Taxonomy> > >())).Returns( (string key, Func <IList <Taxonomy> > function) => function()); cacheServiceMock.Setup(t => t.GetOrAdd(It.IsAny <string>(), It.IsAny <Func <IList <TaxonomyResultDTO> > >())).Returns( (string key, Func <IList <TaxonomyResultDTO> > function) => function()); var pidUriTemplateServiceMock = new Mock <IPidUriTemplateService>(); pidUriTemplateServiceMock.Setup(t => t.GetFlatPidUriTemplateByPidUriTemplate(It.IsAny <Entity>())) .Returns(null as PidUriTemplateFlattened); pidUriTemplateServiceMock.Setup(t => t.GetFlatPidUriTemplateByPidUriTemplate(It.IsAny <Entity>())) .Returns(null as PidUriTemplateFlattened); pidUriTemplateServiceMock.Setup(t => t.FormatPidUriTemplateName(It.IsAny <PidUriTemplateFlattened>())) .Returns(string.Empty); var serviceCollection = new ServiceCollection(); serviceCollection.AddTransient <TaxonomyNameResolver>(t => new TaxonomyNameResolver(pidUriTemplateServiceMock.Object)); var serviceProvider = serviceCollection.BuildServiceProvider(); var config = new MapperConfiguration(cfg => { cfg.ConstructServicesUsing(serviceProvider.GetService); cfg.AddProfile(new TaxonomyProfile()); }); var mapper = config.CreateMapper(); var taxonomyService = new TaxonomyService(mapper, metadataServiceMock.Object, validationServiceMock.Object, taxonomyRepoMock.Object, loggerMock.Object, cacheServiceMock.Object); _validator = new TaxonomyValidator(taxonomyService); _metadata = new MetadataBuilder() .GenerateSampleHasInformationClassifikation() .GenerateSampleMathematicalCategory() .Build(); }
public async Task GetTaxonomies_Error_NotFound_WrongUri() { var taxonomyType = HttpUtility.UrlEncode("https://pid.bayer.com/kos/19050/MathematicalModelCategory_Wrong_Uri"); var expectedTaxonomies = new TaxonomySchemeBuilder().GenerateSampleTaxonomies(); var result = await _client.GetAsync($"{_apiPath}List?taxonomyType={taxonomyType}"); var content = await result.Content.ReadAsStringAsync().ConfigureAwait(false); var taxonomies = Newtonsoft.Json.JsonConvert.DeserializeObject <List <TaxonomyResultDtoV2> >(content); result.EnsureSuccessStatusCode(); Assert.Empty(taxonomies); }
public void GetTaxonomy_Successful() { //Arrange var expectedTaxonomy = new TaxonomySchemeBuilder().GenerateSampleTaxonomy(); var mockTaxonomy = new TaxonomySchemeBuilder() .GenerateSampleMathematicalTaxonomyList() .Build(); _taxonomyRepoMock.Setup(mock => mock.GetTaxonomiesByIdentifier(It.IsAny <string>())).Returns(mockTaxonomy); // Act var taxonomy = _service.GetEntity("https://pid.bayer.com/2fdbd958-b0c3-4a4d-96a9-41641964140d/0"); // Assert TestUtils.AssertSameEntityContent(taxonomy, expectedTaxonomy); }
public void GetTaxonomies_Successful() { //Arrange var expectedTaxonomies = new TaxonomySchemeBuilder().GenerateSampleTaxonomies(); var mockTaxonomy = new TaxonomySchemeBuilder() .GenerateSampleMathematicalTaxonomyList() .Build(); _taxonomyRepoMock.Setup(mock => mock.GetTaxonomies(It.IsAny <string>())).Returns(mockTaxonomy); // Act var taxonomies = _service.GetTaxonomies("https://pid.bayer.com/kos/19050/MathematicalModelCategory"); // Assert TestUtils.AssertSameEntityContent(taxonomies, expectedTaxonomies); }
public void GetTaxonomy_NotFound() { //Arrange var identifier = "https://pid.bayer.com/2fdbd958-b0c3-4a4d-96a9-41641964140d/notfound"; var mockTaxonomy = new TaxonomySchemeBuilder() .GenerateSampleMathematicalTaxonomyList() .Build(); _taxonomyRepoMock.Setup(mock => mock.GetTaxonomiesByIdentifier(It.IsAny <string>())).Returns(mockTaxonomy); // Act var ex = Assert.Throws <EntityNotFoundException>(() => _service.GetEntity(identifier)); // Assert Assert.Equal(RegistrationService.Common.Constants.Messages.Taxonomy.NotFound, ex.Message); Assert.Equal(identifier, ex.Id); }
public async Task GetTaxonomies_Success() { var taxonomyType = HttpUtility.UrlEncode("https://pid.bayer.com/kos/19050/MathematicalModelCategory"); var expectedTaxonomies = new TaxonomySchemeBuilder().GenerateSampleTaxonomies(); var result = await _client.GetAsync(_apiPath + $"/taxonomyList?taxonomyType={taxonomyType}"); var content = await result.Content.ReadAsStringAsync().ConfigureAwait(false); var taxonomies = Newtonsoft.Json.JsonConvert.DeserializeObject <List <TaxonomyResultDTO> >(content); Assert.NotNull(taxonomies); // Sort the expected and actual results, so that the taxonomies and their properties are all in same order // The graph database returns different orders sometimes expectedTaxonomies = OrderTaxonomyList(expectedTaxonomies); taxonomies = OrderTaxonomyList(taxonomies); TestUtils.AssertSameEntityContent(expectedTaxonomies, taxonomies); }