diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java new file mode 100644 index 000000000..e06a8ea68 --- /dev/null +++ b/app/src/test/java/protect/card_locker/ImportURITest.java @@ -0,0 +1,73 @@ +package protect.card_locker; + +import android.app.Activity; +import android.graphics.Color; +import android.net.Uri; + +import com.google.zxing.BarcodeFormat; + +import org.bouncycastle.util.test.TestFailedException; +import org.bouncycastle.util.test.TestResult; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; + +import java.io.InvalidObjectException; + +import static org.junit.Assert.assertEquals; + +import static org.junit.Assert.assertTrue; +import static protect.card_locker.DBHelper.LoyaltyCardDbIds.BARCODE_TYPE; + +@RunWith(RobolectricTestRunner.class) +@Config(constants = BuildConfig.class, sdk = 23) +public class ImportURITest { + private ImportURIHelper importURIHelper; + private DBHelper db; + + @Before + public void setUp() + { + Activity activity = Robolectric.setupActivity(MainActivity.class); + importURIHelper = new ImportURIHelper(activity); + db = new DBHelper(activity); + } + + @Test + public void ensureNoDataLoss() throws InvalidObjectException + { + // Generate card + db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), BARCODE_TYPE, Color.BLACK, Color.WHITE); + + // Get card + LoyaltyCard card = db.getLoyaltyCard(1); + + // Card to URI + Uri cardUri = importURIHelper.toUri(card); + + // Parse URI + LoyaltyCard parsedCard = importURIHelper.parse(cardUri); + + // Compare everything + assertEquals(card.barcodeType, parsedCard.barcodeType); + assertEquals(card.cardId, parsedCard.cardId); + assertEquals(card.headerColor, parsedCard.headerColor); + assertEquals(card.headerTextColor, parsedCard.headerTextColor); + assertEquals(card.note, parsedCard.note); + assertEquals(card.store, parsedCard.store); + } + + @Test + public void failToParseInvalidUri() + { + try { + importURIHelper.parse(Uri.parse("https://example.com/test")); + assertTrue(false); // Shouldn't get here + } catch(InvalidObjectException _) { + // Desired behaviour + } + } +} diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index 6f9218146..1dd5f0bd9 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -448,10 +448,11 @@ public class LoyaltyCardViewActivityTest final Menu menu = shadowOf(activity).getOptionsMenu(); assertTrue(menu != null); - // The settings and add button should be present - assertEquals(menu.size(), 2); + // The share, settings and add button should be present + assertEquals(menu.size(), 3); 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()); }