55import static org .mockito .Mockito .mock ;
66
77import java .util .Optional ;
8+ import java .util .stream .Stream ;
9+
10+ import javax .annotation .Nonnull ;
811
912import org .apache .olingo .odata2 .api .edm .Edm ;
10- import org .junit .jupiter .api .Test ;
13+ import org .junit .jupiter .params .ParameterizedTest ;
14+ import org .junit .jupiter .params .provider .Arguments ;
15+ import org .junit .jupiter .params .provider .MethodSource ;
1116
1217import com .google .common .collect .ArrayListMultimap ;
1318import com .sap .cloud .sdk .datamodel .odata .utility .ServiceNameMappings ;
1419
1520class EdmServiceTest
1621{
1722
18- private static final String SERVICE_NAME = "API_MATERIAL_DOCUMENT_SRV" ;
19-
20- @ Test
21- void testServiceNameMappingsGenerated ()
23+ @ ParameterizedTest
24+ @ MethodSource ( "getServiceNameMappingScenarios" )
25+ void testServiceNameMappingsGenerated (
26+ @ Nonnull final String serviceName ,
27+ @ Nonnull final String expectedPackageName ,
28+ @ Nonnull final String expectedClassName )
2229 {
2330
2431 // Mock ServiceNameMappings to return empty Optional (no stored mappings)
2532 final ServiceNameMappings mockMappings = mock (ServiceNameMappings .class );
26- doReturn (Optional .empty ()).when (mockMappings ).getString (SERVICE_NAME + ".packageName" );
27- doReturn (Optional .empty ()).when (mockMappings ).getString (SERVICE_NAME + ".className" );
33+ doReturn (Optional .empty ()).when (mockMappings ).getString (serviceName + ".packageName" );
34+ doReturn (Optional .empty ()).when (mockMappings ).getString (serviceName + ".className" );
2835
2936 final EdmService service =
3037 new EdmService (
31- SERVICE_NAME ,
38+ serviceName ,
3239 mockMappings ,
3340 mock (Edm .class ),
3441 mock (ServiceDetails .class ),
3542 ArrayListMultimap .create (),
3643 false );
3744
38- assertThat (service .getJavaPackageName ()).isEqualTo ("apimaterialdocumentsrv" );
39- assertThat (service .getJavaClassName ()).isEqualTo ("APIMATERIALDOCUMENTSRV" );
45+ assertThat (service .getJavaPackageName ()).isEqualTo (expectedPackageName );
46+ assertThat (service .getJavaClassName ()).isEqualTo (expectedClassName );
4047 }
4148
42- @ Test
43- void testStoredServiceNameMappingsAreUnchanged ()
49+ @ ParameterizedTest
50+ @ MethodSource ( "getServiceNameMappingScenarios" )
51+ void testStoredServiceNameMappingsAreUnchanged (
52+ @ Nonnull final String serviceName ,
53+ @ Nonnull final String expectedPackageName ,
54+ @ Nonnull final String expectedClassName )
4455 {
45- final String expectedPackageName = "apimaterialdocumentsrv" ;
46- final String expectedClassName = "APIMATERIALDOCUMENTSRV" ;
47-
4856 // Mock ServiceNameMappings to return stored mappings
4957 final ServiceNameMappings mockMappings = mock (ServiceNameMappings .class );
50- doReturn (Optional .of (expectedPackageName )).when (mockMappings ).getString (SERVICE_NAME + ".packageName" );
51- doReturn (Optional .of (expectedClassName )).when (mockMappings ).getString (SERVICE_NAME + ".className" );
58+ doReturn (Optional .of (expectedPackageName )).when (mockMappings ).getString (serviceName + ".packageName" );
59+ doReturn (Optional .of (expectedClassName )).when (mockMappings ).getString (serviceName + ".className" );
5260
5361 final EdmService service =
5462 new EdmService (
55- SERVICE_NAME ,
63+ serviceName ,
5664 mockMappings ,
5765 mock (Edm .class ),
5866 mock (ServiceDetails .class ),
@@ -62,4 +70,14 @@ void testStoredServiceNameMappingsAreUnchanged()
6270 assertThat (service .getJavaPackageName ()).isEqualTo (expectedPackageName );
6371 assertThat (service .getJavaClassName ()).isEqualTo (expectedClassName );
6472 }
73+
74+ private static Stream <Arguments > getServiceNameMappingScenarios ()
75+ {
76+ return Stream
77+ .of (
78+ // Non-breaking fix for https://github.com/SAP/cloud-sdk-java/issues/1024
79+ Arguments .of ("API_MATERIAL_DOCUMENT_SRV" , "apimaterialdocumentsrv" , "APIMATERIALDOCUMENTSRV" ),
80+ Arguments .of ("Product_Api_Service" , "product" , "Product" // "Api" and "Service" removed
81+ ));
82+ }
6583}
0 commit comments