bam-masterdata 0.8.0__tar.gz → 0.8.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/PKG-INFO +1 -1
  2. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/_version.py +3 -3
  3. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/cli/run_parser.py +24 -2
  4. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/utils/users.py +49 -0
  5. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata.egg-info/PKG-INFO +1 -1
  6. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/conftest.py +2 -1
  7. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/utils/test_users.py +7 -2
  8. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/.coveragerc +0 -0
  9. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/.github/release.yml +0 -0
  10. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/.github/workflows/actions.yml +0 -0
  11. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/.github/workflows/coveralls.yml +0 -0
  12. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/.github/workflows/mkdocs-deploy.yml +0 -0
  13. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/.github/workflows/publish.yml +0 -0
  14. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/.gitignore +0 -0
  15. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/.vscode/settings.json +0 -0
  16. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/AUTHORS +0 -0
  17. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/LICENSE +0 -0
  18. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/LICENSE.datamodel +0 -0
  19. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/NOTICE +0 -0
  20. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/README.md +0 -0
  21. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/__init__.py +0 -0
  22. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/checker/__init__.py +0 -0
  23. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/checker/checker.py +0 -0
  24. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/checker/masterdata_validator.py +0 -0
  25. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/checker/source_loader.py +0 -0
  26. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/checker/validation_rules/all_validation_rules.json +0 -0
  27. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/checker/validation_rules/excel_validation_rules.json +0 -0
  28. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/checker/validation_rules/validation_rules.json +0 -0
  29. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/cli/__init__.py +0 -0
  30. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/cli/cli.py +0 -0
  31. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/cli/entities_to_excel.py +0 -0
  32. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/cli/entities_to_rdf.py +0 -0
  33. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/cli/excel_to_entities.py +0 -0
  34. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/cli/fill_masterdata.py +0 -0
  35. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/datamodel/__init__.py +0 -0
  36. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/datamodel/collection_types.py +0 -0
  37. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/datamodel/dataset_types.py +0 -0
  38. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/datamodel/object_types.py +0 -0
  39. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/datamodel/vocabulary_types.py +0 -0
  40. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/excel/__init__.py +0 -0
  41. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/excel/excel_to_entities.py +0 -0
  42. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/logger.py +0 -0
  43. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/metadata/__init__.py +0 -0
  44. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/metadata/_maps.py +0 -0
  45. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/metadata/definitions.py +0 -0
  46. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/metadata/entities.py +0 -0
  47. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/metadata/entities_dict.py +0 -0
  48. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/openbis/__init__.py +0 -0
  49. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/openbis/get_entities.py +0 -0
  50. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/openbis/login.py +0 -0
  51. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/parsing/__init__.py +0 -0
  52. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/parsing/parsing.py +0 -0
  53. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/utils/__init__.py +0 -0
  54. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/utils/paths.py +0 -0
  55. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata/utils/utils.py +0 -0
  56. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata.egg-info/SOURCES.txt +0 -0
  57. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata.egg-info/dependency_links.txt +0 -0
  58. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata.egg-info/entry_points.txt +0 -0
  59. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata.egg-info/requires.txt +0 -0
  60. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/bam_masterdata.egg-info/top_level.txt +0 -0
  61. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/bammasterdata_blue_transparent.png +0 -0
  62. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/bammasterdata_blue_transparent_text.png +0 -0
  63. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/bammasterdata_blue_transparent_text.svg +0 -0
  64. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/bammasterdata_blue_white.png +0 -0
  65. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/bammasterdata_blue_white_text.png +0 -0
  66. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/datastore-logo-white.png +0 -0
  67. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/datastore-logo.png +0 -0
  68. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/drawio/UML.drawio +0 -0
  69. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/drawio/checker-structure.drawio +0 -0
  70. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/drawio/levels_base_entities.drawio +0 -0
  71. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/drawio/masterdata-workflow.drawio +0 -0
  72. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/fonts/BAMKlavika-Light.ttf +0 -0
  73. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/fonts/BAMKlavika-LightItalic.ttf +0 -0
  74. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/fonts/BAMKlavika-Medium.ttf +0 -0
  75. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/fonts/BAMKlavika-MediumItalic.ttf +0 -0
  76. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/masterdata-workflow.drawio.png +0 -0
  77. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/parsing/Card1ParserApp.jpg +0 -0
  78. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/parsing/Card2.jpg +0 -0
  79. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/parsing/Card3Logs.jpg +0 -0
  80. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/parsing/ETLParsingNewColors.drawio.png +0 -0
  81. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/parsing/ETLParsingNewColors.drawio.svg +0 -0
  82. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/assets/parsing/LoginParserApp.jpg +0 -0
  83. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/explanations/parsing_structure.md +0 -0
  84. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/explanations/schema_defs.md +0 -0
  85. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/howtos/object_references.md +0 -0
  86. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/howtos/overview.md +0 -0
  87. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/howtos/parsing/create_new_parsers.md +0 -0
  88. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/howtos/parsing/parser_app.md +0 -0
  89. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/index.md +0 -0
  90. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/references/api.md +0 -0
  91. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/references/extra.md +0 -0
  92. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/references/glossary.md +0 -0
  93. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/stylesheets/extra.css +0 -0
  94. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/tutorials/getting_started.md +0 -0
  95. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/docs/tutorials/parsing.md +0 -0
  96. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/mkdocs.yml +0 -0
  97. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/pyproject.toml +0 -0
  98. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/scripts/install_python_dependencies.bat +0 -0
  99. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/scripts/install_python_dependencies.sh +0 -0
  100. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/scripts/pkg_size.py +0 -0
  101. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/setup.cfg +0 -0
  102. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/__init__.py +0 -0
  103. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/checker/test_source_loader.py +0 -0
  104. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/cli/test_entities_to_excel.py +0 -0
  105. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/cli/test_entities_to_rdf.py +0 -0
  106. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/cli/test_run_parser.py +0 -0
  107. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/datamodel_test/collection_types.py +0 -0
  108. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/datamodel_test/dataset_types.py +0 -0
  109. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/datamodel_test/object_types.py +0 -0
  110. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example01_codedoesnoteexists.xlsx +0 -0
  111. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example02_codeexists_proptype_datatypechanged.xlsx +0 -0
  112. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example03_codeexists_proptype_contvoccodechanged.xlsx +0 -0
  113. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example04_codeexists_proptype_objectcodechanged.xlsx +0 -0
  114. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example05_codeexists_proptype_warningdefschanged.xlsx +0 -0
  115. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example06_codeexists_proptype_vocobjcodemiss.xlsx +0 -0
  116. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example07_codeexists_objtype_warningdefschanged.xlsx +0 -0
  117. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example08_codeexists_objtype_assignprop_listcodeschanged_add.xlsx +0 -0
  118. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example09_codeexists_objtype_assignprop_listcodeschanged_del.xlsx +0 -0
  119. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example10_codeexists_objtype_assignprop_codedoesnotexists.xlsx +0 -0
  120. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example11_codeexists_objtype_assignprop_listcodeschanged_datatypechanged.xlsx +0 -0
  121. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example12_codeexists_objtype_assignprop_listcodeschanged_warningdefschanged.xlsx +0 -0
  122. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example13_codeexists_objtype_assignprop_coincide2objects.xlsx +0 -0
  123. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example_incoming_excel.xlsx +0 -0
  124. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example_incoming_python/collection_types.py +0 -0
  125. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example_incoming_python/dataset_types.py +0 -0
  126. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/example_incoming_python/object_types.py +0 -0
  127. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/masterdata_example.xlsx +0 -0
  128. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/masterdata_excel_output.json +0 -0
  129. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/checker/masterdata_python_output.json +0 -0
  130. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/cli/test_parser.txt +0 -0
  131. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/metadata/example_vocabulary.py +0 -0
  132. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/utils/example_prop_types_1.py +0 -0
  133. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/data/utils/example_prop_types_2.py +0 -0
  134. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/excel/test_excel_to_entities.py +0 -0
  135. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/metadata/test_definitions.py +0 -0
  136. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/metadata/test_entities.py +0 -0
  137. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/metadata/test_entities_dict.py +0 -0
  138. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/metadata/test_object_data_type.py +0 -0
  139. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/test_logger.py +0 -0
  140. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/utils/test_paths.py +0 -0
  141. {bam_masterdata-0.8.0 → bam_masterdata-0.8.2}/tests/utils/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bam-masterdata
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: The BAM Data Store utility tools and masterdata models wrapped in a Python package with a front-end web interface.
5
5
  Author-email: BAM Data Store <datastore@bam.de>
