package de.avalax.fitbuddy.port.adapter.persistence; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.io.IOException; import java.io.InputStream; import de.avalax.fitbuddy.BuildConfig; import de.avalax.fitbuddy.R; import de.avalax.fitbuddy.port.adapter.persistence.exception.DatabaseResourceNotFoundException; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, manifest = "src/main/AndroidManifest.xml", sdk = 21) public class FitbuddySQLiteOpenHelperTest { private Context context; @Before public void setUp() throws Exception { context = RuntimeEnvironment.application.getApplicationContext(); } @Test(expected = DatabaseResourceNotFoundException.class) public void newInstanceWithWrongResource_shouldCreateDatabase() throws Exception { FitbuddySQLiteOpenHelper openHelper = new FitbuddySQLiteOpenHelper("FitbuddySQLiteOpenHelperTest", 1, context, R.raw.fitbuddy_db) { protected void insertFromStream(InputStream inputStream, SQLiteDatabase database) throws IOException { throw new IOException(); } }; openHelper.getWritableDatabase(); } @Test public void newInstance_shouldCreateDatabaseWithVersionOne() throws Exception { FitbuddySQLiteOpenHelper openHelper = new FitbuddySQLiteOpenHelper("FitbuddySQLiteOpenHelperTest", 1, context, R.raw.fitbuddy_db); SQLiteDatabase writableDatabase = openHelper.getWritableDatabase(); assertThat(writableDatabase.getVersion(), equalTo(1)); } @Test public void newInstanceAfterUpgrade_shouldCreateDatabaseWithVersionTwo() throws Exception { FitbuddySQLiteOpenHelper openHelper = new FitbuddySQLiteOpenHelper("FitbuddySQLiteOpenHelperTest", 1, context, R.raw.fitbuddy_db); SQLiteDatabase writableDatabase = openHelper.getWritableDatabase(); writableDatabase.close(); FitbuddySQLiteOpenHelper newOpenHelper = new FitbuddySQLiteOpenHelper("FitbuddySQLiteOpenHelperTest", 2, context, R.raw.fitbuddy_db); SQLiteDatabase newWritableDatabase = newOpenHelper.getWritableDatabase(); assertThat(newWritableDatabase.getVersion(), equalTo(2)); } }