From 04dcee60979e355d2de1aec244247fe5a4190e01 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sat, 14 Dec 2019 21:37:48 +0100 Subject: [PATCH] Fix some tests --- .../card_locker/LoyaltyCardViewActivity.java | 2 +- app/src/main/res/menu/card_view_menu.xml | 2 +- app/src/main/res/values/strings.xml | 1 + .../protect/card_locker/DatabaseTest.java | 22 +++++++--- .../protect/card_locker/ImportExportTest.java | 9 +++- .../protect/card_locker/ImportURITest.java | 6 ++- .../LoyaltyCardViewActivityTest.java | 44 ++++++++++++++++++- 7 files changed, 71 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index 35a607204..3408c0ce9 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -220,7 +220,7 @@ public class LoyaltyCardViewActivity extends AppCompatActivity item.setVisible(false); } - if(loyaltyCard.extras.length() > 0) + if(loyaltyCard != null && loyaltyCard.extras.length() > 0) { MenuItem item = menu.findItem(R.id.action_view_extras); item.setVisible(true); diff --git a/app/src/main/res/menu/card_view_menu.xml b/app/src/main/res/menu/card_view_menu.xml index 53c0a4c7e..82e848fad 100644 --- a/app/src/main/res/menu/card_view_menu.xml +++ b/app/src/main/res/menu/card_view_menu.xml @@ -20,7 +20,7 @@ \ 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 4072cce78..b64fa9012 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,6 +19,7 @@ Enter Card Edit Card Edit + More Info Delete Confirm Block Rotation diff --git a/app/src/test/java/protect/card_locker/DatabaseTest.java b/app/src/test/java/protect/card_locker/DatabaseTest.java index a2bc92a9d..063cc7139 100644 --- a/app/src/test/java/protect/card_locker/DatabaseTest.java +++ b/app/src/test/java/protect/card_locker/DatabaseTest.java @@ -8,6 +8,7 @@ import android.graphics.Color; import com.google.zxing.BarcodeFormat; +import org.json.JSONException; import org.json.JSONObject; import org.junit.Before; import org.junit.Test; @@ -29,10 +30,13 @@ public class DatabaseTest private static final Integer DEFAULT_HEADER_COLOR = Color.BLACK; private static final Integer DEFAULT_HEADER_TEXT_COLOR = Color.WHITE; + private static JSONObject DEFAULT_EXTRAS; @Before - public void setUp() + public void setUp() throws JSONException { + DEFAULT_EXTRAS = new JSONObject("{\"testkey\": \"testvalue\"}"); + Activity activity = Robolectric.setupActivity(MainActivity.class); db = new DBHelper(activity); } @@ -41,7 +45,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, DEFAULT_HEADER_TEXT_COLOR, new JSONObject()); + long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_EXTRAS); boolean result = (id != -1); assertTrue(result); assertEquals(1, db.getLoyaltyCardCount()); @@ -62,12 +66,12 @@ public class DatabaseTest @Test public void updateGiftCard() { - long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, new JSONObject()); + long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_EXTRAS); boolean result = (id != -1); assertTrue(result); assertEquals(1, db.getLoyaltyCardCount()); - result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1", BarcodeFormat.AZTEC.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, new JSONObject()); + result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1", BarcodeFormat.AZTEC.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_EXTRAS); assertTrue(result); assertEquals(1, db.getLoyaltyCardCount()); @@ -77,6 +81,7 @@ public class DatabaseTest assertEquals("note1", loyaltyCard.note); assertEquals("cardId1", loyaltyCard.cardId); assertEquals(BarcodeFormat.AZTEC.toString(), loyaltyCard.barcodeType); + assertEquals(DEFAULT_EXTRAS.toString(), loyaltyCard.extras.toString()); } @Test @@ -85,7 +90,7 @@ public class DatabaseTest assertEquals(0, db.getLoyaltyCardCount()); boolean result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1", - BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, new JSONObject()); + BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_EXTRAS); assertEquals(false, result); assertEquals(0, db.getLoyaltyCardCount()); } @@ -104,10 +109,11 @@ public class DatabaseTest assertEquals("", loyaltyCard.note); assertEquals("", loyaltyCard.cardId); assertEquals("", loyaltyCard.barcodeType); + assertEquals("{}", loyaltyCard.extras.toString()); } @Test - public void giftCardsViaCursor() + public void giftCardsViaCursor() throws JSONException { final int CARDS_TO_ADD = 10; @@ -116,7 +122,7 @@ public class DatabaseTest for(int index = CARDS_TO_ADD-1; index >= 0; index--) { long id = db.insertLoyaltyCard("store" + index, "note" + index, "cardId" + index, - BarcodeFormat.UPC_A.toString(), index, index*2, new JSONObject()); + BarcodeFormat.UPC_A.toString(), index, index*2, new JSONObject("{\"testkey" + index + "\":\"testvalue" + index + "\"}")); boolean result = (id != -1); assertTrue(result); } @@ -139,6 +145,7 @@ public class DatabaseTest assertEquals(BarcodeFormat.UPC_A.toString(), cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE))); assertEquals(index, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_COLOR))); assertEquals(index*2, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_TEXT_COLOR))); + assertEquals("{\"testkey" + index + "\":\"testvalue" + index + "\"}", cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.EXTRAS))); cursor.moveToNext(); } @@ -194,6 +201,7 @@ public class DatabaseTest assertEquals("", card.note); assertEquals(null, card.headerColor); assertEquals(null, card.headerTextColor); + assertEquals("{}", card.extras.toString()); database.close(); } diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java index a4169320e..cab8f047a 100644 --- a/app/src/test/java/protect/card_locker/ImportExportTest.java +++ b/app/src/test/java/protect/card_locker/ImportExportTest.java @@ -8,6 +8,7 @@ import android.os.Environment; import com.google.zxing.BarcodeFormat; import org.apache.tools.ant.filters.StringInputStream; +import org.json.JSONException; import org.json.JSONObject; import org.junit.Before; import org.junit.Test; @@ -44,10 +45,13 @@ public class ImportExportTest private final String BARCODE_DATA = "428311627547"; private final String BARCODE_TYPE = BarcodeFormat.UPC_A.name(); + private JSONObject EXTRAS; @Before - public void setUp() + public void setUp() throws JSONException { + EXTRAS = new JSONObject("{\"key1\": \"value1\"}"); + activity = Robolectric.setupActivity(MainActivity.class); db = new DBHelper(activity); nowMs = System.currentTimeMillis(); @@ -69,7 +73,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, index*2, new JSONObject()); + long id = db.insertLoyaltyCard(storeName, note, BARCODE_DATA, BARCODE_TYPE, index, index*2, EXTRAS); boolean result = (id != -1); assertTrue(result); } @@ -100,6 +104,7 @@ public class ImportExportTest assertEquals(BARCODE_TYPE, card.barcodeType); assertEquals(Integer.valueOf(index), card.headerColor); assertEquals(Integer.valueOf(index*2), card.headerTextColor); + assertEquals(EXTRAS, card.extras); index++; } diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java index fa4840cfc..601ec9fc5 100644 --- a/app/src/test/java/protect/card_locker/ImportURITest.java +++ b/app/src/test/java/protect/card_locker/ImportURITest.java @@ -5,6 +5,7 @@ import android.graphics.Color; import android.net.Uri; import com.google.zxing.BarcodeFormat; +import org.json.JSONException; import org.json.JSONObject; import org.junit.Before; import org.junit.Test; @@ -32,10 +33,10 @@ public class ImportURITest { } @Test - public void ensureNoDataLoss() throws InvalidObjectException + public void ensureNoDataLoss() throws InvalidObjectException, JSONException { // Generate card - db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, Color.BLACK, Color.WHITE, new JSONObject()); + db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, Color.BLACK, Color.WHITE, new JSONObject("{\"key\": \"value\"}")); // Get card LoyaltyCard card = db.getLoyaltyCard(1); @@ -53,6 +54,7 @@ public class ImportURITest { assertEquals(card.headerTextColor, parsedCard.headerTextColor); assertEquals(card.note, parsedCard.note); assertEquals(card.store, parsedCard.store); + assertEquals(card.extras.toString(), parsedCard.extras.toString()); } @Test diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index d14b796be..24796aa78 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -22,6 +22,7 @@ import android.widget.TextView; import com.google.zxing.BarcodeFormat; import com.google.zxing.client.android.Intents; +import org.json.JSONException; import org.json.JSONObject; import org.junit.Before; import org.junit.Test; @@ -451,12 +452,13 @@ public class LoyaltyCardViewActivityTest final Menu menu = shadowOf(activity).getOptionsMenu(); assertTrue(menu != null); - // The share, settings and add button should be present - assertEquals(menu.size(), 3); + // The rotation, share, edit and info button should be present + assertEquals(menu.size(), 4); assertEquals("Block Rotation", menu.findItem(R.id.action_lock_unlock).getTitle().toString()); assertEquals("Share", menu.findItem(R.id.action_share).getTitle().toString()); assertEquals("Edit", menu.findItem(R.id.action_edit).getTitle().toString()); + assertEquals("More Info", menu.findItem(R.id.action_view_extras).getTitle().toString()); } @Test @@ -609,6 +611,44 @@ public class LoyaltyCardViewActivityTest } } + @Test + public void checkMoreInfoNoExtras() + { + ActivityController activityController = createActivityWithLoyaltyCard(false); + + Activity activity = (Activity)activityController.get(); + DBHelper db = new DBHelper(activity); + db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new JSONObject()); + + activityController.start(); + activityController.resume(); + activityController.visible(); + + assertEquals(false, activity.isFinishing()); + + MenuItem item = shadowOf(activity).getOptionsMenu().findItem(R.id.action_view_extras); + assertEquals(false, item.isVisible()); + } + + @Test + public void checkMoreInfoExtras() throws JSONException + { + ActivityController activityController = createActivityWithLoyaltyCard(false); + + Activity activity = (Activity)activityController.get(); + DBHelper db = new DBHelper(activity); + db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new JSONObject("{\"key\": \"value\"}")); + + activityController.start(); + activityController.resume(); + activityController.visible(); + + assertEquals(false, activity.isFinishing()); + + MenuItem item = shadowOf(activity).getOptionsMenu().findItem(R.id.action_view_extras); + assertEquals(true, item.isVisible()); + } + @Test public void importCard() {