package com.avaje.tests.lib; import com.avaje.ebeaninternal.api.SpiEbeanServer; import junit.framework.TestCase; import junit.framework.TestResult; import com.avaje.ebean.Ebean; import com.avaje.ebean.EbeanServer; import com.avaje.ebean.Transaction; /** * The base class for all Ebean test to get access to the Ebean server and do * some cleanup stuff after a test has run */ public abstract class EbeanTestCase extends TestCase { @Override public void run(TestResult testResult) { try { super.run(testResult); } finally { Transaction tx = getServer().currentTransaction(); if (tx != null && tx.isActive()) { // transaction left running after the test, rollback it to make // the environment ready for the next test tx.rollback(); } } } public EbeanServer getServer() { return Ebean.getServer(null); } /** * MS SQL Server does not allow setting explicit values on identity columns * so tests that do this need to be skipped for SQL Server. */ public boolean isMsSqlServer() { SpiEbeanServer spi = (SpiEbeanServer)Ebean.getDefaultServer(); return spi.getDatabasePlatform().getName().startsWith("mssqlserver"); } }