Coverage for gws-app/gws/base/metadata/_test/core_test.py: 100%
64 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 22:59 +0200
1import gws
2import gws.base.metadata.core as mdc
3import gws.test.util as u
6def test_from_dict():
7 data = {'title': 'Test Title', 'abstract': 'Test Abstract', 'keywords': ['bbb', 'aaa'], 'language': 'en'}
9 md = mdc.from_dict(data)
11 assert isinstance(md, gws.Metadata)
12 assert md.title == 'Test Title'
13 assert md.abstract == 'Test Abstract'
14 assert md.keywords == ['aaa', 'bbb']
15 assert md.language == 'en'
18def test_from_config():
19 config = gws.Config({'title': 'Test Title', 'abstract': 'Test Abstract', 'keywords': ['bbb', 'aaa'], 'language': 'en'})
21 md = mdc.from_config(config)
23 assert isinstance(md, gws.Metadata)
24 assert md.title == 'Test Title'
25 assert md.abstract == 'Test Abstract'
26 assert md.keywords == ['aaa', 'bbb']
27 assert md.language == 'en'
30def test_from_props():
31 props = gws.Props({'title': 'Test Title', 'abstract': 'Test Abstract', 'keywords': ['bbb', 'aaa'], 'language': 'en'})
33 md = mdc.from_props(props)
35 assert isinstance(md, gws.Metadata)
36 assert md.title == 'Test Title'
37 assert md.abstract == 'Test Abstract'
38 assert md.keywords == ['aaa', 'bbb']
39 assert md.language == 'en'
42def test_props():
43 """Test extracting properties from a Metadata object."""
44 props = gws.Props({'title': 'Test Title', 'abstract': 'Test Abstract', 'keywords': ['bbb', 'aaa'], 'language': 'en'})
46 md = mdc.from_props(props)
48 props = mdc.props(md)
50 assert isinstance(props, gws.Props)
51 assert props.get('title') == 'Test Title'
52 assert props.get('abstract') == 'Test Abstract'
53 assert props.get('keywords') == ['aaa', 'bbb']
54 assert props.get('language') == 'en'
57def test_check_language_processing():
58 """Test that check processes language codes correctly."""
59 md = mdc.from_dict({'language': 'de'})
60 assert md.language == 'de'
61 assert md.language3 == 'deu'
62 assert md.languageBib == 'ger'
65def test_check_inspire_theme_processing():
66 """Test that check processes INSPIRE themes correctly."""
67 md = mdc.from_dict({'inspireTheme': 'ac', 'language': 'en'})
69 assert md.inspireTheme == 'ac'
70 assert md.inspireThemeNameLocal == 'Atmospheric conditions'
71 assert md.inspireThemeNameEn == 'Atmospheric conditions'
73 md = mdc.from_dict({'inspireTheme': 'ac', 'language': 'de'})
75 assert md.inspireThemeNameLocal == 'Atmosphärische Bedingungen'
76 assert md.inspireThemeNameEn == 'Atmospheric conditions'
79def test_merge_basic():
80 """Test merging basic metadata objects."""
81 md1 = mdc.from_dict(
82 {
83 'title': 'Title 1',
84 'abstract': 'Abstract 1',
85 'keywords': ['bbb', 'aaa'],
86 }
87 )
89 md2 = mdc.from_dict(
90 {
91 'title': 'Title 2',
92 'keywords': ['aaa', 'ccc'],
93 }
94 )
96 merged = mdc.from_args(md1, md2)
98 assert merged.title == 'Title 2'
99 assert merged.abstract == 'Abstract 1'
100 assert merged.keywords == ['aaa', 'bbb', 'ccc']
103def test_merge_multiple_objects():
104 md1 = mdc.from_dict({'title': 'Title 1'})
105 md2 = mdc.from_dict({'abstract': 'Abstract 2'})
106 md3 = mdc.from_dict({'keywords': ['key3']})
108 merged = mdc.from_args(md1, md2, md3)
110 assert merged.title == 'Title 1'
111 assert merged.abstract == 'Abstract 2'
112 assert merged.keywords == ['key3']