diff --git a/app/build.gradle b/app/build.gradle
index 560a0814a..31a3b829d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -73,6 +73,7 @@ dependencies {
implementation 'com.github.invissvenska:NumberPickerPreference:1.0.1'
// Testing
+ testImplementation 'androidx.test:core:1.0.0'
testImplementation 'junit:junit:4.13.1'
testImplementation 'org.robolectric:robolectric:4.0.2'
}
diff --git a/app/src/main/java/protect/card_locker/ImportURIHelper.java b/app/src/main/java/protect/card_locker/ImportURIHelper.java
index 9f9915e3a..ceea0bb8a 100644
--- a/app/src/main/java/protect/card_locker/ImportURIHelper.java
+++ b/app/src/main/java/protect/card_locker/ImportURIHelper.java
@@ -42,23 +42,28 @@ public class ImportURIHelper {
try {
// These values are allowed to be null
+ Date expiry = null;
Integer headerColor = null;
Integer headerTextColor = null;
String store = uri.getQueryParameter(STORE);
String note = uri.getQueryParameter(NOTE);
- long expiry = Long.parseLong(uri.getQueryParameter(EXPIRY));
String cardId = uri.getQueryParameter(CARD_ID);
String barcodeType = uri.getQueryParameter(BARCODE_TYPE);
if (store == null || note == null || cardId == null || barcodeType == null) throw new InvalidObjectException("Not a valid import URI");
+ String unparsedExpiry = uri.getQueryParameter(EXPIRY);
+ if(unparsedExpiry != null && unparsedExpiry != "")
+ {
+ expiry = new Date(Long.parseLong(unparsedExpiry));
+ }
String unparsedHeaderColor = uri.getQueryParameter(HEADER_COLOR);
if(unparsedHeaderColor != null)
{
headerColor = Integer.parseInt(unparsedHeaderColor);
}
- return new LoyaltyCard(-1, store, note, new Date(expiry), cardId, barcodeType, headerColor, headerTextColor, 0);
+ return new LoyaltyCard(-1, store, note, expiry, cardId, barcodeType, headerColor, headerTextColor, 0);
} catch (NullPointerException | NumberFormatException ex) {
throw new InvalidObjectException("Not a valid import URI");
}
@@ -72,7 +77,9 @@ public class ImportURIHelper {
uriBuilder.path(path);
uriBuilder.appendQueryParameter(STORE, loyaltyCard.store);
uriBuilder.appendQueryParameter(NOTE, loyaltyCard.note);
- uriBuilder.appendQueryParameter(EXPIRY, String.valueOf(loyaltyCard.expiry.getTime()));
+ if (loyaltyCard.expiry != null) {
+ uriBuilder.appendQueryParameter(EXPIRY, String.valueOf(loyaltyCard.expiry.getTime()));
+ }
uriBuilder.appendQueryParameter(CARD_ID, loyaltyCard.cardId);
uriBuilder.appendQueryParameter(BARCODE_TYPE, loyaltyCard.barcodeType);
if(loyaltyCard.headerColor != null)
diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java
index abe64d58e..38fe62508 100644
--- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java
+++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java
@@ -10,6 +10,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import java.text.DateFormat;
+import java.util.Date;
import protect.card_locker.preferences.Settings;
@@ -65,7 +66,12 @@ class LoyaltyCardCursorAdapter extends CursorAdapter
if(loyaltyCard.expiry != null)
{
expiryField.setVisibility(View.VISIBLE);
- expiryField.setText(context.getString(R.string.expiryStateSentence, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry)));
+ int expiryString = R.string.expiryStateSentence;
+ if(Utils.hasExpired(loyaltyCard.expiry)) {
+ expiryString = R.string.expiryStateSentence;
+ expiryField.setTextColor(context.getResources().getColor(R.color.alert));
+ }
+ expiryField.setText(context.getString(expiryString, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry)));
expiryField.setTextSize(settings.getCardNoteListFontSize());
}
else
diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
index 45c206a3e..14226d84b 100644
--- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
+++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
@@ -348,6 +348,8 @@ public class LoyaltyCardEditActivity extends AppCompatActivity
else
{
setTitle(R.string.addCardTitle);
+ expiryField.setTag(null);
+ expiryField.setText(getString(R.string.never));
hideBarcode();
}
diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
index 6b6303e39..aef274b7e 100644
--- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
+++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
@@ -33,6 +33,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.zxing.BarcodeFormat;
import java.text.DateFormat;
+import java.util.Date;
import java.util.List;
import protect.card_locker.preferences.Settings;
@@ -266,12 +267,19 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
if(loyaltyCard.expiry != null) {
expiryView.setVisibility(View.VISIBLE);
- expiryView.setText(getString(R.string.expiryStateSentence, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry)));
+
+ int expiryString = R.string.expiryStateSentence;
+ if(Utils.hasExpired(loyaltyCard.expiry)) {
+ expiryString = R.string.expiryStateSentenceExpired;
+ expiryView.setTextColor(getResources().getColor(R.color.alert));
+ }
+ expiryView.setText(getString(expiryString, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry)));
}
else
{
expiryView.setVisibility(View.GONE);
}
+ expiryView.setTag(loyaltyCard.expiry);
if (noteView.getVisibility() == View.VISIBLE || groupsView.getVisibility() == View.VISIBLE || expiryView.getVisibility() == View.VISIBLE) {
bottomSheet.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/protect/card_locker/Utils.java b/app/src/main/java/protect/card_locker/Utils.java
index e9da1464c..3d0ed569f 100644
--- a/app/src/main/java/protect/card_locker/Utils.java
+++ b/app/src/main/java/protect/card_locker/Utils.java
@@ -6,6 +6,10 @@ import android.content.Intent;
import android.graphics.Color;
import android.util.Log;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
import androidx.core.graphics.ColorUtils;
public class Utils {
@@ -61,4 +65,16 @@ public class Utils {
return new BarcodeValues(format, contents);
}
+
+ static public Boolean hasExpired(Date expiryDate) {
+ // today
+ Calendar date = new GregorianCalendar();
+ // reset hour, minutes, seconds and millis
+ date.set(Calendar.HOUR_OF_DAY, 0);
+ date.set(Calendar.MINUTE, 0);
+ date.set(Calendar.SECOND, 0);
+ date.set(Calendar.MILLISECOND, 0);
+
+ return expiryDate.before(date.getTime());
+ }
}
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 97aa0ba58..01c87830f 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -16,4 +16,6 @@
#AAAAAA
#000000
+
+ #FF0000
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 85b341e4f..3152aba35 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -133,6 +133,8 @@
Manually enter card ID
Groups: %s
Expires: %s
+ Expired: %s
+
Card
Barcode
Edit barcode
diff --git a/app/src/test/java/protect/card_locker/DatabaseTest.java b/app/src/test/java/protect/card_locker/DatabaseTest.java
index 2d4f06f0f..3e3c65c6f 100644
--- a/app/src/test/java/protect/card_locker/DatabaseTest.java
+++ b/app/src/test/java/protect/card_locker/DatabaseTest.java
@@ -31,7 +31,6 @@ public class DatabaseTest
private DBHelper db;
private static final Integer DEFAULT_HEADER_COLOR = Color.BLACK;
- private static final Integer DEFAULT_HEADER_TEXT_COLOR = Color.WHITE;
@Before
public void setUp()
@@ -44,7 +43,7 @@ public class DatabaseTest
public void addRemoveOneGiftCard()
{
assertEquals(0, db.getLoyaltyCardCount());
- long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, 0);
+ long id = db.insertLoyaltyCard("store", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, 0);
boolean result = (id != -1);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
@@ -53,6 +52,7 @@ public class DatabaseTest
assertNotNull(loyaltyCard);
assertEquals("store", loyaltyCard.store);
assertEquals("note", loyaltyCard.note);
+ assertEquals(null, loyaltyCard.expiry);
assertEquals("cardId", loyaltyCard.cardId);
assertEquals(0, loyaltyCard.starStatus);
assertEquals(BarcodeFormat.UPC_A.toString(), loyaltyCard.barcodeType);
@@ -66,12 +66,12 @@ public class DatabaseTest
@Test
public void updateGiftCard()
{
- long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, 0);
+ long id = db.insertLoyaltyCard("store", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, 0);
boolean result = (id != -1);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
- result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1", BarcodeFormat.AZTEC.toString(), DEFAULT_HEADER_COLOR);
+ result = db.updateLoyaltyCard(1, "store1", "note1", null, "cardId1", BarcodeFormat.AZTEC.toString(), DEFAULT_HEADER_COLOR);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
@@ -79,6 +79,7 @@ public class DatabaseTest
assertNotNull(loyaltyCard);
assertEquals("store1", loyaltyCard.store);
assertEquals("note1", loyaltyCard.note);
+ assertEquals(null, loyaltyCard.expiry);
assertEquals("cardId1", loyaltyCard.cardId);
assertEquals(0, loyaltyCard.starStatus);
assertEquals(BarcodeFormat.AZTEC.toString(), loyaltyCard.barcodeType);
@@ -87,7 +88,7 @@ public class DatabaseTest
@Test
public void updateGiftCardOnlyStar()
{
- long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, 0);
+ long id = db.insertLoyaltyCard("store", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, 0);
boolean result = (id != -1);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
@@ -100,6 +101,7 @@ public class DatabaseTest
assertNotNull(loyaltyCard);
assertEquals("store", loyaltyCard.store);
assertEquals("note", loyaltyCard.note);
+ assertEquals(null, loyaltyCard.expiry);
assertEquals("cardId", loyaltyCard.cardId);
assertEquals(1, loyaltyCard.starStatus);
assertEquals(BarcodeFormat.UPC_A.toString(), loyaltyCard.barcodeType);
@@ -110,7 +112,7 @@ public class DatabaseTest
{
assertEquals(0, db.getLoyaltyCardCount());
- boolean result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1",
+ boolean result = db.updateLoyaltyCard(1, "store1", "note1", null, "cardId1",
BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR);
assertEquals(false, result);
assertEquals(0, db.getLoyaltyCardCount());
@@ -119,7 +121,7 @@ public class DatabaseTest
@Test
public void emptyGiftCardValues()
{
- long id = db.insertLoyaltyCard("", "", "", "", null, 0);
+ long id = db.insertLoyaltyCard("", "", null, "", "", null, 0);
boolean result = (id != -1);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
@@ -128,6 +130,7 @@ public class DatabaseTest
assertNotNull(loyaltyCard);
assertEquals("", loyaltyCard.store);
assertEquals("", loyaltyCard.note);
+ assertEquals(null, loyaltyCard.expiry);
assertEquals("", loyaltyCard.cardId);
assertEquals("", loyaltyCard.barcodeType);
}
@@ -141,7 +144,7 @@ public class DatabaseTest
// that they are sorted
for(int index = CARDS_TO_ADD-1; index >= 0; index--)
{
- long id = db.insertLoyaltyCard("store" + index, "note" + index, "cardId" + index,
+ long id = db.insertLoyaltyCard("store" + index, "note" + index, null, "cardId" + index,
BarcodeFormat.UPC_A.toString(), index, 0);
boolean result = (id != -1);
assertTrue(result);
@@ -160,7 +163,7 @@ public class DatabaseTest
{
assertEquals("store"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STORE)));
assertEquals("note"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.NOTE)));
- assertEquals("cardId"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID)));
+ assertEquals(0, cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.EXPIRY)));
assertEquals("cardId"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID)));
assertEquals(BarcodeFormat.UPC_A.toString(), cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE)));
assertEquals(0, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS)));
@@ -184,12 +187,12 @@ public class DatabaseTest
for(int index = CARDS_TO_ADD-1; index >= 0; index--)
{
if (index == CARDS_TO_ADD-1) {
- id = db.insertLoyaltyCard("store" + index, "note" + index, "cardId" + index,
+ id = db.insertLoyaltyCard("store" + index, "note" + index, null, "cardId" + index,
BarcodeFormat.UPC_A.toString(), index, 1);
}
else {
- id = db.insertLoyaltyCard("store" + index, "note" + index, "cardId" + index,
+ id = db.insertLoyaltyCard("store" + index, "note" + index, null, "cardId" + index,
BarcodeFormat.UPC_A.toString(), index, 0);
}
boolean result = (id != -1);
@@ -207,7 +210,7 @@ public class DatabaseTest
int index = CARDS_TO_ADD-1 ;
assertEquals("store"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STORE)));
assertEquals("note"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.NOTE)));
- assertEquals("cardId"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID)));
+ assertEquals(0, cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.EXPIRY)));
assertEquals("cardId"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID)));
assertEquals(BarcodeFormat.UPC_A.toString(), cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE)));
assertEquals(1, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS)));
@@ -374,7 +377,7 @@ public class DatabaseTest
{
// Create card
assertEquals(0, db.getLoyaltyCardCount());
- long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, 0);
+ long id = db.insertLoyaltyCard("store", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, 0);
boolean result = (id != -1);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
@@ -433,6 +436,7 @@ public class DatabaseTest
// Determine that the entries are queryable and the fields are correct
LoyaltyCard card = db.getLoyaltyCard(newCardId);
assertEquals("store", card.store);
+ assertEquals(null, card.expiry);
assertEquals("cardId", card.cardId);
assertEquals(BarcodeFormat.UPC_A.toString(), card.barcodeType);
assertEquals("", card.note);
diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java
index 55dd508d7..36a46a99e 100644
--- a/app/src/test/java/protect/card_locker/ImportExportTest.java
+++ b/app/src/test/java/protect/card_locker/ImportExportTest.java
@@ -26,6 +26,7 @@ import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Date;
import java.util.List;
import static org.junit.Assert.assertEquals;
@@ -70,7 +71,7 @@ public class ImportExportTest
{
String storeName = String.format("store, \"%4d", index);
String note = String.format("note, \"%4d", index);
- long id = db.insertLoyaltyCard(storeName, note, BARCODE_DATA, BARCODE_TYPE, index, 0);
+ long id = db.insertLoyaltyCard(storeName, note, null, BARCODE_DATA, BARCODE_TYPE, index, 0);
boolean result = (id != -1);
assertTrue(result);
}
@@ -86,7 +87,7 @@ public class ImportExportTest
{
String storeName = String.format("store, \"%4d", index);
String note = String.format("note, \"%4d", index);
- long id = db.insertLoyaltyCard(storeName, note, BARCODE_DATA, BARCODE_TYPE, index, 1);
+ long id = db.insertLoyaltyCard(storeName, note, null, BARCODE_DATA, BARCODE_TYPE, index, 1);
boolean result = (id != -1);
assertTrue(result);
}
@@ -95,13 +96,36 @@ public class ImportExportTest
String storeName = String.format("store, \"%4d", index);
String note = String.format("note, \"%4d", index);
//if index is even
- long id = db.insertLoyaltyCard(storeName, note, BARCODE_DATA, BARCODE_TYPE, index, 0);
+ long id = db.insertLoyaltyCard(storeName, note, null, BARCODE_DATA, BARCODE_TYPE, index, 0);
boolean result = (id != -1);
assertTrue(result);
}
assertEquals(cardsToAdd, db.getLoyaltyCardCount());
}
+ private void addLoyaltyCardsWithExpiryNeverPastTodayFuture()
+ {
+ long id = db.insertLoyaltyCard("No Expiry", "", null, BARCODE_DATA, BARCODE_TYPE, 0, 0);
+ boolean result = (id != -1);
+ assertTrue(result);
+
+ id = db.insertLoyaltyCard("Past", "", new Date((long) 1), BARCODE_DATA, BARCODE_TYPE, 0, 0);
+ result = (id != -1);
+ assertTrue(result);
+
+ id = db.insertLoyaltyCard("Today", "", new Date(), BARCODE_DATA, BARCODE_TYPE, 0, 0);
+ result = (id != -1);
+ assertTrue(result);
+
+ // This will break after 19 January 2038
+ // If someone is still maintaining this code base by then: I love you
+ id = db.insertLoyaltyCard("Future", "", new Date(2147483648L), BARCODE_DATA, BARCODE_TYPE, 0, 0);
+ result = (id != -1);
+ assertTrue(result);
+
+ assertEquals(4, db.getLoyaltyCardCount());
+ }
+
private void addGroups(int groupsToAdd)
{
// Add in reverse order to test sorting
@@ -549,6 +573,7 @@ public class ImportExportTest
assertEquals("store", card.store);
assertEquals("note", card.note);
+ assertEquals(null, card.expiry);
assertEquals("12345", card.cardId);
assertEquals("type", card.barcodeType);
assertEquals(0, card.starStatus);
@@ -584,6 +609,7 @@ public class ImportExportTest
assertEquals("store", card.store);
assertEquals("note", card.note);
+ assertEquals(null, card.expiry);
assertEquals("12345", card.cardId);
assertEquals("type", card.barcodeType);
assertEquals(0, card.starStatus);
@@ -645,6 +671,7 @@ public class ImportExportTest
assertEquals("store", card.store);
assertEquals("note", card.note);
+ assertEquals(null, card.expiry);
assertEquals("12345", card.cardId);
assertEquals("", card.barcodeType);
assertEquals(0, card.starStatus);
@@ -680,6 +707,7 @@ public class ImportExportTest
assertEquals("store", card.store);
assertEquals("note", card.note);
+ assertEquals(null, card.expiry);
assertEquals("12345", card.cardId);
assertEquals("type", card.barcodeType);
assertEquals(1, card.starStatus);
@@ -715,6 +743,7 @@ public class ImportExportTest
assertEquals("store", card.store);
assertEquals("note", card.note);
+ assertEquals(null, card.expiry);
assertEquals("12345", card.cardId);
assertEquals("type", card.barcodeType);
assertEquals(0, card.starStatus);
@@ -770,6 +799,7 @@ public class ImportExportTest
assertEquals("store", card.store);
assertEquals("note", card.note);
+ assertEquals(null, card.expiry);
assertEquals("12345", card.cardId);
assertEquals("type", card.barcodeType);
assertEquals(0, card.starStatus);
@@ -777,4 +807,52 @@ public class ImportExportTest
clearDatabase();
}
+
+
+ private void checkLoyaltyCardsExpiry()
+ {
+ Cursor cursor = db.getLoyaltyCardCursor();
+ cursor.moveToNext();
+ LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cursor);
+ assertEquals("Never", card.store);
+ assertEquals("", card.note);
+ assertEquals(null, card.expiry);
+ assertEquals(BARCODE_DATA, card.cardId);
+ assertEquals(BARCODE_TYPE, card.barcodeType);
+ assertEquals(Integer.valueOf(0), card.headerColor);
+ assertEquals(0, card.starStatus);
+
+ cursor.moveToNext();
+ card = LoyaltyCard.toLoyaltyCard(cursor);
+ assertEquals("Past", card.store);
+ assertEquals("", card.note);
+ assertTrue(card.expiry.before(new Date()));
+ assertEquals(BARCODE_DATA, card.cardId);
+ assertEquals(BARCODE_TYPE, card.barcodeType);
+ assertEquals(Integer.valueOf(0), card.headerColor);
+ assertEquals(0, card.starStatus);
+
+ cursor.moveToNext();
+ card = LoyaltyCard.toLoyaltyCard(cursor);
+ assertEquals("Today", card.store);
+ assertEquals("", card.note);
+ assertTrue(card.expiry.before(new Date(new Date().getTime()+86400)));
+ assertTrue(card.expiry.after(new Date(new Date().getTime()-86400)));
+ assertEquals(BARCODE_DATA, card.cardId);
+ assertEquals(BARCODE_TYPE, card.barcodeType);
+ assertEquals(Integer.valueOf(0), card.headerColor);
+ assertEquals(0, card.starStatus);
+
+ cursor.moveToNext();
+ card = LoyaltyCard.toLoyaltyCard(cursor);
+ assertEquals("Future", card.store);
+ assertEquals("", card.note);
+ assertTrue(card.expiry.after(new Date(new Date().getTime()+86400)));
+ assertEquals(BARCODE_DATA, card.cardId);
+ assertEquals(BARCODE_TYPE, card.barcodeType);
+ assertEquals(Integer.valueOf(0), card.headerColor);
+ assertEquals(0, card.starStatus);
+
+ cursor.close();
+ }
}
diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java
index cee3fcd99..02bd27462 100644
--- a/app/src/test/java/protect/card_locker/ImportURITest.java
+++ b/app/src/test/java/protect/card_locker/ImportURITest.java
@@ -11,6 +11,7 @@ import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.io.InvalidObjectException;
+import java.util.Date;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -35,7 +36,9 @@ public class ImportURITest {
public void ensureNoDataLoss() throws InvalidObjectException
{
// Generate card
- db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, Color.BLACK, 1);
+ Date date = new Date();
+
+ db.insertLoyaltyCard("store", "note", date, BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, Color.BLACK, 1);
// Get card
LoyaltyCard card = db.getLoyaltyCard(1);
@@ -51,6 +54,7 @@ public class ImportURITest {
assertEquals(card.cardId, parsedCard.cardId);
assertEquals(card.headerColor, parsedCard.headerColor);
assertEquals(card.note, parsedCard.note);
+ assertEquals(card.expiry, parsedCard.expiry);
assertEquals(card.store, parsedCard.store);
// No export of starStatus for single cards foreseen therefore 0 will be imported
assertEquals(0, parsedCard.starStatus);
@@ -60,7 +64,7 @@ public class ImportURITest {
public void ensureNoCrashOnMissingHeaderFields() throws InvalidObjectException
{
// Generate card
- db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, null, 0);
+ db.insertLoyaltyCard("store", "note", null, BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, null, 0);
// Get card
LoyaltyCard card = db.getLoyaltyCard(1);
@@ -75,6 +79,7 @@ public class ImportURITest {
assertEquals(card.barcodeType, parsedCard.barcodeType);
assertEquals(card.cardId, parsedCard.cardId);
assertEquals(card.note, parsedCard.note);
+ assertEquals(card.expiry, parsedCard.expiry);
assertEquals(card.store, parsedCard.store);
assertNull(parsedCard.headerColor);
assertNull(parsedCard.headerTextColor);
diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java
index c0f6de264..3d8c25e2a 100644
--- a/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java
+++ b/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java
@@ -1,10 +1,13 @@
package protect.card_locker;
import android.app.Activity;
+import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.Color;
import androidx.preference.PreferenceManager;
+import androidx.test.core.app.ApplicationProvider;
+
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
@@ -18,6 +21,9 @@ import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
+import java.text.DateFormat;
+import java.util.Date;
+
import static org.junit.Assert.assertEquals;
@RunWith(RobolectricTestRunner.class)
@@ -54,10 +60,11 @@ public class LoyaltyCardCursorAdapterTest
return view;
}
- private void checkView(final View view, final String store, final String note, boolean checkFontSizes)
+ private void checkView(final View view, final String store, final String note, final String expiry, boolean checkFontSizes)
{
final TextView storeField = view.findViewById(R.id.store);
final TextView noteField = view.findViewById(R.id.note);
+ final TextView expiryField = view.findViewById(R.id.expiry);
if(checkFontSizes)
{
@@ -66,6 +73,7 @@ public class LoyaltyCardCursorAdapterTest
assertEquals(storeFontSize, (int)storeField.getTextSize());
assertEquals(noteFontSize, (int)noteField.getTextSize());
+ assertEquals(noteFontSize, (int)expiryField.getTextSize());
}
assertEquals(store, storeField.getText().toString());
@@ -78,13 +86,23 @@ public class LoyaltyCardCursorAdapterTest
{
assertEquals(View.GONE, noteField.getVisibility());
}
+
+ if(expiry.isEmpty() == false)
+ {
+ assertEquals(View.VISIBLE, expiryField.getVisibility());
+ assertEquals(expiry, expiryField.getText().toString());
+ }
+ else
+ {
+ assertEquals(View.GONE, expiryField.getVisibility());
+ }
}
@Test
public void TestCursorAdapterEmptyNote()
{
- db.insertLoyaltyCard("store", "", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
LoyaltyCard card = db.getLoyaltyCard(1);
Cursor cursor = db.getLoyaltyCardCursor();
@@ -92,7 +110,7 @@ public class LoyaltyCardCursorAdapterTest
View view = createView(cursor);
- checkView(view, card.store, card.note, false);
+ checkView(view, card.store, card.note, "", false);
cursor.close();
}
@@ -100,7 +118,7 @@ public class LoyaltyCardCursorAdapterTest
@Test
public void TestCursorAdapterWithNote()
{
- db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
LoyaltyCard card = db.getLoyaltyCard(1);
Cursor cursor = db.getLoyaltyCardCursor();
@@ -108,7 +126,7 @@ public class LoyaltyCardCursorAdapterTest
View view = createView(cursor);
- checkView(view, card.store, card.note, false);
+ checkView(view, card.store, card.note, "", false);
cursor.close();
}
@@ -116,7 +134,11 @@ public class LoyaltyCardCursorAdapterTest
@Test
public void TestCursorAdapterFontSizes()
{
- db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ final Context context = ApplicationProvider.getApplicationContext();
+ Date expiryDate = new Date();
+ String dateString = context.getString(R.string.expiryStateSentence, DateFormat.getDateInstance(DateFormat.LONG).format(expiryDate));
+
+ db.insertLoyaltyCard("store", "note", expiryDate, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
LoyaltyCard card = db.getLoyaltyCard(1);
Cursor cursor = db.getLoyaltyCardCursor();
@@ -124,11 +146,12 @@ public class LoyaltyCardCursorAdapterTest
setFontSizes(1, 2);
View view = createView(cursor);
- checkView(view, card.store, card.note, true);
+
+ checkView(view, card.store, card.note, dateString, true);
setFontSizes(30, 31);
view = createView(cursor);
- checkView(view, card.store, card.note, true);
+ checkView(view, card.store, card.note, dateString, true);
cursor.close();
}
@@ -136,9 +159,9 @@ public class LoyaltyCardCursorAdapterTest
@Test
public void TestCursorAdapterStarring()
{
- db.insertLoyaltyCard("storeA", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
- db.insertLoyaltyCard("storeB", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 1);
- db.insertLoyaltyCard("storeC", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 1);
+ db.insertLoyaltyCard("storeA", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ db.insertLoyaltyCard("storeB", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 1);
+ db.insertLoyaltyCard("storeC", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 1);
Cursor cursor = db.getLoyaltyCardCursor();
cursor.moveToFirst();
diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java
index 92c9dd413..0475519fc 100644
--- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java
+++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java
@@ -13,6 +13,7 @@ import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
@@ -26,9 +27,12 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.core.widget.TextViewCompat;
+import androidx.test.core.app.ApplicationProvider;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.client.android.Intents;
import java.io.IOException;
+import java.text.DateFormat;
+import java.util.Date;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -93,6 +97,7 @@ public class LoyaltyCardViewActivityTest
*/
private void saveLoyaltyCardWithArguments(final Activity activity,
final String store, final String note,
+ final Date expiry,
final String cardId,
final String barcodeType,
boolean creatingNewCard)
@@ -109,11 +114,13 @@ public class LoyaltyCardViewActivityTest
final EditText storeField = activity.findViewById(R.id.storeNameEdit);
final EditText noteField = activity.findViewById(R.id.noteEdit);
+ final EditText expiryView = activity.findViewById(R.id.expiryView);
final TextView cardIdField = activity.findViewById(R.id.cardIdView);
final TextView barcodeTypeField = activity.findViewById(R.id.barcodeTypeField);
storeField.setText(store);
noteField.setText(note);
+ expiryView.setTag(expiry);
cardIdField.setText(cardId);
barcodeTypeField.setText(barcodeType);
@@ -231,7 +238,7 @@ public class LoyaltyCardViewActivityTest
}
private void checkAllFields(final Activity activity, ViewMode mode,
- final String store, final String note, final String cardId, final String barcodeType)
+ final String store, final String note, final String expiryString, final String cardId, final String barcodeType)
{
if(mode == ViewMode.VIEW_CARD)
{
@@ -243,6 +250,7 @@ public class LoyaltyCardViewActivityTest
checkFieldProperties(activity, R.id.storeNameEdit, editVisibility, store);
checkFieldProperties(activity, R.id.noteEdit, editVisibility, note);
+ checkFieldProperties(activity, R.id.expiryView, editVisibility, expiryString);
checkFieldProperties(activity, R.id.cardIdView, View.VISIBLE, cardId);
checkFieldProperties(activity, R.id.barcodeTypeField, View.VISIBLE, barcodeType);
checkFieldProperties(activity, R.id.barcode, View.VISIBLE, null);
@@ -258,8 +266,9 @@ public class LoyaltyCardViewActivityTest
activityController.resume();
Activity activity = (Activity)activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
- checkAllFields(activity, ViewMode.ADD_CARD, "", "", "", "");
+ checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never) , "", "");
}
@Test
@@ -319,16 +328,17 @@ public class LoyaltyCardViewActivityTest
activityController.resume();
Activity activity = (Activity)activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
- checkAllFields(activity, ViewMode.ADD_CARD, "", "", "", "");
+ checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), "", "");
// Complete barcode capture successfully
captureBarcodeWithResult(activity, true);
- checkAllFields(activity, ViewMode.ADD_CARD, "", "", BARCODE_DATA, BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), BARCODE_DATA, BARCODE_TYPE);
// Save and check the loyalty card
- saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, BARCODE_TYPE, true);
+ saveLoyaltyCardWithArguments(activity, "store", "note", null, BARCODE_DATA, BARCODE_TYPE, true);
}
@Test
@@ -340,13 +350,14 @@ public class LoyaltyCardViewActivityTest
activityController.resume();
Activity activity = (Activity)activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
- checkAllFields(activity, ViewMode.ADD_CARD, "", "", "", "");
+ checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), "", "");
// Complete barcode capture in failure
captureBarcodeWithResult(activity, false);
- checkAllFields(activity, ViewMode.ADD_CARD, "", "", "", "");
+ checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), "", "");
}
@Test
@@ -358,13 +369,14 @@ public class LoyaltyCardViewActivityTest
activityController.resume();
LoyaltyCardEditActivity activity = (LoyaltyCardEditActivity) activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
- checkAllFields(activity, ViewMode.ADD_CARD, "", "", "", "");
+ checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), "", "");
// Complete barcode capture successfully
captureBarcodeWithResult(activity, true);
- checkAllFields(activity, ViewMode.ADD_CARD, "", "", BARCODE_DATA, BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), BARCODE_DATA, BARCODE_TYPE);
// Cancel the loyalty card creation
assertEquals(false, activity.isFinishing());
@@ -413,13 +425,13 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
activityController.start();
activityController.visible();
activityController.resume();
- checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", BARCODE_DATA, BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", null, BARCODE_DATA, BARCODE_TYPE);
db.close();
}
@@ -431,13 +443,13 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
activityController.start();
activityController.visible();
activityController.resume();
- checkAllFields(activity, ViewMode.VIEW_CARD, "store", "note", BARCODE_DATA, BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.VIEW_CARD, "store", "note", null, BARCODE_DATA, BARCODE_TYPE);
db.close();
}
@@ -449,18 +461,18 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, 0);
activityController.start();
activityController.visible();
activityController.resume();
- checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", EAN_BARCODE_DATA, EAN_BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", null, EAN_BARCODE_DATA, EAN_BARCODE_TYPE);
// Complete barcode capture successfully
captureBarcodeWithResult(activity, true);
- checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", BARCODE_DATA, BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", null, BARCODE_DATA, BARCODE_TYPE);
db.close();
}
@@ -472,18 +484,18 @@ public class LoyaltyCardViewActivityTest
LoyaltyCardEditActivity activity = (LoyaltyCardEditActivity) activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, 0);
activityController.start();
activityController.visible();
activityController.resume();
- checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", EAN_BARCODE_DATA, EAN_BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", null, EAN_BARCODE_DATA, EAN_BARCODE_TYPE);
// Complete barcode capture successfully
captureBarcodeWithResult(activity, true);
- checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", BARCODE_DATA, BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", null, BARCODE_DATA, BARCODE_TYPE);
// Cancel the loyalty card creation
assertEquals(false, activity.isFinishing());
@@ -502,6 +514,54 @@ public class LoyaltyCardViewActivityTest
db.close();
}
+ @Test
+ public void startWithLoyaltyCardNoExpirySetExpiry() throws IOException
+ {
+ ActivityController activityController = createActivityWithLoyaltyCard(true);
+ Activity activity = (Activity)activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
+ DBHelper db = new DBHelper(activity);
+
+ db.insertLoyaltyCard("store", "note", null, EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, 0);
+
+ activityController.start();
+ activityController.visible();
+ activityController.resume();
+
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.never), EAN_BARCODE_DATA, EAN_BARCODE_TYPE);
+
+ // Set date to today
+ activity.findViewById(R.id.expiryField).performClick();
+
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.expiryStateSentence, DateFormat.getDateInstance(DateFormat.LONG).format(new Date())), BARCODE_DATA, BARCODE_TYPE);
+
+ db.close();
+ }
+
+ @Test
+ public void startWithLoyaltyCardExpirySetNoExpiry() throws IOException
+ {
+ ActivityController activityController = createActivityWithLoyaltyCard(true);
+ Activity activity = (Activity)activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
+ DBHelper db = new DBHelper(activity);
+
+ db.insertLoyaltyCard("store", "note", new Date(), EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, 0);
+
+ activityController.start();
+ activityController.visible();
+ activityController.resume();
+
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.expiryStateSentence, DateFormat.getDateInstance(DateFormat.LONG).format(new Date())), EAN_BARCODE_DATA, EAN_BARCODE_TYPE);
+
+ // Set date to today
+ activity.findViewById(R.id.expiryField).performClick();
+
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.never), BARCODE_DATA, BARCODE_TYPE);
+
+ db.close();
+ }
+
@Test
public void checkMenu() throws IOException
{
@@ -509,7 +569,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
activityController.start();
activityController.visible();
@@ -555,7 +615,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
activityController.start();
activityController.visible();
@@ -575,7 +635,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, null, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, null, 0);
activityController.start();
activityController.visible();
@@ -595,14 +655,14 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, null, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, null, 0);
activityController.start();
activityController.visible();
activityController.resume();
// Save and check the loyalty card
- saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, BARCODE_TYPE, false);
+ saveLoyaltyCardWithArguments(activity, "store", "note", null, BARCODE_DATA, BARCODE_TYPE, false);
db.close();
}
@@ -614,14 +674,14 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, "", Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, "", Color.BLACK, 0);
activityController.start();
activityController.visible();
activityController.resume();
// Save and check the loyalty card
- saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, activity.getApplicationContext().getString(R.string.noBarcode), false);
+ saveLoyaltyCardWithArguments(activity, "store", "note", null, BARCODE_DATA, activity.getApplicationContext().getString(R.string.noBarcode), false);
db.close();
}
@@ -631,26 +691,27 @@ public class LoyaltyCardViewActivityTest
{
ActivityController activityController = createActivityWithLoyaltyCard(true);
Activity activity = (Activity)activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
activityController.start();
activityController.visible();
activityController.resume();
// First check if the card is as expected
- checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", BARCODE_DATA, BARCODE_TYPE);
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.never), BARCODE_DATA, BARCODE_TYPE);
// Complete empty barcode selection successfully
selectBarcodeWithResult(activity, BARCODE_DATA, "", true);
// Check if the barcode type is NO_BARCODE as expected
- checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", BARCODE_DATA, activity.getApplicationContext().getString(R.string.noBarcode));
+ checkAllFields(activity, ViewMode.UPDATE_CARD, "store", "note", context.getString(R.string.never), BARCODE_DATA, activity.getApplicationContext().getString(R.string.noBarcode));
assertEquals(View.GONE, activity.findViewById(R.id.barcodeLayout).getVisibility());
// Check if the special NO_BARCODE string doesn't get saved
- saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, activity.getApplicationContext().getString(R.string.noBarcode), false);
+ saveLoyaltyCardWithArguments(activity, "store", "note", null, BARCODE_DATA, activity.getApplicationContext().getString(R.string.noBarcode), false);
db.close();
}
@@ -662,7 +723,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
final int STORE_FONT_SIZE = 50;
final int CARD_FONT_SIZE = 40;
@@ -702,7 +763,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
settings.edit()
@@ -739,7 +800,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity) activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK,0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK,0);
activityController.start();
activityController.visible();
activityController.resume();
@@ -770,7 +831,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
- db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, BARCODE_DATA, BARCODE_TYPE, Color.BLACK, 0);
activityController.start();
activityController.visible();
@@ -831,7 +892,7 @@ public class LoyaltyCardViewActivityTest
@Test
public void importCard()
{
- Uri importUri = Uri.parse("https://thelastproject.github.io/Catima/share?store=Example%20Store¬e=&cardid=123456&barcodetype=AZTEC&headercolor=-416706&headertextcolor=-1");
+ Uri importUri = Uri.parse("https://thelastproject.github.io/Catima/share?store=Example%20Store¬e=&expiry=&cardid=123456&barcodetype=AZTEC&headercolor=-416706&headertextcolor=-1");
Intent intent = new Intent();
intent.setData(importUri);
@@ -843,8 +904,9 @@ public class LoyaltyCardViewActivityTest
activityController.resume();
Activity activity = (Activity)activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
- checkAllFields(activity, ViewMode.ADD_CARD, "Example Store", "", "123456", "AZTEC");
+ checkAllFields(activity, ViewMode.ADD_CARD, "Example Store", "", context.getString(R.string.never), "123456", "AZTEC");
assertEquals(-416706, ((ColorDrawable) activity.findViewById(R.id.thumbnail).getBackground()).getColor());
}
@@ -863,8 +925,9 @@ public class LoyaltyCardViewActivityTest
activityController.resume();
Activity activity = (Activity)activityController.get();
+ final Context context = ApplicationProvider.getApplicationContext();
- checkAllFields(activity, ViewMode.ADD_CARD, "Example Store", "", "123456", "AZTEC");
+ checkAllFields(activity, ViewMode.ADD_CARD, "Example Store", "", context.getString(R.string.never), "123456", "AZTEC");
assertEquals(-416706, ((ColorDrawable) activity.findViewById(R.id.thumbnail).getBackground()).getColor());
}
}
diff --git a/app/src/test/java/protect/card_locker/MainActivityTest.java b/app/src/test/java/protect/card_locker/MainActivityTest.java
index 05cb3b229..5dcee2a93 100644
--- a/app/src/test/java/protect/card_locker/MainActivityTest.java
+++ b/app/src/test/java/protect/card_locker/MainActivityTest.java
@@ -95,7 +95,7 @@ public class MainActivityTest
assertEquals(0, list.getCount());
DBHelper db = new DBHelper(mainActivity);
- db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ db.insertLoyaltyCard("store", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
assertEquals(View.VISIBLE, helpText.getVisibility());
assertEquals(View.GONE, noMatchingCardsText.getVisibility());
@@ -131,10 +131,10 @@ public class MainActivityTest
assertEquals(0, list.getCount());
DBHelper db = new DBHelper(mainActivity);
- db.insertLoyaltyCard("storeB", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
- db.insertLoyaltyCard("storeA", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
- db.insertLoyaltyCard("storeD", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 1);
- db.insertLoyaltyCard("storeC", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 1);
+ db.insertLoyaltyCard("storeB", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ db.insertLoyaltyCard("storeA", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ db.insertLoyaltyCard("storeD", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 1);
+ db.insertLoyaltyCard("storeC", "note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 1);
assertEquals(View.VISIBLE, helpText.getVisibility());
assertEquals(View.GONE, noMatchingCardsText.getVisibility());
@@ -232,8 +232,8 @@ public class MainActivityTest
TabLayout groupTabs = mainActivity.findViewById(R.id.groups);
DBHelper db = new DBHelper(mainActivity);
- db.insertLoyaltyCard("The First Store", "Initial note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
- db.insertLoyaltyCard("The Second Store", "Secondary note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ db.insertLoyaltyCard("The First Store", "Initial note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
+ db.insertLoyaltyCard("The Second Store", "Secondary note", null, "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, 0);
db.insertGroup("Group one");
List groups = new ArrayList<>();