Fix unit test errors in DocsHelper_AddTrackRowTest.java

DocsHelper_AddTrackRowTest is using a MockContext, which
cannot be used to call DateFormat.getDateFormat(context).

Refactor a getDisplayDate method in DocsHelper and allow the
test to override the method.

Also update .hgignore to AnnotationProcessor.log.
This commit is contained in:
Jimmy Shih
2011-10-25 15:02:03 -07:00
parent acfd522b57
commit fb036bfe4c
3 changed files with 34 additions and 15 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ syntax:glob
*/gen/**
*/proguard/**
.metadata
MyTracksTest/annotations.log
MyTracksTest/AnnotationProcessor.log
**/*.pyc
**/*.pyo
syntax: glob
@@ -275,7 +275,6 @@ public class DocsHelper {
public void addTrackRow(Context context, AuthManager trixAuth,
String spreadsheetId, String worksheetId, Track track,
boolean metricUnits) throws IOException {
String worksheetUri = String.format(DOCS_SPREADSHEET_URL_FORMAT,
spreadsheetId, worksheetId);
TripStatistics stats = track.getStatistics();
@@ -287,16 +286,11 @@ public class DocsHelper {
String elevationUnit = context.getString(metricUnits ?
R.string.meter : R.string.feet);
java.text.DateFormat dateFormat = DateFormat.getDateFormat(context);
java.text.DateFormat timeFormat = DateFormat.getTimeFormat(context);
Date startTime = new Date(stats.getStartTime());
String dateString = dateFormat.format(startTime) + " " + timeFormat.format(startTime);
// Prepare the Post-Text we are going to send.
DocsTagBuilder tagBuilder = new DocsTagBuilder(metricUnits)
.append("name", track.getName())
.append("description", track.getDescription())
.append("date", dateString)
.append("date", getDisplayDate(context, stats.getStartTime()))
.append("totaltime", StringUtils.formatTimeAlwaysShowingHours(
stats.getTotalTime()))
.append("movingtime", StringUtils.formatTimeAlwaysShowingHours(
@@ -336,6 +330,21 @@ public class DocsHelper {
Log.i(Constants.TAG, "Post finished.");
}
/**
* Gets the display string for a time based on the phone's setting.
*
* @param context the context to obtain the phone's setting.
* @param time the time
* @return the display string of the time
*/
protected String getDisplayDate(Context context, long time) {
java.text.DateFormat dateFormat = DateFormat.getDateFormat(context);
java.text.DateFormat timeFormat = DateFormat.getTimeFormat(context);
Date startTime = new Date(time);
String dateString = dateFormat.format(startTime) + " " + timeFormat.format(startTime);
return dateString;
}
/**
* Writes spreadsheet row data to the indicated worksheet.
*
@@ -40,7 +40,8 @@ import junit.framework.TestCase;
*/
public class DocsHelper_AddTrackRowTest extends TestCase {
private static final long TIME = 1288721514000L;
private static final DateFormat DATE_FORMAT = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
private static class StringWritingDocsHelper extends DocsHelper {
String writtenSheetUri = null;
String writtenData = null;
@@ -52,18 +53,22 @@ public class DocsHelper_AddTrackRowTest extends TestCase {
writtenData = postText;
}
}
public void testAddTrackRow_imperial() throws Exception {
StringWritingDocsHelper docsHelper = new StringWritingDocsHelper();
StringWritingDocsHelper docsHelper = new StringWritingDocsHelper() {
@Override
protected String getDisplayDate(Context context, long time) {
return DATE_FORMAT.format(new Date(TIME));
}
};
addTrackRow(docsHelper, false);
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
String expectedData =
"<entry xmlns='http://www.w3.org/2005/Atom' "
+ "xmlns:gsx='http://schemas.google.com/spreadsheets/2006/extended'>"
+ "<gsx:name><![CDATA[trackName]]></gsx:name>"
+ "<gsx:description><![CDATA[trackDescription]]></gsx:description>"
+ "<gsx:date><![CDATA[" + dateFormat.format(new Date(TIME)) + "]]></gsx:date>"
+ "<gsx:date><![CDATA[" + DATE_FORMAT.format(new Date(TIME)) + "]]></gsx:date>"
+ "<gsx:totaltime><![CDATA[0:00:05]]></gsx:totaltime>"
+ "<gsx:movingtime><![CDATA[0:00:04]]></gsx:movingtime>"
+ "<gsx:distance><![CDATA[12.43]]></gsx:distance>"
@@ -89,7 +94,12 @@ public class DocsHelper_AddTrackRowTest extends TestCase {
}
public void testAddTrackRow_metric() throws Exception {
StringWritingDocsHelper docsHelper = new StringWritingDocsHelper();
StringWritingDocsHelper docsHelper = new StringWritingDocsHelper() {
@Override
protected String getDisplayDate(Context context, long time) {
return DATE_FORMAT.format(new Date(TIME));
}
};
addTrackRow(docsHelper, true);
// The imperial test verifies that the tags come out in the proper order,