@Test(expected = UnsupportedOperationException.class) public void createsProxyWithCustomBaseClass() { JpaRepositoryFactory factory = new CustomGenericJpaRepositoryFactory(entityManager); UserCustomExtendedRepository repository = factory.getRepository(UserCustomExtendedRepository.class); repository.customMethod(1); }
@Test(expected = IOException.class) public void handlesCheckedExceptionsCorrectly() throws Exception { SampleRepository repository = factory.getRepository(SampleRepository.class, new SampleCustomRepositoryImpl()); repository.throwingCheckedException(); }
@Test(expected = IllegalArgumentException.class) public void handlesRuntimeExceptionsCorrectly() { SampleRepository repository = factory.getRepository(SampleRepository.class, new SampleCustomRepositoryImpl()); repository.throwingRuntimeException(); }
@Test public void allowsCallingOfObjectMethods() { SimpleSampleRepository repository = factory.getRepository(SimpleSampleRepository.class); repository.hashCode(); repository.toString(); repository.equals(repository); }
@Test public void usesQueryDslRepositoryIfInterfaceImplementsExecutor() { when(metadata.getJavaType()).thenReturn(User.class); assertEquals( QueryDslJpaRepository.class, factory.getRepositoryBaseClass( new DefaultRepositoryMetadata(QueryDslSampleRepository.class))); try { QueryDslSampleRepository repository = factory.getRepository(QueryDslSampleRepository.class); assertEquals(QueryDslJpaRepository.class, ((Advised) repository).getTargetClass()); } catch (IllegalArgumentException e) { assertThat( e.getStackTrace()[0].getClassName(), is("org.springframework.data.querydsl.SimpleEntityPathResolver")); } }
/** * Asserts that the factory recognized configured repository classes that contain custom method * but no custom implementation could be found. Furthremore the exception has to contain the name * of the repository interface as for a large repository configuration it's hard to find out where * this error occured. * * @throws Exception */ @Test public void capturesMissingCustomImplementationAndProvidesInterfacename() throws Exception { try { factory.getRepository(SampleRepository.class); } catch (IllegalArgumentException e) { assertTrue(e.getMessage().contains(SampleRepository.class.getName())); } }
/** * Assert that the instance created for the standard configuration is a valid {@code * UserRepository}. * * @throws Exception */ @Test public void setsUpBasicInstanceCorrectly() throws Exception { assertNotNull(factory.getRepository(SimpleSampleRepository.class)); }