diff options
author | Scott Jackson <daneren2005@gmail.com> | 2012-07-02 21:24:02 -0700 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2012-07-02 21:24:02 -0700 |
commit | a1a18f77a50804e0127dfa4b0f5240c49c541184 (patch) | |
tree | 19a38880afe505beddb5590379a8134d7730a277 /subsonic-main/src/test/java/net/sourceforge/subsonic/dao/DaoTestCaseBase.java | |
parent | b61d787706979e7e20f4c3c4f93c1f129d92273f (diff) | |
download | dsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.tar.gz dsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.tar.bz2 dsub-a1a18f77a50804e0127dfa4b0f5240c49c541184.zip |
Initial Commit
Diffstat (limited to 'subsonic-main/src/test/java/net/sourceforge/subsonic/dao/DaoTestCaseBase.java')
-rw-r--r-- | subsonic-main/src/test/java/net/sourceforge/subsonic/dao/DaoTestCaseBase.java | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/subsonic-main/src/test/java/net/sourceforge/subsonic/dao/DaoTestCaseBase.java b/subsonic-main/src/test/java/net/sourceforge/subsonic/dao/DaoTestCaseBase.java new file mode 100644 index 00000000..8d3a7f88 --- /dev/null +++ b/subsonic-main/src/test/java/net/sourceforge/subsonic/dao/DaoTestCaseBase.java @@ -0,0 +1,83 @@ +package net.sourceforge.subsonic.dao; + +import junit.framework.TestCase; +import net.sourceforge.subsonic.util.FileUtil; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.io.File; + +/** + * 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() { + daoHelper = new DaoHelper(); + + 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); + userDao.setDaoHelper(daoHelper); + transcodingDao.setDaoHelper(daoHelper); + podcastDao.setDaoHelper(daoHelper); + } + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + getJdbcTemplate().execute("shutdown"); + } + + protected JdbcTemplate getJdbcTemplate() { + return daoHelper.getJdbcTemplate(); + } + + private static void deleteDatabase() { + File subsonicHome = new File("/tmp/subsonic"); + File dbHome = new File(subsonicHome, "db"); + System.setProperty("subsonic.home", subsonicHome.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(); + } +} |