Choose image as card icon (#333)

This commit is contained in:
Sylvia van Os
2021-11-07 20:27:28 +01:00
committed by GitHub
parent da0a221c85
commit af4075b9e2
16 changed files with 316 additions and 152 deletions

View File

@@ -894,6 +894,7 @@ public class ImportExportTest {
HashMap<Integer, List<Group>> loyaltyCardGroups = new HashMap<>();
HashMap<Integer, Bitmap> loyaltyCardFrontImages = new HashMap<>();
HashMap<Integer, Bitmap> loyaltyCardBackImages = new HashMap<>();
HashMap<Integer, Bitmap> loyaltyCardIconImages = new HashMap<>();
// Create card 1
int loyaltyCardId = (int) db.insertLoyaltyCard("Card 1", "Note 1", new Date(1618053234), new BigDecimal("100"), Currency.getInstance("USD"), "1234", "5432", CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), 1, 0, null);
@@ -902,10 +903,12 @@ public class ImportExportTest {
List<Group> groups = Arrays.asList(db.getGroup("One"));
db.setLoyaltyCardGroups(loyaltyCardId, groups);
loyaltyCardGroups.put(loyaltyCardId, groups);
Utils.saveCardImage(activity.getApplicationContext(), launcherBitmap, loyaltyCardId, true);
Utils.saveCardImage(activity.getApplicationContext(), roundLauncherBitmap, loyaltyCardId, false);
Utils.saveCardImage(activity.getApplicationContext(), launcherBitmap, loyaltyCardId, ImageLocationType.front);
Utils.saveCardImage(activity.getApplicationContext(), roundLauncherBitmap, loyaltyCardId, ImageLocationType.back);
Utils.saveCardImage(activity.getApplicationContext(), launcherBitmap, loyaltyCardId, ImageLocationType.icon);
loyaltyCardFrontImages.put(loyaltyCardId, launcherBitmap);
loyaltyCardBackImages.put(loyaltyCardId, roundLauncherBitmap);
loyaltyCardIconImages.put(loyaltyCardId, launcherBitmap);
// Create card 2
loyaltyCardId = (int) db.insertLoyaltyCard("Card 2", "", null, new BigDecimal(0), null, "123456", null, null, 2, 1, null);
@@ -960,8 +963,10 @@ public class ImportExportTest {
Bitmap expectedFrontImage = loyaltyCardFrontImages.get(loyaltyCardID);
Bitmap expectedBackImage = loyaltyCardBackImages.get(loyaltyCardID);
Bitmap actualFrontImage = Utils.retrieveCardImage(activity.getApplicationContext(), Utils.getCardImageFileName(loyaltyCardID, true));
Bitmap actualBackImage = Utils.retrieveCardImage(activity.getApplicationContext(), Utils.getCardImageFileName(loyaltyCardID, false));
Bitmap expectedIconImage = loyaltyCardIconImages.get(loyaltyCardID);
Bitmap actualFrontImage = Utils.retrieveCardImage(activity.getApplicationContext(), Utils.getCardImageFileName(loyaltyCardID, ImageLocationType.front));
Bitmap actualBackImage = Utils.retrieveCardImage(activity.getApplicationContext(), Utils.getCardImageFileName(loyaltyCardID, ImageLocationType.back));
Bitmap actualIconImage = Utils.retrieveCardImage(activity.getApplicationContext(), Utils.getCardImageFileName(loyaltyCardID, ImageLocationType.icon));
if (expectedFrontImage != null) {
assertTrue(expectedFrontImage.sameAs(actualFrontImage));
@@ -974,6 +979,12 @@ public class ImportExportTest {
} else {
assertNull(actualBackImage);
}
if (expectedIconImage != null) {
assertTrue(expectedIconImage.sameAs(actualIconImage));
} else {
assertNull(actualIconImage);
}
}
}
@@ -1041,8 +1052,9 @@ public class ImportExportTest {
assertEquals(BarcodeFormat.QR_CODE, card1.barcodeType.format());
assertEquals(1, (long) card1.headerColor);
assertEquals(0, card1.starStatus);
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card1.id, true));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card1.id, false));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card1.id, ImageLocationType.front));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card1.id, ImageLocationType.back));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card1.id, ImageLocationType.icon));
LoyaltyCard card8 = db.getLoyaltyCard(8);
@@ -1056,8 +1068,9 @@ public class ImportExportTest {
assertEquals(null, card8.barcodeType);
assertEquals(-5317, (long) card8.headerColor);
assertEquals(0, card8.starStatus);
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card8.id, true));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card8.id, false));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card8.id, ImageLocationType.front));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card8.id, ImageLocationType.back));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card8.id, ImageLocationType.icon));
LoyaltyCard card2 = db.getLoyaltyCard(2);
@@ -1071,8 +1084,9 @@ public class ImportExportTest {
assertEquals(null, card2.barcodeType);
assertEquals(-9977996, (long) card2.headerColor);
assertEquals(0, card2.starStatus);
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card2.id, true));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card2.id, false));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card2.id, ImageLocationType.front));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card2.id, ImageLocationType.back));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card2.id, ImageLocationType.icon));
LoyaltyCard card3 = db.getLoyaltyCard(3);
@@ -1086,8 +1100,9 @@ public class ImportExportTest {
assertEquals(null, card3.barcodeType);
assertEquals(-9977996, (long) card3.headerColor);
assertEquals(0, card3.starStatus);
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card3.id, true));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card3.id, false));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card3.id, ImageLocationType.front));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card3.id, ImageLocationType.back));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card3.id, ImageLocationType.icon));
LoyaltyCard card4 = db.getLoyaltyCard(4);
@@ -1101,8 +1116,9 @@ public class ImportExportTest {
assertEquals(null, card4.barcodeType);
assertEquals(-10902850, (long) card4.headerColor);
assertEquals(1, card4.starStatus);
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card4.id, true));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card4.id, false));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card4.id, ImageLocationType.front));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card4.id, ImageLocationType.back));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card4.id, ImageLocationType.icon));
LoyaltyCard card5 = db.getLoyaltyCard(5);
@@ -1116,8 +1132,9 @@ public class ImportExportTest {
assertEquals(BarcodeFormat.CODE_128, card5.barcodeType.format());
assertEquals(-10902850, (long) card5.headerColor);
assertEquals(0, card5.starStatus);
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card5.id, true));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card5.id, false));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card5.id, ImageLocationType.front));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card5.id, ImageLocationType.back));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card5.id, ImageLocationType.icon));
LoyaltyCard card6 = db.getLoyaltyCard(6);
@@ -1131,8 +1148,9 @@ public class ImportExportTest {
assertEquals(BarcodeFormat.AZTEC, card6.barcodeType.format());
assertEquals(null, card6.headerColor);
assertEquals(0, card6.starStatus);
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card6.id, true));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card6.id, false));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card6.id, ImageLocationType.front));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card6.id, ImageLocationType.back));
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card6.id, ImageLocationType.icon));
TestHelpers.getEmptyDb(activity);
}
@@ -1212,8 +1230,9 @@ public class ImportExportTest {
assertEquals(BarcodeFormat.EAN_13, card.barcodeType.format());
assertEquals(0, card.starStatus);
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 1, true));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 1, false));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 1, ImageLocationType.front));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 1, ImageLocationType.back));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 1, ImageLocationType.icon));
card = db.getLoyaltyCard(2);
@@ -1227,8 +1246,9 @@ public class ImportExportTest {
assertEquals(BarcodeFormat.EAN_13, card.barcodeType.format());
assertEquals(0, card.starStatus);
assertTrue(BitmapFactory.decodeStream(getClass().getResourceAsStream("stocard-front.jpg")).sameAs(Utils.retrieveCardImage(activity.getApplicationContext(), 2, true)));
assertTrue(BitmapFactory.decodeStream(getClass().getResourceAsStream("stocard-back.jpg")).sameAs(Utils.retrieveCardImage(activity.getApplicationContext(), 2, false)));
assertTrue(BitmapFactory.decodeStream(getClass().getResourceAsStream("stocard-front.jpg")).sameAs(Utils.retrieveCardImage(activity.getApplicationContext(), 2, ImageLocationType.front)));
assertTrue(BitmapFactory.decodeStream(getClass().getResourceAsStream("stocard-back.jpg")).sameAs(Utils.retrieveCardImage(activity.getApplicationContext(), 2, ImageLocationType.back)));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 2, ImageLocationType.icon));
card = db.getLoyaltyCard(3);
@@ -1243,8 +1263,9 @@ public class ImportExportTest {
assertEquals(BarcodeFormat.RSS_EXPANDED, card.barcodeType.format());
assertEquals(0, card.starStatus);
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 3, true));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 3, false));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 3, ImageLocationType.front));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 3, ImageLocationType.back));
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 3, ImageLocationType.icon));
TestHelpers.getEmptyDb(activity);
}

