package org.hibernate.boot.model.process.internal; import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; import org.hibernate.boot.archive.scan.spi.ScanEnvironment; import org.hibernate.boot.archive.scan.spi.ScanResult; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; import org.hibernate.boot.spi.MetadataBuildingOptions; import org.hibernate.boot.spi.XmlMappingBinderAccess; import org.hibernate.internal.CoreMessageLogger; import org.hibernate.testing.junit4.BaseUnitTestCase; import org.hibernate.testing.logger.LoggerInspectionRule; import org.hibernate.testing.logger.Triggerable; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.jboss.logging.Logger; import org.mockito.Mockito; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; /** * @author Vlad Mihalcea */ public class ScanningCoordinatorTest extends BaseUnitTestCase { private ManagedResourcesImpl managedResources = Mockito.mock( ManagedResourcesImpl.class ); private ScanResult scanResult = Mockito.mock( ScanResult.class ); private MetadataBuildingOptions options = Mockito.mock( MetadataBuildingOptions.class ); private XmlMappingBinderAccess xmlMappingBinderAccess = Mockito.mock( XmlMappingBinderAccess.class ); private ScanEnvironment scanEnvironment = Mockito.mock( ScanEnvironment.class ); private StandardServiceRegistry serviceRegistry = Mockito.mock( StandardServiceRegistry.class ); private ClassLoaderService classLoaderService = Mockito.mock( ClassLoaderService.class ); private Triggerable triggerable; @Rule public LoggerInspectionRule logInspection = new LoggerInspectionRule( Logger.getMessageLogger( CoreMessageLogger.class, ScanningCoordinator.class.getName() ) ); @Before public void init(){ Mockito.reset( scanEnvironment ); when( options.getScanEnvironment() ).thenReturn( scanEnvironment ); when( options.getServiceRegistry() ).thenReturn( serviceRegistry ); when( serviceRegistry.getService( ClassLoaderService.class ) ).thenReturn( classLoaderService ); when( scanEnvironment.getExplicitlyListedClassNames() ).thenReturn( Arrays.asList( "a.b.C" ) ); when( classLoaderService.classForName( "a.b.C" ) ).thenReturn( Object.class ); triggerable = logInspection.watchForLogMessages( "Unable" ); triggerable.reset(); } @Test public void testApplyScanResultsToManagedResourcesWithNullRootUrl() { ScanningCoordinator.INSTANCE.applyScanResultsToManagedResources( managedResources, scanResult, options, xmlMappingBinderAccess ); assertEquals( "Unable to resolve class [a.b.C] named in persistence unit [null]", triggerable.triggerMessage() ); } @Test public void testApplyScanResultsToManagedResourcesWithNotNullRootUrl() throws MalformedURLException { when( scanEnvironment.getRootUrl() ).thenReturn( new URL( "http://http://hibernate.org/" ) ); ScanningCoordinator.INSTANCE.applyScanResultsToManagedResources( managedResources, scanResult, options, xmlMappingBinderAccess ); assertEquals( "Unable to resolve class [a.b.C] named in persistence unit [http://http://hibernate.org/]", triggerable.triggerMessage() ); } }