diff --git a/app/src/main/java/protect/card_locker/ImportURIHelper.java b/app/src/main/java/protect/card_locker/ImportURIHelper.java index 18d76903f..d3133bcb3 100644 --- a/app/src/main/java/protect/card_locker/ImportURIHelper.java +++ b/app/src/main/java/protect/card_locker/ImportURIHelper.java @@ -3,9 +3,7 @@ package protect.card_locker; import android.content.Context; import android.content.Intent; import android.net.Uri; - import java.io.InvalidObjectException; -import java.security.InvalidParameterException; public class ImportURIHelper { private static final String STORE = DBHelper.LoyaltyCardDbIds.STORE; @@ -15,10 +13,10 @@ public class ImportURIHelper { private static final String HEADER_COLOR = DBHelper.LoyaltyCardDbIds.HEADER_COLOR; private static final String HEADER_TEXT_COLOR = DBHelper.LoyaltyCardDbIds.HEADER_TEXT_COLOR; - private Context context; - private String host; - private String path; - private String shareText; + private final Context context; + private final String host; + private final String path; + private final String shareText; public ImportURIHelper(Context context) { this.context = context; @@ -31,7 +29,7 @@ public class ImportURIHelper { return uri.getHost().equals(host) && uri.getPath().equals(path); } - public LoyaltyCard parse(Uri uri) throws InvalidObjectException, InvalidParameterException { + public LoyaltyCard parse(Uri uri) throws InvalidObjectException { if(!isImportUri(uri)) { throw new InvalidObjectException("Not an import URI"); } @@ -45,12 +43,12 @@ public class ImportURIHelper { Integer headerTextColor = Integer.parseInt(uri.getQueryParameter(HEADER_TEXT_COLOR)); return new LoyaltyCard(-1, store, note, cardId, barcodeType, headerColor, headerTextColor); } catch (NullPointerException | NumberFormatException ex) { - ex.printStackTrace(); throw new InvalidObjectException("Not a valid import URI"); } } - public Uri toUri(LoyaltyCard loyaltyCard) { + // Protected for usage in tests + protected Uri toUri(LoyaltyCard loyaltyCard) { Uri.Builder uriBuilder = new Uri.Builder(); uriBuilder.scheme("https"); uriBuilder.authority(host); @@ -65,7 +63,7 @@ public class ImportURIHelper { return uriBuilder.build(); } - public void startShareIntent(Uri uri) { + private void startShareIntent(Uri uri) { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, shareText + "\n" + uri.toString()); @@ -74,4 +72,8 @@ public class ImportURIHelper { Intent shareIntent = Intent.createChooser(sendIntent, null); context.startActivity(shareIntent); } + + public void startShareIntent(LoyaltyCard loyaltyCard) { + startShareIntent(toUri(loyaltyCard)); + } } diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java index 42f28ebe1..c78f95605 100644 --- a/app/src/test/java/protect/card_locker/ImportURITest.java +++ b/app/src/test/java/protect/card_locker/ImportURITest.java @@ -3,24 +3,17 @@ 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; +import static protect.card_locker.DBHelper.LoyaltyCardDbIds; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = 23) @@ -40,7 +33,7 @@ public class ImportURITest { public void ensureNoDataLoss() throws InvalidObjectException { // Generate card - db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), BARCODE_TYPE, Color.BLACK, Color.WHITE); + db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, Color.BLACK, Color.WHITE); // Get card LoyaltyCard card = db.getLoyaltyCard(1);