Skip to content

Commit

Permalink
More unit tests for the multilingual parse functions
Browse files Browse the repository at this point in the history
  • Loading branch information
amercader committed Oct 28, 2024
1 parent 7b87dd0 commit f64bcf4
Showing 1 changed file with 220 additions and 0 deletions.
220 changes: 220 additions & 0 deletions ckanext/dcat/tests/profiles/base/test_base_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,226 @@ def test_object_list_not_found(self):
assert isinstance(value, list)
assert value == []

def test_object_value_multilingual(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://example.org/dataset/> a dcat:Dataset ;
dct:description "Una descripció qualsevol"@ca,
"Some description"@en,
"Una descripción cualquiera"@es ;
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

description = p._object_value_multilingual(
URIRef("https://example.org/dataset/"), DCT.description
)
assert description["en"] == "Some description"
assert description["ca"] == "Una descripció qualsevol"
assert description["es"] == "Una descripción cualquiera"

def test_object_value_multilingual_missing_lang(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://example.org/dataset/> a dcat:Dataset ;
dct:description "Una descripció qualsevol"@ca,
"Some description"@en;
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

p._form_languages = ["en", "ca", "es"]

description = p._object_value_multilingual(
URIRef("https://example.org/dataset/"), DCT.description
)
assert description["en"] == "Some description"
assert description["ca"] == "Una descripció qualsevol"
assert description["es"] == ""

def test_object_value_multilingual_default_lang(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://example.org/dataset/> a dcat:Dataset ;
dct:description "Some description";
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

description = p._object_value_multilingual(
URIRef("https://example.org/dataset/"), DCT.description
)
assert description["en"] == "Some description"

@pytest.mark.ckan_config("ckan.locale_default", "ca")
def test_object_value_multilingual_default_lang_config(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://example.org/dataset/> a dcat:Dataset ;
dct:description "Some description";
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

description = p._object_value_multilingual(
URIRef("https://example.org/dataset/"), DCT.description
)
assert description["ca"] == "Some description"

def test_object_value_multilingual_rdfs_label(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<https://example.org/dataset/> a dcat:Dataset ;
dct:provenance [ a dct:ProvenanceStatement ;
rdfs:label "Una declaració sobre la procedència"@ca,
"Statement about provenance"@en,
"Una declaración sobre la procedencia"@es ] ;
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

provenance = p._object_value_multilingual(
URIRef("https://example.org/dataset/"), DCT.provenance
)
assert provenance["en"] == "Statement about provenance"
assert provenance["ca"] == "Una declaració sobre la procedència"
assert provenance["es"] == "Una declaración sobre la procedencia"

def test_object_value_multilingual_list(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://example.org/dataset/> a dcat:Dataset ;
dcat:keyword "Pins"@ca,
"Roures"@ca,
"Oaks"@en,
"Pines"@en,
"Pinos"@es,
"Robles"@es ;
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

keywords = p._object_value_list_multilingual(
URIRef("https://example.org/dataset/"), DCAT.keyword
)
assert sorted(keywords["en"]) == sorted(["Oaks", "Pines"])
assert sorted(keywords["ca"]) == sorted(["Roures", "Pins"])
assert sorted(keywords["es"]) == sorted(["Robles", "Pinos"])

def test_object_value_multilingual_list_missing_lang(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://example.org/dataset/> a dcat:Dataset ;
dcat:keyword "Pins"@ca,
"Roures"@ca,
"Oaks"@en,
"Pines"@en ;
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

p._form_languages = ["en", "ca", "es"]

keywords = p._object_value_list_multilingual(
URIRef("https://example.org/dataset/"), DCAT.keyword
)
assert keywords["es"] == []

def test_object_value_multilingual_list_default_lang(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://example.org/dataset/> a dcat:Dataset ;
dcat:keyword "Oaks",
"Pines" ;
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

keywords = p._object_value_list_multilingual(
URIRef("https://example.org/dataset/"), DCAT.keyword
)
assert sorted(keywords["en"]) == sorted(["Oaks", "Pines"])

@pytest.mark.ckan_config("ckan.locale_default", "ca")
def test_object_value_multilingual_list_default_lang_conf(self):

data = """
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
<https://example.org/dataset/> a dcat:Dataset ;
dcat:keyword "Oaks",
"Pines" ;
.
"""
g = Graph()

g.parse(format='ttl', data=data)

p = RDFProfile(g)

keywords = p._object_value_list_multilingual(
URIRef("https://example.org/dataset/"), DCAT.keyword
)
assert sorted(keywords["ca"]) == sorted(["Oaks", "Pines"])

def test_time_interval_schema_org(self):

data = '''<?xml version="1.0" encoding="utf-8" ?>
Expand Down

0 comments on commit f64bcf4

Please sign in to comment.