Merge branch 'master' of ssh://github.com/brarcher/loyalty-card-locker into feature/pkpass

This commit is contained in:
Sylvia van Os
2019-12-16 16:51:25 +01:00
11 changed files with 216 additions and 49 deletions

View File

@@ -0,0 +1,98 @@
package protect.card_locker;
import android.app.Activity;
import android.content.Intent;
import android.os.Looper;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config;
import static org.junit.Assert.assertEquals;
import static org.robolectric.Shadows.shadowOf;
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 23)
public class BarcodeSelectorActivityTest {
@Test
public void emptyStateTest()
{
ActivityController activityController = Robolectric.buildActivity(BarcodeSelectorActivity.class).create();
activityController.start();
activityController.resume();
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
// No card ID by default
assertEquals(cardId.getText().toString(), "");
// Button should be visible but disabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(false, noBarcodeButton.isEnabled());
}
@Test
public void nonEmptyStateTest() throws InterruptedException
{
ActivityController activityController = Robolectric.buildActivity(BarcodeSelectorActivity.class).create();
activityController.start();
activityController.resume();
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
cardId.setText("abcdefg");
shadowOf(Looper.getMainLooper()).idle();
// Button should be visible and enabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(true, noBarcodeButton.isEnabled());
// Clicking button should create "empty" barcode
activity.findViewById(R.id.noBarcode).performClick();
Intent resultIntent = shadowOf(activity).getResultIntent();
assertEquals("", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT));
assertEquals("abcdefg", resultIntent.getStringExtra(BarcodeSelectorActivity.BARCODE_CONTENTS));
}
@Test
public void nonEmptyToEmptyStateTest() throws InterruptedException
{
ActivityController activityController = Robolectric.buildActivity(BarcodeSelectorActivity.class).create();
activityController.start();
activityController.resume();
Activity activity = (Activity) activityController.get();
final TextView cardId = activity.findViewById(R.id.cardId);
final Button noBarcodeButton = activity.findViewById(R.id.noBarcode);
cardId.setText("abcdefg");
shadowOf(Looper.getMainLooper()).idle();
// Button should be visible and enabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(true, noBarcodeButton.isEnabled());
cardId.setText("");
shadowOf(Looper.getMainLooper()).idle();
// Button should be visible but disabled
assertEquals(View.VISIBLE, noBarcodeButton.getVisibility());
assertEquals(false, noBarcodeButton.isEnabled());
}
}

View File

@@ -370,4 +370,35 @@ public class ImportExportTest
assertEquals(false, result);
assertEquals(0, db.getLoyaltyCardCount());
}
@Test
public void importWithNoBarcodeType() throws IOException
{
String csvText = "";
csvText += DBHelper.LoyaltyCardDbIds.ID + "," +
DBHelper.LoyaltyCardDbIds.STORE + "," +
DBHelper.LoyaltyCardDbIds.NOTE + "," +
DBHelper.LoyaltyCardDbIds.CARD_ID + "," +
DBHelper.LoyaltyCardDbIds.BARCODE_TYPE + "," +
DBHelper.LoyaltyCardDbIds.HEADER_COLOR + "," +
DBHelper.LoyaltyCardDbIds.HEADER_TEXT_COLOR + "\n";
csvText += "1,store,note,12345,,1,1";
ByteArrayInputStream inputStream = new ByteArrayInputStream(csvText.getBytes(StandardCharsets.UTF_8));
InputStreamReader inStream = new InputStreamReader(inputStream);
// Import the CSV data
boolean result = MultiFormatImporter.importData(db, inStream, DataFormat.CSV);
assertEquals(true, result);
assertEquals(1, db.getLoyaltyCardCount());
LoyaltyCard card = db.getLoyaltyCard(1);
assertEquals("store", card.store);
assertEquals("note", card.note);
assertEquals("12345", card.cardId);
assertEquals("", card.barcodeType);
assertEquals(1, (long) card.headerColor);
assertEquals(1, (long) card.headerTextColor);
}
}

View File

@@ -248,10 +248,6 @@ public class LoyaltyCardViewActivityTest
noteField.setText("note");
shadowActivity.clickMenuItem(R.id.action_save);
assertEquals(0, db.getLoyaltyCardCount());
cardIdField.setText("cardId");
shadowActivity.clickMenuItem(R.id.action_save);
assertEquals(0, db.getLoyaltyCardCount());
}
@Test
@@ -288,7 +284,7 @@ public class LoyaltyCardViewActivityTest
checkAllFields(activity, ViewMode.ADD_CARD, "", "", BARCODE_DATA, BARCODE_TYPE);
// Save and check the gift card
// Save and check the loyalty card
saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, BARCODE_TYPE, true);
}
@@ -327,7 +323,7 @@ public class LoyaltyCardViewActivityTest
checkAllFields(activity, ViewMode.ADD_CARD, "", "", BARCODE_DATA, BARCODE_TYPE);
// Cancel the gift card creation
// Cancel the loyalty card creation
assertEquals(false, activity.isFinishing());
shadowOf(activity).clickMenuItem(android.R.id.home);
assertEquals(true, activity.isFinishing());
@@ -530,10 +526,27 @@ public class LoyaltyCardViewActivityTest
activityController.visible();
activityController.resume();
// Save and check the gift card
// Save and check the loyalty card
saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, BARCODE_TYPE, false);
}
@Test
public void startLoyaltyCardWithExplicitNoBarcodeSave() throws IOException, JSONException
{
ActivityController activityController = createActivityWithLoyaltyCard(true);
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, "", Color.BLACK, Color.WHITE, new ExtrasHelper());
activityController.start();
activityController.visible();
activityController.resume();
// Save and check the loyalty card
saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, "", false);
}
@Test
public void startCheckFontSizes() throws JSONException
{