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 23:09 +0200

1import gws 

2import gws.base.metadata.core as mdc 

3import gws.test.util as u 

4 

5 

6def test_from_dict(): 

7 data = {'title': 'Test Title', 'abstract': 'Test Abstract', 'keywords': ['bbb', 'aaa'], 'language': 'en'} 

8 

9 md = mdc.from_dict(data) 

10 

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' 

16 

17 

18def test_from_config(): 

19 config = gws.Config({'title': 'Test Title', 'abstract': 'Test Abstract', 'keywords': ['bbb', 'aaa'], 'language': 'en'}) 

20 

21 md = mdc.from_config(config) 

22 

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' 

28 

29 

30def test_from_props(): 

31 props = gws.Props({'title': 'Test Title', 'abstract': 'Test Abstract', 'keywords': ['bbb', 'aaa'], 'language': 'en'}) 

32 

33 md = mdc.from_props(props) 

34 

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' 

40 

41 

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'}) 

45 

46 md = mdc.from_props(props) 

47 

48 props = mdc.props(md) 

49 

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' 

55 

56 

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' 

63 

64 

65def test_check_inspire_theme_processing(): 

66 """Test that check processes INSPIRE themes correctly.""" 

67 md = mdc.from_dict({'inspireTheme': 'ac', 'language': 'en'}) 

68 

69 assert md.inspireTheme == 'ac' 

70 assert md.inspireThemeNameLocal == 'Atmospheric conditions' 

71 assert md.inspireThemeNameEn == 'Atmospheric conditions' 

72 

73 md = mdc.from_dict({'inspireTheme': 'ac', 'language': 'de'}) 

74 

75 assert md.inspireThemeNameLocal == 'Atmosphärische Bedingungen' 

76 assert md.inspireThemeNameEn == 'Atmospheric conditions' 

77 

78 

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 ) 

88 

89 md2 = mdc.from_dict( 

90 { 

91 'title': 'Title 2', 

92 'keywords': ['aaa', 'ccc'], 

93 } 

94 ) 

95 

96 merged = mdc.from_args(md1, md2) 

97 

98 assert merged.title == 'Title 2' 

99 assert merged.abstract == 'Abstract 1' 

100 assert merged.keywords == ['aaa', 'bbb', 'ccc'] 

101 

102 

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']}) 

107 

108 merged = mdc.from_args(md1, md2, md3) 

109 

110 assert merged.title == 'Title 1' 

111 assert merged.abstract == 'Abstract 2' 

112 assert merged.keywords == ['key3']