forked from upstream-mirrors/OpenTracks
Change some code of MyTracksProviderTest.
This commit is contained in:
@@ -57,7 +57,12 @@ public class MyTracksProvider extends ContentProvider {
|
|||||||
static class DatabaseHelper extends SQLiteOpenHelper {
|
static class DatabaseHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
public DatabaseHelper(Context context) {
|
public DatabaseHelper(Context context) {
|
||||||
super(context, DATABASE_NAME, null, DATABASE_VERSION);
|
this(context, DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
public DatabaseHelper(Context context, String databaseName) {
|
||||||
|
super(context, databaseName, null, DATABASE_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -106,7 +111,8 @@ public class MyTracksProvider extends ContentProvider {
|
|||||||
*
|
*
|
||||||
* @author Jimmy Shih
|
* @author Jimmy Shih
|
||||||
*/
|
*/
|
||||||
private enum UrlType {
|
@VisibleForTesting
|
||||||
|
enum UrlType {
|
||||||
TRACKPOINTS, TRACKPOINTS_ID, TRACKS, TRACKS_ID, WAYPOINTS, WAYPOINTS_ID
|
TRACKPOINTS, TRACKPOINTS_ID, TRACKS, TRACKS_ID, WAYPOINTS, WAYPOINTS_ID
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,7 +145,8 @@ public class MyTracksProvider extends ContentProvider {
|
|||||||
* @param context context to creates database
|
* @param context context to creates database
|
||||||
* @return true means run successfully
|
* @return true means run successfully
|
||||||
*/
|
*/
|
||||||
public boolean onCreate(Context context) {
|
@VisibleForTesting
|
||||||
|
boolean onCreate(Context context) {
|
||||||
if (!canAccess()) {
|
if (!canAccess()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -457,14 +464,4 @@ public class MyTracksProvider extends ContentProvider {
|
|||||||
}
|
}
|
||||||
throw new SQLException("Failed to insert a waypoint " + url);
|
throw new SQLException("Failed to insert a waypoint " + url);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/**
|
|
||||||
* Gets the db.
|
|
||||||
*
|
|
||||||
* @return the SQLiteDatabase object
|
|
||||||
*/
|
|
||||||
@VisibleForTesting
|
|
||||||
SQLiteDatabase getDb() {
|
|
||||||
return db;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+41
-33
@@ -18,6 +18,7 @@ package com.google.android.apps.mytracks.content;
|
|||||||
import com.google.android.apps.mytracks.content.MyTracksProvider.DatabaseHelper;
|
import com.google.android.apps.mytracks.content.MyTracksProvider.DatabaseHelper;
|
||||||
|
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
import android.net.Uri;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,10 +30,13 @@ public class MyTracksProviderTest extends AndroidTestCase {
|
|||||||
|
|
||||||
private SQLiteDatabase db;
|
private SQLiteDatabase db;
|
||||||
private MyTracksProvider myTracksProvider;
|
private MyTracksProvider myTracksProvider;
|
||||||
|
private String DATABASE_NAME = "mytrackstest.db";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
recreatedDatabase();
|
getContext().deleteDatabase(DATABASE_NAME);
|
||||||
|
db = (new DatabaseHelper(getContext(), DATABASE_NAME)).getWritableDatabase();
|
||||||
|
|
||||||
myTracksProvider = new MyTracksProvider();
|
myTracksProvider = new MyTracksProvider();
|
||||||
super.setUp();
|
super.setUp();
|
||||||
}
|
}
|
||||||
@@ -61,7 +65,7 @@ public class MyTracksProviderTest extends AndroidTestCase {
|
|||||||
assertTrue(checkTable(TracksColumns.TABLE_NAME));
|
assertTrue(checkTable(TracksColumns.TABLE_NAME));
|
||||||
assertTrue(checkTable(WaypointsColumns.TABLE_NAME));
|
assertTrue(checkTable(WaypointsColumns.TABLE_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method
|
* Tests the method
|
||||||
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
||||||
@@ -69,18 +73,18 @@ public class MyTracksProviderTest extends AndroidTestCase {
|
|||||||
*/
|
*/
|
||||||
public void testDatabaseHelper_onUpgrade_Version17() {
|
public void testDatabaseHelper_onUpgrade_Version17() {
|
||||||
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
||||||
|
|
||||||
// Make two table is only contains one normal integer column.
|
// Make two table is only contains one normal integer column.
|
||||||
dropTable(TrackPointsColumns.TABLE_NAME);
|
dropTable(TrackPointsColumns.TABLE_NAME);
|
||||||
dropTable(TracksColumns.TABLE_NAME);
|
dropTable(TracksColumns.TABLE_NAME);
|
||||||
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
||||||
createEmptyTable(TracksColumns.TABLE_NAME);
|
createEmptyTable(TracksColumns.TABLE_NAME);
|
||||||
databaseHelper.onUpgrade(db, 17, 20);
|
databaseHelper.onUpgrade(db, 17, 20);
|
||||||
assertTrue(checkColumn(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
assertTrue(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
||||||
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
||||||
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method
|
* Tests the method
|
||||||
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
||||||
@@ -88,18 +92,18 @@ public class MyTracksProviderTest extends AndroidTestCase {
|
|||||||
*/
|
*/
|
||||||
public void testDatabaseHelper_onUpgrade_Version18() {
|
public void testDatabaseHelper_onUpgrade_Version18() {
|
||||||
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
||||||
|
|
||||||
// Make two table is only contains one normal integer column.
|
// Make two table is only contains one normal integer column.
|
||||||
dropTable(TrackPointsColumns.TABLE_NAME);
|
dropTable(TrackPointsColumns.TABLE_NAME);
|
||||||
dropTable(TracksColumns.TABLE_NAME);
|
dropTable(TracksColumns.TABLE_NAME);
|
||||||
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
||||||
createEmptyTable(TracksColumns.TABLE_NAME);
|
createEmptyTable(TracksColumns.TABLE_NAME);
|
||||||
databaseHelper.onUpgrade(db, 18, 20);
|
databaseHelper.onUpgrade(db, 18, 20);
|
||||||
assertFalse(checkColumn(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
assertFalse(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
||||||
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
||||||
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the method
|
* Tests the method
|
||||||
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
* {@link MyTracksProvider.DatabaseHelper#onUpgrade(SQLiteDatabase, int, int)}
|
||||||
@@ -107,16 +111,16 @@ public class MyTracksProviderTest extends AndroidTestCase {
|
|||||||
*/
|
*/
|
||||||
public void testDatabaseHelper_onUpgrade_Version19() {
|
public void testDatabaseHelper_onUpgrade_Version19() {
|
||||||
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
DatabaseHelper databaseHelper = new DatabaseHelper(getContext());
|
||||||
|
|
||||||
// Make two table is only contains one normal integer column.
|
// Make two table is only contains one normal integer column.
|
||||||
dropTable(TrackPointsColumns.TABLE_NAME);
|
dropTable(TrackPointsColumns.TABLE_NAME);
|
||||||
dropTable(TracksColumns.TABLE_NAME);
|
dropTable(TracksColumns.TABLE_NAME);
|
||||||
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
createEmptyTable(TrackPointsColumns.TABLE_NAME);
|
||||||
createEmptyTable(TracksColumns.TABLE_NAME);
|
createEmptyTable(TracksColumns.TABLE_NAME);
|
||||||
databaseHelper.onUpgrade(db, 19, 20);
|
databaseHelper.onUpgrade(db, 19, 20);
|
||||||
assertFalse(checkColumn(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
assertFalse(isColumnExisted(TrackPointsColumns.TABLE_NAME, TrackPointsColumns.SENSOR));
|
||||||
assertFalse(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
assertFalse(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.TABLEID));
|
||||||
assertTrue(checkColumn(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
assertTrue(isColumnExisted(TracksColumns.TABLE_NAME, TracksColumns.ICON));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -127,11 +131,14 @@ public class MyTracksProviderTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recreates the database of MyTracks.
|
* Tests the method {@link MyTracksProvider#getType(Uri)}.
|
||||||
*/
|
*/
|
||||||
private void recreatedDatabase() {
|
public void testGetType() {
|
||||||
assertTrue(getContext().deleteDatabase(MyTracksProvider.DATABASE_NAME));
|
assertEquals(TrackPointsColumns.CONTENT_TYPE,
|
||||||
db = (new DatabaseHelper(getContext())).getWritableDatabase();
|
myTracksProvider.getType(TrackPointsColumns.CONTENT_URI));
|
||||||
|
assertEquals(TracksColumns.CONTENT_TYPE, myTracksProvider.getType(TracksColumns.CONTENT_URI));
|
||||||
|
assertEquals(WaypointsColumns.CONTENT_TYPE,
|
||||||
|
myTracksProvider.getType(WaypointsColumns.CONTENT_URI));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -140,17 +147,18 @@ public class MyTracksProviderTest extends AndroidTestCase {
|
|||||||
* @param table the name of table
|
* @param table the name of table
|
||||||
*/
|
*/
|
||||||
private void createEmptyTable(String table) {
|
private void createEmptyTable(String table) {
|
||||||
db.execSQL( "CREATE TABLE " + table + " (test INTEGER)");
|
db.execSQL("CREATE TABLE " + table + " (test INTEGER)");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Drops a table in database.
|
* Drops a table in database.
|
||||||
|
*
|
||||||
* @param table
|
* @param table
|
||||||
*/
|
*/
|
||||||
private void dropTable(String table) {
|
private void dropTable(String table) {
|
||||||
db.execSQL("Drop TABLE " + table);
|
db.execSQL("Drop TABLE " + table);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether a table is existed.
|
* Checks whether a table is existed.
|
||||||
*
|
*
|
||||||
@@ -162,27 +170,27 @@ public class MyTracksProviderTest extends AndroidTestCase {
|
|||||||
db.rawQuery("select count(*) from " + table, null);
|
db.rawQuery("select count(*) from " + table, null);
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether a column in a table is existed.
|
* Checks whether a column in a table is existed by whether can order by the
|
||||||
|
* column.
|
||||||
*
|
*
|
||||||
* @param table the name of table
|
* @param table the name of table
|
||||||
* @param column the name of column
|
* @param column the name of column
|
||||||
* @return true means the column has existed
|
* @return true means the column has existed
|
||||||
*/
|
*/
|
||||||
private boolean checkColumn(String table, String column) {
|
private boolean isColumnExisted(String table, String column) {
|
||||||
try {
|
try {
|
||||||
db.execSQL("ALTER TABLE " + table + " add " + column);
|
db.execSQL("SElECT count(*) from " + table + " order by " + column);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if(e.getMessage().indexOf("duplicate column") > -1) {
|
if (e.getMessage().indexOf("no such column") > -1) {
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user