Skip to content

Commit

Permalink
added unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
oleksiybozhykntt committed Dec 10, 2024
1 parent 1d1016d commit 4f212d3
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import jakarta.persistence.EntityManager;
import jakarta.persistence.metamodel.EntityType;
import java.util.Set;
import java.util.function.Consumer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;

@Configuration
Expand All @@ -16,12 +18,16 @@ public RepositoryRestCustomConfiguration(EntityManager entityManager){
}
@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
return RepositoryRestConfigurer.withConfig(config -> {
return RepositoryRestConfigurer.withConfig( config() );
}

Consumer<RepositoryRestConfiguration> config () {
return config -> {
Set<EntityType<?>> entities = entityManager.getMetamodel().getEntities();
config.exposeIdsFor(entities.stream()
.map(EntityType::getJavaType)
.toArray(Class[]::new));
});
};
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package it.gov.pagopa.pu.organization.config;

import static org.mockito.Mockito.times;

import it.gov.pagopa.pu.organization.model.Broker;
import jakarta.persistence.EntityManager;
import jakarta.persistence.metamodel.EntityType;
import jakarta.persistence.metamodel.Metamodel;
import java.util.Collections;
import java.util.function.Consumer;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;

@ExtendWith(MockitoExtension.class)
class RepositoryRestCustomConfigurationTest {

@Mock
private EntityManager entityManager;

@Mock
private Metamodel metamodel;

@Mock
private EntityType<?> entityType;

@InjectMocks
private RepositoryRestCustomConfiguration config;

@Test
void givenRepositoryRestConfigurerThenOk() {
// Act
RepositoryRestConfigurer configurer = config.repositoryRestConfigurer();

// Assert
Assertions.assertNotNull(configurer);
}

@Test
void givenCustomRepositoryRestConfigurationConfigurationThenOk() {
Mockito.when(entityManager.getMetamodel()).thenReturn(metamodel);
Mockito.when(metamodel.getEntities()).thenReturn(Collections.singleton(entityType));
Mockito.when(entityType.getJavaType()).thenReturn((Class) Broker.class);
// Act
Consumer<RepositoryRestConfiguration> consumer = config.config();

// Assert
Assertions.assertNotNull(consumer);
RepositoryRestConfiguration repositoryRestConfiguration = Mockito.mock(RepositoryRestConfiguration.class);
consumer.accept(repositoryRestConfiguration);
Mockito.verify(entityManager, times(1)).getMetamodel();
Mockito.verify(metamodel, times(1)).getEntities();
Mockito.verify(entityType, times(1)).getJavaType();
}
}

0 comments on commit 4f212d3

Please sign in to comment.