Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>master
							parent
							
								
									81553a55b5
								
							
						
					
					
						commit
						6e5ba7a261
					
				| @ -1,126 +0,0 @@ | ||||
| package org.libresonic.player.dao; | ||||
| 
 | ||||
| import junit.framework.TestCase; | ||||
| import liquibase.exception.LiquibaseException; | ||||
| import org.libresonic.player.TestCaseUtils; | ||||
| import org.libresonic.player.service.SettingsService; | ||||
| import org.libresonic.player.spring.SpringLiquibase; | ||||
| import org.libresonic.player.util.FileUtil; | ||||
| import org.libresonic.player.util.Util; | ||||
| import org.springframework.core.io.DefaultResourceLoader; | ||||
| import org.springframework.jdbc.core.JdbcTemplate; | ||||
| import org.springframework.jdbc.datasource.DriverManagerDataSource; | ||||
| 
 | ||||
| import javax.sql.DataSource; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| /** | ||||
|  * Superclass for all DAO test cases. | ||||
|  * Creates and configures the DAO's, and resets the test database. | ||||
|  * | ||||
|  * @author Sindre Mehus | ||||
|  */ | ||||
| public abstract class DaoTestCaseBase extends TestCase { | ||||
| 
 | ||||
|     /** Do not re-create database if it is less than one hour old. */ | ||||
|     private static final long MAX_DB_AGE_MILLIS = 60L * 60 * 1000; | ||||
| 
 | ||||
|     static { | ||||
|         deleteDatabase(); | ||||
|     } | ||||
| 
 | ||||
|     private DaoHelper daoHelper; | ||||
|     protected PlayerDao playerDao; | ||||
|     protected InternetRadioDao internetRadioDao; | ||||
|     protected RatingDao ratingDao; | ||||
|     protected MusicFolderDao musicFolderDao; | ||||
|     protected UserDao userDao; | ||||
|     protected TranscodingDao transcodingDao; | ||||
|     protected PodcastDao podcastDao; | ||||
| 
 | ||||
|     protected DaoTestCaseBase() { | ||||
|         DataSource dataSource = createDataSource(); | ||||
|         daoHelper = new GenericDaoHelper(dataSource); | ||||
| 
 | ||||
|         runDatabaseMigration(dataSource); | ||||
| 
 | ||||
|         playerDao = new PlayerDao(); | ||||
|         internetRadioDao = new InternetRadioDao(); | ||||
|         ratingDao = new RatingDao(); | ||||
|         musicFolderDao = new MusicFolderDao(); | ||||
|         userDao = new UserDao(); | ||||
|         transcodingDao = new TranscodingDao(); | ||||
|         podcastDao = new PodcastDao(); | ||||
| 
 | ||||
|         playerDao.setDaoHelper(daoHelper); | ||||
|         internetRadioDao.setDaoHelper(daoHelper); | ||||
|         ratingDao.setDaoHelper(daoHelper); | ||||
|         musicFolderDao.setDaoHelper(daoHelper); | ||||
|         musicFolderDao.setUserDao(userDao); | ||||
|         userDao.setDaoHelper(daoHelper); | ||||
|         transcodingDao.setDaoHelper(daoHelper); | ||||
|         podcastDao.setDaoHelper(daoHelper); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected void tearDown() throws Exception { | ||||
|         super.tearDown(); | ||||
|         getJdbcTemplate().execute("shutdown"); | ||||
|     } | ||||
| 
 | ||||
|     private void runDatabaseMigration(DataSource dataSource) { | ||||
|         SpringLiquibase springLiquibase = new SpringLiquibase(); | ||||
|         springLiquibase.setDataSource(dataSource); | ||||
|         springLiquibase.setChangeLog("classpath:liquibase/db-changelog.xml"); | ||||
|         springLiquibase.setResourceLoader(new DefaultResourceLoader()); | ||||
|         Map<String,String> parameters = new HashMap<>(); | ||||
|         parameters.put("defaultMusicFolder", Util.getDefaultMusicFolder()); | ||||
|         parameters.put("varcharLimit", "512"); | ||||
|         parameters.put("userTableQuote", ""); | ||||
|         springLiquibase.setChangeLogParameters(parameters); | ||||
|         try { | ||||
|             springLiquibase.afterPropertiesSet(); | ||||
|         } catch (LiquibaseException e) { | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private DataSource createDataSource() { | ||||
|         File libresonicHome = SettingsService.getLibresonicHome(); | ||||
|         DriverManagerDataSource ds = new DriverManagerDataSource(); | ||||
|         ds.setDriverClassName("org.hsqldb.jdbcDriver"); | ||||
|         ds.setUrl("jdbc:hsqldb:file:" + libresonicHome.getPath() + "/db/libresonic"); | ||||
|         ds.setUsername("sa"); | ||||
|         ds.setPassword(""); | ||||
| 
 | ||||
|         return ds; | ||||
|     } | ||||
| 
 | ||||
|     protected JdbcTemplate getJdbcTemplate() { | ||||
|         return daoHelper.getJdbcTemplate(); | ||||
|     } | ||||
| 
 | ||||
|     private static void deleteDatabase() { | ||||
|         File libresonicHome = new File(TestCaseUtils.libresonicHomePathForTest()); | ||||
|         File dbHome = new File(libresonicHome, "db"); | ||||
|         System.setProperty("libresonic.home", libresonicHome.getPath()); | ||||
| 
 | ||||
|         long now = System.currentTimeMillis(); | ||||
|         if (now - dbHome.lastModified() > MAX_DB_AGE_MILLIS) { | ||||
|             System.out.println("Resetting test database: " + dbHome); | ||||
|             delete(dbHome); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private static void delete(File file) { | ||||
|         if (file.isDirectory()) { | ||||
|             for (File child : FileUtil.listFiles(file)) { | ||||
|                 delete(child); | ||||
|             } | ||||
|         } | ||||
|         file.delete(); | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue