Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }