AAS HTTP Client Documentation
Loading...
Searching...
No Matches
test_sdk_tools.py
Go to the documentation of this file.
1from basyx.aas import model
2from aas_http_client.utilities import encoder
3import aas_http_client.utilities.model_builder as model_builder
5import pytest
6
7SM_ID = "fluid40/sm_sdk_tools_unit_tests"
8SHELL_ID = "fluid40/aas_sdk_tools_unit_tests"
9
10@pytest.fixture(scope="module")
11def shared_sm() -> model.Submodel:
12 # create a Submodel
13 return model_builder.create_base_submodel(identifier=SM_ID, id_short="sm_http_client_unit_tests", display_name="Submodel HTTP Client Unit Tests", description="This is a sample Submodel created for unit testing of the AAS HTTP Client.")
14
15@pytest.fixture(scope="module")
16def shared_sm_temp() -> model.Submodel:
17 # create a Submodel
18 return model_builder.create_base_submodel(identifier=f"{SM_ID}_temp", id_short="sm_http_client_unit_tests", display_name="Submodel HTTP Client Unit Tests", description="This is a sample Submodel created for unit testing of the AAS HTTP Client.")
19
20@pytest.fixture(scope="module")
21def shared_sme() -> model.SubmodelElement:
22 # create a Submodel
23 return model_builder.create_base_submodel_element_property(id_short="sme_http_client_unit_tests", type=model.datatypes.String, value="This is a sample SubmodelElement created for unit testing of the AAS HTTP Client.", display_name="SubmodelElement HTTP Client Unit Tests", description="This is a sample SubmodelElement created for unit testing of the AAS HTTP Client.")
24
25@pytest.fixture(scope="module")
26def shared_sme_collection() -> model.SubmodelElementCollection:
27 # create a Submodel
28 return model_builder.create_base_submodel_element_collection(id_short="sme_collection_http_client_unit_tests", value=[], display_name="SubmodelElementCollection HTTP Client Unit Tests", description="This is a sample SubmodelElementCollection created for unit testing of the AAS HTTP Client.")
29
30@pytest.fixture(scope="module")
31def shared_aas() -> model.AssetAdministrationShell:
32 # create an AAS
33 aas = model_builder.create_base_aas(identifier=SHELL_ID, id_short="aas_http_client_unit_tests", global_asset_identifier=SHELL_ID, display_name="AAS HTTP Client Unit Tests", description="This is a sample AAS created for unit testing of the AAS HTTP Client.")
34 return aas
35
36def test_001a_add_sm_to_shell(shared_aas: model.AssetAdministrationShell, shared_sm: model.Submodel):
37 assert len(shared_aas.submodel) == 0
38
39 result = sdk_tools.add_submodel_to_aas(shared_aas, shared_sm)
40 assert result is True
41 assert len(shared_aas.submodel) == 1
42
43 assert shared_sm.id in sdk_tools.get_submodel_ids(shared_aas)
44
45
46def test_001b_add_sm_to_shell(shared_aas: model.AssetAdministrationShell, shared_sm: model.Submodel):
47 assert len(shared_aas.submodel) == 1
48
49 result = sdk_tools.add_submodel_to_aas(shared_aas, shared_sm)
50 assert result is False
51 assert len(shared_aas.submodel) == 1
52
53def test_002a_remove_sm_from_shell(shared_aas: model.AssetAdministrationShell, shared_sm_temp: model.Submodel):
54 assert len(shared_aas.submodel) == 1
55
56 result = sdk_tools.remove_submodel_from_aas(shared_aas, shared_sm_temp)
57 assert result is False
58 assert len(shared_aas.submodel) == 1
59
60def test_002b_remove_sm_from_shell(shared_aas: model.AssetAdministrationShell, shared_sm: model.Submodel):
61 assert len(shared_aas.submodel) == 1
62
63 result = sdk_tools.remove_submodel_from_aas(shared_aas, shared_sm)
64 assert result is True
65 assert len(shared_aas.submodel) == 0
66
67def test_003_get_submodel_ids(shared_aas: model.AssetAdministrationShell, shared_sm: model.Submodel):
68 # Add the Submodel to the AAS
69 sdk_tools.add_submodel_to_aas(shared_aas, shared_sm)
70
71 # Get the submodel IDs
72 submodel_ids = sdk_tools.get_submodel_ids(shared_aas)
73
74 # Check that the ID of the added Submodel is in the list of submodel IDs
75 assert shared_sm.id in submodel_ids
76
77 # Clean up by removing the Submodel from the AAS
78 sdk_tools.remove_submodel_from_aas(shared_aas, shared_sm)
79
80def test_004a_convert_to_dict(shared_aas: model.AssetAdministrationShell):
81 # Convert the AAS to a dictionary
82 aas_dict = sdk_tools.convert_to_dict(shared_aas)
83
84 # Check that the result is a dictionary
85 assert isinstance(aas_dict, dict)
86
87 # Check that the dictionary contains expected keys
88 assert "id" in aas_dict
89 assert "idShort" in aas_dict
90 assert "modelType" in aas_dict
91 assert aas_dict["modelType"] == "AssetAdministrationShell"
92
93def test_004b_convert_to_dict(shared_sm: model.Submodel):
94 # Convert the Submodel to a dictionary
95 sm_dict = sdk_tools.convert_to_dict(shared_sm)
96
97 # Check that the result is a dictionary
98 assert isinstance(sm_dict, dict)
99
100 # Check that the dictionary contains expected keys
101 assert "id" in sm_dict
102 assert "idShort" in sm_dict
103 assert "modelType" in sm_dict
104 assert sm_dict["modelType"]== "Submodel"
105
107 # Convert an empty dictionary
108 result = sdk_tools.convert_to_dict(None)
109
110 # Check that the result is None
111 assert result is None
112
113
114def test_005a_convert_to_object(shared_aas: model.AssetAdministrationShell):
115 # Convert None
116 aas_dict = sdk_tools.convert_to_dict(shared_aas)
117
118 assert aas_dict is not None
119 assert isinstance(aas_dict, dict)
120
121 result = sdk_tools.convert_to_object(aas_dict)
122
123 # Check that the result is an AssetAdministrationShell object
124 assert isinstance(result, model.AssetAdministrationShell)
125
126def test_005b_convert_to_object(shared_sm: model.Submodel):
127 # Convert None
128 sm_dict = sdk_tools.convert_to_dict(shared_sm)
129
130 assert sm_dict is not None
131 assert isinstance(sm_dict, dict)
132
133 result = sdk_tools.convert_to_object(sm_dict)
134
135 # Check that the result is a Submodel object
136 assert isinstance(result, model.Submodel)
137
139 # Convert None
140 result = sdk_tools.convert_to_object({})
141
142 # Check that the result is None
143 assert result is None
144
145def test_006a_copy(shared_aas: model.AssetAdministrationShell):
146 copied_element = sdk_tools.deep_copy(shared_aas)
147
148 assert copied_element is not None
149 assert isinstance(copied_element, model.AssetAdministrationShell)
150
151 copied_aas: model.AssetAdministrationShell = copied_element
152 assert copied_aas.id == shared_aas.id
153 assert copied_aas.id_short == shared_aas.id_short
154
155def test_006b_copy(shared_sm: model.Submodel):
156 copied_element = sdk_tools.deep_copy(shared_sm)
157
158 assert copied_element is not None
159 assert isinstance(copied_element, model.Submodel)
160
161 copied_sm: model.Submodel = copied_element
162 assert copied_sm.id == shared_sm.id
163 assert copied_sm.id_short == shared_sm.id_short
164
165def test_006c_copy(shared_sme: model.SubmodelElement):
166 copied_element = sdk_tools.deep_copy(shared_sme)
167
168 assert copied_element is not None
169 assert isinstance(copied_element, model.SubmodelElement)
170
171 copied_sme: model.SubmodelElement = copied_element
172 assert copied_sme.id_short == shared_sme.id_short
173
174def test_006d_copy(shared_sme_collection: model.SubmodelElementCollection):
175 copied_element = sdk_tools.deep_copy(shared_sme_collection)
176
177 assert copied_element is not None
178 assert isinstance(copied_element, model.SubmodelElementCollection)
179
180 copied_sme_collection: model.SubmodelElementCollection = copied_element
181 assert copied_sme_collection.id_short == shared_sme_collection.id_short
test_006b_copy(model.Submodel shared_sm)
model.Submodel shared_sm()
test_006c_copy(model.SubmodelElement shared_sme)
model.Submodel shared_sm_temp()
test_004a_convert_to_dict(model.AssetAdministrationShell shared_aas)
test_001a_add_sm_to_shell(model.AssetAdministrationShell shared_aas, model.Submodel shared_sm)
test_006d_copy(model.SubmodelElementCollection shared_sme_collection)
test_004b_convert_to_dict(model.Submodel shared_sm)
test_001b_add_sm_to_shell(model.AssetAdministrationShell shared_aas, model.Submodel shared_sm)
test_003_get_submodel_ids(model.AssetAdministrationShell shared_aas, model.Submodel shared_sm)
test_006a_copy(model.AssetAdministrationShell shared_aas)
model.SubmodelElementCollection shared_sme_collection()
model.SubmodelElement shared_sme()
test_005b_convert_to_object(model.Submodel shared_sm)
test_002a_remove_sm_from_shell(model.AssetAdministrationShell shared_aas, model.Submodel shared_sm_temp)
model.AssetAdministrationShell shared_aas()
test_002b_remove_sm_from_shell(model.AssetAdministrationShell shared_aas, model.Submodel shared_sm)
test_005a_convert_to_object(model.AssetAdministrationShell shared_aas)