6
6
  Maintainer-email: "Jose M. Pizarro" <jose.pizarro-blanco@bam.de>
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.8.0'
32
- __version_tuple__ = version_tuple = (0, 8, 0)
31
+ __version__ = version = '0.8.2'
32
+ __version_tuple__ = version_tuple = (0, 8, 2)
33
33
 
34
- __commit_id__ = commit_id = 'gd5d30a411'
34
+ __commit_id__ = commit_id = 'ge06cea03b'
@@ -188,8 +188,30 @@ def run_parser(
188
188
  if not collection_name
189
189
  else f"/{space_name}/{project_name}/{collection_name}/{object_instance.code}"
190
190
  )
191
- object_openbis = space.get_object(identifier)
192
- object_openbis.set_props(obj_props)
191
+ try:
192
+ object_openbis = space.get_object(identifier)
193
+ object_openbis.set_props(obj_props) # update properties
194
+ except Exception:
195
+ logger.info(
196
+ f"Object with code {object_instance.code} does not exist in openBIS, creating new one."
197
+ )
198
+ if not collection_name:
199
+ object_openbis = openbis.new_object(
200
+ type=object_instance.defs.code,
201
+ code=object_instance.code,
202
+ space=space,
203
+ project=project,
204
+ props=obj_props,
205
+ )
206
+ else:
207
+ object_openbis = openbis.new_object(
208
+ type=object_instance.defs.code,
209
+ code=object_instance.code,
210
+ space=space,
211
+ project=project,
212
+ collection=collection_openbis,
213
+ props=obj_props,
214
+ )
193
215
  object_openbis.save()
