@@ -232,4 +232,106 @@ private SubmodelDescriptor createTestSubmodelDescriptor(String id) {
232232 submodel .setAdministration (new AdministrativeInformation ());
233233 return submodel ;
234234 }
235+
236+ @ Test
237+ void insertAasDescriptorWithGlobalAssetIdShouldPropagateToDiscovery () throws Exception {
238+ log .info ("Started unit test - insertAasDescriptorWithGlobalAssetIdShouldPropagateToDiscovery()" );
239+ AssetAdministrationShellDescriptor descriptor = createTestDescriptor (AAS_DESCRIPTOR_ID );
240+ descriptor .setGlobalAssetId ("https://example.com/global-asset-123" );
241+ descriptor .setSpecificAssetIds (createRegistrySpecificAssetIds ());
242+
243+ registry .insertAasDescriptor (descriptor );
244+
245+ verify (decoratedStorage ).insertAasDescriptor (descriptor );
246+
247+ ArgumentCaptor <String > idCaptor = ArgumentCaptor .forClass (String .class );
248+ ArgumentCaptor <List <SpecificAssetId >> assetIdsCaptor = ArgumentCaptor .forClass (List .class );
249+ verify (discoveryService ).createAllAssetLinksById (idCaptor .capture (), assetIdsCaptor .capture ());
250+
251+ assertEquals (AAS_DESCRIPTOR_ID , idCaptor .getValue ());
252+ assertEquals (3 , assetIdsCaptor .getValue ().size ()); // 2 specificAssetIds + 1 globalAssetId
253+
254+ // Verify globalAssetId was added
255+ boolean hasGlobalAssetId = assetIdsCaptor .getValue ().stream ()
256+ .anyMatch (id -> "globalAssetId" .equals (id .getName ()) &&
257+ "https://example.com/global-asset-123" .equals (id .getValue ()));
258+ assertTrue (hasGlobalAssetId , "globalAssetId should be present in the asset IDs sent to discovery service" );
259+ log .info ("Successfully conducted unit test" );
260+ }
261+
262+ @ Test
263+ void insertAasDescriptorWithOnlyGlobalAssetIdShouldPropagateToDiscovery () throws Exception {
264+ log .info ("Started unit test - insertAasDescriptorWithOnlyGlobalAssetIdShouldPropagateToDiscovery()" );
265+ AssetAdministrationShellDescriptor descriptor = createTestDescriptor (AAS_DESCRIPTOR_ID );
266+ descriptor .setGlobalAssetId ("https://example.com/global-asset-456" );
267+ descriptor .setSpecificAssetIds (Collections .emptyList ());
268+
269+ registry .insertAasDescriptor (descriptor );
270+
271+ verify (decoratedStorage ).insertAasDescriptor (descriptor );
272+
273+ ArgumentCaptor <String > idCaptor = ArgumentCaptor .forClass (String .class );
274+ ArgumentCaptor <List <SpecificAssetId >> assetIdsCaptor = ArgumentCaptor .forClass (List .class );
275+ verify (discoveryService ).createAllAssetLinksById (idCaptor .capture (), assetIdsCaptor .capture ());
276+
277+ assertEquals (AAS_DESCRIPTOR_ID , idCaptor .getValue ());
278+ assertEquals (1 , assetIdsCaptor .getValue ().size ()); // Only globalAssetId
279+
280+ // Verify globalAssetId was added
281+ SpecificAssetId capturedId = assetIdsCaptor .getValue ().get (0 );
282+ assertEquals ("globalAssetId" , capturedId .getName ());
283+ assertEquals ("https://example.com/global-asset-456" , capturedId .getValue ());
284+ log .info ("Successfully conducted unit test" );
285+ }
286+
287+ @ Test
288+ void replaceAasDescriptorWithGlobalAssetIdShouldPropagateToDiscovery () throws Exception {
289+ log .info ("Started unit test - replaceAasDescriptorWithGlobalAssetIdShouldPropagateToDiscovery()" );
290+ AssetAdministrationShellDescriptor descriptor = createTestDescriptor (AAS_DESCRIPTOR_ID );
291+ descriptor .setGlobalAssetId ("https://example.com/global-asset-789" );
292+ descriptor .setSpecificAssetIds (createRegistrySpecificAssetIds ());
293+
294+ registry .replaceAasDescriptor (AAS_DESCRIPTOR_ID , descriptor );
295+
296+ InOrder inOrder = inOrder (discoveryService );
297+ verify (decoratedStorage ).replaceAasDescriptor (AAS_DESCRIPTOR_ID , descriptor );
298+ inOrder .verify (discoveryService ).deleteAllAssetLinksById (AAS_DESCRIPTOR_ID );
299+
300+ ArgumentCaptor <List <SpecificAssetId >> assetIdsCaptor = ArgumentCaptor .forClass (List .class );
301+ inOrder .verify (discoveryService ).createAllAssetLinksById (eq (AAS_DESCRIPTOR_ID ), assetIdsCaptor .capture ());
302+
303+ assertEquals (3 , assetIdsCaptor .getValue ().size ()); // 2 specificAssetIds + 1 globalAssetId
304+
305+ // Verify globalAssetId was added
306+ boolean hasGlobalAssetId = assetIdsCaptor .getValue ().stream ()
307+ .anyMatch (id -> "globalAssetId" .equals (id .getName ()) &&
308+ "https://example.com/global-asset-789" .equals (id .getValue ()));
309+ assertTrue (hasGlobalAssetId , "globalAssetId should be present in the asset IDs sent to discovery service" );
310+
311+ inOrder .verifyNoMoreInteractions ();
312+ log .info ("Successfully conducted unit test" );
313+ }
314+
315+ @ Test
316+ void insertAasDescriptorWithoutGlobalAssetIdShouldStillWork () throws Exception {
317+ log .info ("Started unit test - insertAasDescriptorWithoutGlobalAssetIdShouldStillWork()" );
318+ AssetAdministrationShellDescriptor descriptor = createTestDescriptor (AAS_DESCRIPTOR_ID );
319+ descriptor .setSpecificAssetIds (createRegistrySpecificAssetIds ());
320+ // No globalAssetId set
321+
322+ registry .insertAasDescriptor (descriptor );
323+
324+ verify (decoratedStorage ).insertAasDescriptor (descriptor );
325+
326+ ArgumentCaptor <List <SpecificAssetId >> assetIdsCaptor = ArgumentCaptor .forClass (List .class );
327+ verify (discoveryService ).createAllAssetLinksById (eq (AAS_DESCRIPTOR_ID ), assetIdsCaptor .capture ());
328+
329+ assertEquals (2 , assetIdsCaptor .getValue ().size ()); // Only 2 specificAssetIds
330+
331+ // Verify no globalAssetId was added
332+ boolean hasGlobalAssetId = assetIdsCaptor .getValue ().stream ()
333+ .anyMatch (id -> "globalAssetId" .equals (id .getName ()));
334+ assertFalse (hasGlobalAssetId , "globalAssetId should not be present when not set in descriptor" );
335+ log .info ("Successfully conducted unit test" );
336+ }
235337}
0 commit comments