View File

@@ -359,7 +359,7 @@ public class LoyaltyCardViewActivityTest
activityController = Robolectric.buildActivity(LoyaltyCardEditActivity.class).create();
}
Activity activity = (Activity) activityController.get();
LoyaltyCardEditActivity activity = (LoyaltyCardEditActivity) activityController.get();
final Context context = activity.getApplicationContext();
DBHelper db = TestHelpers.getEmptyDb(activity);
@@ -401,8 +401,8 @@ public class LoyaltyCardViewActivityTest
cardIdField.setText("12345678");
barcodeField.setText("87654321");
barcodeTypeField.setText(CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE).prettyName());
LoyaltyCardEditActivity.setCardImage(frontImageView, frontBitmap);
LoyaltyCardEditActivity.setCardImage(backImageView, backBitmap);
activity.setCardImage(frontImageView, frontBitmap, true);
activity.setCardImage(backImageView, backBitmap, true);
shadowOf(getMainLooper()).idle();
@@ -1412,7 +1412,7 @@ public class LoyaltyCardViewActivityTest
{
Date date = new Date();
Uri importUri = Uri.parse("https://thelastproject.github.io/Catima/share?store=Example%20Store&note=&expiry=" + date.getTime() + "&balance=10&balancetype=USD&cardid=123456&barcodetype=AZTEC&headercolor=-416706&headertextcolor=-1");
Uri importUri = Uri.parse("https://catima.app/share#store%3DExample%2BStore%26note%3D%26expiry%3D" + date.getTime() + "%26balance%3D10.00%26balancetype%3DUSD%26cardid%3D123456%26barcodetype%3DAZTEC%26headercolor%3D-416706");
Intent intent = new Intent();
intent.setData(importUri);
@@ -1433,7 +1433,7 @@ public class LoyaltyCardViewActivityTest
}
@Test
public void importCardOldURL()
public void importCardOldFormat()
{
Uri importUri = Uri.parse("https://brarcher.github.io/loyalty-card-locker/share?store=Example%20Store&note=&cardid=123456&barcodetype=AZTEC&headercolor=-416706&headertextcolor=-1");

View File

@@ -16,12 +16,11 @@ public class TestHelpers {
while (!cursor.isAfterLast()) {
int cardID = cursor.getColumnIndex(DBHelper.LoyaltyCardDbIds.ID);
try {
Utils.saveCardImage(activity.getApplicationContext(), null, cardID, true);
} catch (FileNotFoundException ignored) {}
try {
Utils.saveCardImage(activity.getApplicationContext(), null, cardID, false);
} catch (FileNotFoundException ignored) {}
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
try {
Utils.saveCardImage(activity.getApplicationContext(), null, cardID, imageLocationType);
} catch (FileNotFoundException ignored) {}
}
cursor.moveToNext();
}