194
216
  logger.info(
195
217
  f"Object {identifier} already exists in openBIS, updating properties."
@@ -63,3 +63,52 @@ class UserID:
63
63
  ):
64
64
  return u.userId
65
65
  return None
66
+
67
+
68
+ def get_bam_username(firstname: str, lastname: str) -> str:
69
+ """
70
+ Tries to get the BAM username from the first and last names. The BAM username guess is defined by concatenating
71
+ the first letter of the first name with the, max. 7 digits of the last name.
72
+
73
+ Args:
74
+ firstname (str): The first name.
75
+ lastname (str): The last name.
76
+
77
+ Returns:
78
+ str: The guessed BAM username.
79
+ """
80
+
81
+ def _de_replacements(name: str) -> str:
82
+ """
83
+ Perform common German name replacements to standardize the name.
84
+
85
+ Args:
86
+ name (str): Name to standardize.
87
+
88
+ Returns:
89
+ str: Standardized name.
90
+ """
91
+ replacements = {
92
+ "Ä": "Ae",
93
+ "Ö": "Oe",
94
+ "Ü": "Ue",
95
+ "ä": "ae",
96
+ "ö": "oe",
97
+ "ü": "ue",
98
+ "ß": "ss",
99
+ }
100
+ for old, new in replacements.items():
101
+ name = name.replace(old, new)
102
+ return name
103
+
104
+ # German umlaut replacements
105
+ firstname = _de_replacements(firstname).lower().strip()
106
+ lastname = _de_replacements(lastname).lower().strip()
107
+
108
+ # Defining username format
109
+ first_letter = firstname[0]
110
+ if len(lastname) > 7:
111
+ last_part = lastname[:7]
112
+ else:
113
+ last_part = lastname
114
+ return f"{first_letter}{last_part}".upper()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bam-masterdata
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: The BAM Data Store utility tools and masterdata models wrapped in a Python package with a front-end web interface.
5
5
  Author-email: BAM Data Store <datastore@bam.de>
6
6
  Maintainer-email: "Jose M. Pizarro" <jose.pizarro-blanco@bam.de>
@@ -187,7 +187,8 @@ def mock_openbis():
187
187
  # Mock users
188
188
  mock_user1 = MagicMock(firstName="John", lastName="Doe", userId="jdoe")
189
189
  mock_user2 = MagicMock(firstName="Jane", lastName="Smith", userId="jsmith")
190
- mock_openbis.get_users.return_value = [mock_user1, mock_user2]
190
+ mock_user3 = MagicMock(firstName="Markus", lastName="Müller", userId="mmueller")
191
+ mock_openbis.get_users.return_value = [mock_user1, mock_user2, mock_user3]
191
192
 
192
193
  # Mock object creation with pybis
193
194
  mock_openbis._objects = []
@@ -2,7 +2,7 @@ from unittest.mock import patch
2
2
 
3
3
  import pytest
4
4
 
5
- from bam_masterdata.utils.users import UserID
5
+ from bam_masterdata.utils.users import UserID, get_bam_username
6
6
 
7
7
 
8
8
  class TestUserID:
@@ -41,7 +41,12 @@ class TestUserID:
41
41
 
42
42
  user_id = UserID(url="https://fake")
43
43
  assert user_id.get_userid_from_fullname("John Doe") == "jdoe"
44
- assert user_id.get_userid_from_fullname("Doe, John") == "jdoe"
44
+ assert user_id.get_userid_from_fullname("Müller, Markus") == "mmueller"
45
45
  assert user_id.get_userid_from_fullname("Jane Smith") == "jsmith"
46
46
  assert user_id.get_userid_from_fullname("Smith, Jane") == "jsmith"
47
47
  assert user_id.get_userid_from_fullname("Unknown User") is None
48
+
49
+
50
+ def test_get_bam_username():
51
+ assert get_bam_username(firstname="John", lastname="Doe") == "JDOE"
52
+ assert get_bam_username(firstname="Markus", lastname="Müller") == "MMUELLER"
File without changes
File without changes
File without changes
File without changes
File without changes