diff --git a/app/src/main/java/protect/card_locker/ImportURIHelper.java b/app/src/main/java/protect/card_locker/ImportURIHelper.java index 269e91a2e..3d2f8e481 100644 --- a/app/src/main/java/protect/card_locker/ImportURIHelper.java +++ b/app/src/main/java/protect/card_locker/ImportURIHelper.java @@ -146,7 +146,7 @@ public class ImportURIHelper { text.append(loyaltyCard.store + ": " + toUri(loyaltyCard)); if (i < (loyaltyCardCount - 1)) { - text.append("\n"); + text.append("\n\n"); } } diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index 2c1dbde17..617e9a134 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -40,14 +40,13 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter 0) { // We want the cardList to be visible regardless of the filtered match count @@ -359,7 +364,7 @@ public class MainActivity extends AppCompatActivity implements LoyaltyCardCursor // the keyboard mCardList.setVisibility(View.VISIBLE); helpText.setVisibility(View.GONE); - if(mDB.getLoyaltyCardCount(filterText) > 0) + if(mAdapter.getItemCount() > 0) { noMatchingCardsText.setVisibility(View.GONE); } @@ -375,11 +380,6 @@ public class MainActivity extends AppCompatActivity implements LoyaltyCardCursor noMatchingCardsText.setVisibility(View.GONE); } - mAdapter = new LoyaltyCardCursorAdapter(this, cardCursor, this); - mCardList.setAdapter(mAdapter); - - registerForContextMenu(mCardList); - if (mCurrentActionMode != null) { mCurrentActionMode.finish(); } diff --git a/app/src/main/res/layout/loyalty_card_layout.xml b/app/src/main/res/layout/loyalty_card_layout.xml index c0f98980b..ff4185b8b 100644 --- a/app/src/main/res/layout/loyalty_card_layout.xml +++ b/app/src/main/res/layout/loyalty_card_layout.xml @@ -44,7 +44,7 @@ android:textSize="@dimen/noteTextSize" /> groupsToGroupNames(List groups) @@ -445,7 +431,7 @@ public class ImportExportTest assertTrue(result); outStream.close(); - clearDatabase(); + TestHelpers.getEmptyDb(activity); ByteArrayInputStream inData = new ByteArrayInputStream(outData.toByteArray()); @@ -471,7 +457,7 @@ public class ImportExportTest assertEquals(emptyGroup, db.getLoyaltyCardGroups(10)); // Clear the database for the next format under test - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -500,7 +486,7 @@ public class ImportExportTest checkLoyaltyCards(); // Clear the database for the next format under test - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -519,7 +505,7 @@ public class ImportExportTest boolean result = MultiFormatExporter.exportData(db, outStream, DataFormat.Catima); assertTrue(result); - clearDatabase(); + TestHelpers.getEmptyDb(activity); // commons-csv would throw a RuntimeException if an entry was quotes but had // content after. For example: @@ -535,7 +521,7 @@ public class ImportExportTest assertEquals(0, db.getLoyaltyCardCount()); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } } @@ -574,7 +560,7 @@ public class ImportExportTest assertNotNull(listener.success); assertEquals(true, listener.success); - clearDatabase(); + TestHelpers.getEmptyDb(activity); // Import everything back from the default location @@ -597,7 +583,7 @@ public class ImportExportTest checkLoyaltyCards(); // Clear the database for the next format under test - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -633,7 +619,7 @@ public class ImportExportTest assertNull(card.headerColor); assertEquals(0, card.starStatus); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -671,7 +657,7 @@ public class ImportExportTest assertNull(card.headerColor); assertEquals(0, card.starStatus); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -696,7 +682,7 @@ public class ImportExportTest assertEquals(false, result); assertEquals(0, db.getLoyaltyCardCount()); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -734,7 +720,7 @@ public class ImportExportTest assertEquals(1, (long) card.headerColor); assertEquals(0, card.starStatus); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -772,7 +758,7 @@ public class ImportExportTest assertEquals(1, (long) card.headerColor); assertEquals(1, card.starStatus); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -810,7 +796,7 @@ public class ImportExportTest assertEquals(1, (long) card.headerColor); assertEquals(0, card.starStatus); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -867,7 +853,7 @@ public class ImportExportTest assertEquals(1, (long) card.headerColor); assertEquals(0, card.starStatus); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -1024,7 +1010,7 @@ public class ImportExportTest assertEquals(null, card6.headerColor); assertEquals(0, card6.starStatus); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } @Test @@ -1085,6 +1071,6 @@ public class ImportExportTest assertEquals(Color.rgb(128, 0, 128), (long) card.headerColor); assertEquals(0, card.starStatus); - clearDatabase(); + TestHelpers.getEmptyDb(activity); } } diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java index 03a259a70..7957f89ce 100644 --- a/app/src/test/java/protect/card_locker/ImportURITest.java +++ b/app/src/test/java/protect/card_locker/ImportURITest.java @@ -33,7 +33,7 @@ public class ImportURITest { { Activity activity = Robolectric.setupActivity(MainActivity.class); importURIHelper = new ImportURIHelper(activity); - db = new DBHelper(activity); + db = TestHelpers.getEmptyDb(activity); } @Test diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java index 6729c43d6..9923335b6 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; import android.graphics.Color; import android.view.View; import android.widget.ImageView; @@ -17,6 +18,7 @@ import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowLog; import java.math.BigDecimal; import java.text.DateFormat; @@ -24,10 +26,14 @@ import java.util.Currency; import java.util.Date; import androidx.preference.PreferenceManager; -import androidx.test.core.app.ApplicationProvider; +import androidx.recyclerview.widget.RecyclerView; import protect.card_locker.preferences.Settings; +import static android.os.Looper.getMainLooper; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; +import static org.robolectric.Shadows.shadowOf; @RunWith(RobolectricTestRunner.class) @Config(sdk = 23) @@ -40,8 +46,10 @@ public class LoyaltyCardCursorAdapterTest @Before public void setUp() { + ShadowLog.stream = System.out; + activity = Robolectric.setupActivity(MainActivity.class); - db = new DBHelper(activity); + db = TestHelpers.getEmptyDb(activity); settings = PreferenceManager.getDefaultSharedPreferences(activity); } @@ -54,12 +62,12 @@ public class LoyaltyCardCursorAdapterTest private View createView(Cursor cursor) { - LoyaltyCardCursorAdapter adapter = new LoyaltyCardCursorAdapter(activity.getApplicationContext(), cursor); + LoyaltyCardCursorAdapter adapter = new LoyaltyCardCursorAdapter(activity.getApplicationContext(), cursor, (MainActivity) activity); - View view = adapter.newView(activity.getApplicationContext(), cursor, null); - adapter.bindView(view, activity.getApplicationContext(), cursor); + RecyclerView.ViewHolder viewHolder = adapter.createViewHolder(activity.findViewById(R.id.list), 0); + adapter.bindViewHolder((LoyaltyCardCursorAdapter.LoyaltyCardListItemViewHolder) viewHolder, cursor.getPosition()); - return view; + return viewHolder.itemView; } private void checkView(final View view, final String store, final String note, final String expiry, final String balance, boolean checkFontSizes) @@ -148,7 +156,7 @@ public class LoyaltyCardCursorAdapterTest @Test public void TestCursorAdapterFontSizes() { - final Context context = ApplicationProvider.getApplicationContext(); + final Context context = activity.getApplicationContext(); Date expiryDate = new Date(); String dateString = context.getString(R.string.expiryStateSentence, DateFormat.getDateInstance(DateFormat.LONG).format(expiryDate)); @@ -173,22 +181,39 @@ public class LoyaltyCardCursorAdapterTest @Test public void TestCursorAdapterStarring() { - db.insertLoyaltyCard("storeA", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 0); - db.insertLoyaltyCard("storeB", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 1); - db.insertLoyaltyCard("storeC", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 1); + assertNotEquals(-1, db.insertLoyaltyCard("storeA", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 0)); + assertNotEquals(-1, db.insertLoyaltyCard("storeB", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 1)); + assertNotEquals(-1, db.insertLoyaltyCard("storeC", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 1)); + + assertEquals(3, db.getLoyaltyCardCount()); Cursor cursor = db.getLoyaltyCardCursor(); + assertEquals(3, cursor.getCount()); + cursor.moveToFirst(); + System.out.println(LoyaltyCard.toLoyaltyCard(cursor).store); + cursor.moveToNext(); + System.out.println(LoyaltyCard.toLoyaltyCard(cursor).store); + cursor.moveToNext(); + System.out.println(LoyaltyCard.toLoyaltyCard(cursor).store); + + assertTrue(cursor.moveToFirst()); + LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); + assertEquals("storeB", loyaltyCard.store); View view = createView(cursor); ImageView star = view.findViewById(R.id.star); assertEquals(View.VISIBLE, star.getVisibility()); - cursor.moveToNext(); + assertTrue(cursor.moveToNext()); + loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); + assertEquals("storeC", loyaltyCard.store); view = createView(cursor); star = view.findViewById(R.id.star); assertEquals(View.VISIBLE, star.getVisibility()); - cursor.moveToNext(); + assertTrue(cursor.moveToNext()); + loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); + assertEquals("storeA", loyaltyCard.store); view = createView(cursor); star = view.findViewById(R.id.star); assertEquals(View.GONE, star.getVisibility()); diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index 30ecf35f3..ff5aa2193 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -50,7 +50,6 @@ import java.util.Date; import androidx.core.widget.TextViewCompat; import androidx.preference.PreferenceManager; -import androidx.test.core.app.ApplicationProvider; import static android.os.Looper.getMainLooper; import static org.junit.Assert.assertEquals; @@ -330,7 +329,7 @@ public class LoyaltyCardViewActivityTest activityController.resume(); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); + final Context context = activity.getApplicationContext(); checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never) , "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId),""); } @@ -345,7 +344,7 @@ public class LoyaltyCardViewActivityTest Activity activity = (Activity)activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); assertEquals(0, db.getLoyaltyCardCount()); final EditText storeField = activity.findViewById(R.id.storeNameEdit); @@ -390,7 +389,7 @@ public class LoyaltyCardViewActivityTest activityController.resume(); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); + final Context context = activity.getApplicationContext(); checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId),""); @@ -414,7 +413,7 @@ public class LoyaltyCardViewActivityTest activityController.resume(); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); + final Context context = activity.getApplicationContext(); checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId), ""); @@ -433,7 +432,7 @@ public class LoyaltyCardViewActivityTest activityController.resume(); LoyaltyCardEditActivity activity = (LoyaltyCardEditActivity) activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); + final Context context = activity.getApplicationContext(); checkAllFields(activity, ViewMode.ADD_CARD, "", "", context.getString(R.string.never), "0", context.getString(R.string.points), "", context.getString(R.string.sameAsCardId),""); @@ -487,8 +486,8 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0); @@ -506,8 +505,8 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(false); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0); @@ -525,8 +524,8 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0); @@ -549,8 +548,8 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(true); LoyaltyCardEditActivity activity = (LoyaltyCardEditActivity) activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0); @@ -587,8 +586,8 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0); @@ -620,8 +619,8 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", new Date(), new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0); @@ -645,8 +644,8 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0); @@ -696,8 +695,8 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("10.00"), Currency.getInstance("USD"), EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0); @@ -737,7 +736,7 @@ public class LoyaltyCardViewActivityTest { ActivityController activityController = createActivityWithLoyaltyCard(false); Activity activity = (Activity)activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0); @@ -786,7 +785,7 @@ public class LoyaltyCardViewActivityTest ActivityController activityController = createActivityWithLoyaltyCard(false); Activity activity = (Activity)activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0); activityController.start(); @@ -806,7 +805,7 @@ public class LoyaltyCardViewActivityTest ActivityController activityController = createActivityWithLoyaltyCard(false); Activity activity = (Activity)activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0); activityController.start(); @@ -825,7 +824,7 @@ public class LoyaltyCardViewActivityTest ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0); activityController.start(); @@ -843,7 +842,7 @@ public class LoyaltyCardViewActivityTest ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, null, Color.BLACK, 0); activityController.start(); @@ -860,8 +859,8 @@ public class LoyaltyCardViewActivityTest public void removeBarcodeFromLoyaltyCard() throws IOException, ParseException { ActivityController activityController = createActivityWithLoyaltyCard(true); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); - DBHelper db = new DBHelper(activity); + final Context context = activity.getApplicationContext(); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0); @@ -891,7 +890,7 @@ public class LoyaltyCardViewActivityTest ActivityController activityController = createActivityWithLoyaltyCard(false); Activity activity = (Activity)activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0); final int LARGE_FONT_SIZE = 40; @@ -966,7 +965,7 @@ public class LoyaltyCardViewActivityTest ActivityController activityController = createActivityWithLoyaltyCard(false); Activity activity = (Activity) activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK,0); activityController.start(); activityController.visible(); @@ -1001,7 +1000,7 @@ public class LoyaltyCardViewActivityTest ActivityController activityController = createActivityWithLoyaltyCard(false); Activity activity = (Activity)activityController.get(); - DBHelper db = new DBHelper(activity); + DBHelper db = TestHelpers.getEmptyDb(activity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0); activityController.start(); @@ -1112,7 +1111,7 @@ public class LoyaltyCardViewActivityTest activityController.resume(); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); + final Context context = activity.getApplicationContext(); shadowOf(getMainLooper()).idle(); @@ -1135,7 +1134,7 @@ public class LoyaltyCardViewActivityTest activityController.resume(); Activity activity = (Activity)activityController.get(); - final Context context = ApplicationProvider.getApplicationContext(); + final Context context = activity.getApplicationContext(); checkAllFields(activity, ViewMode.ADD_CARD, "Example Store", "", context.getString(R.string.never), "0", context.getString(R.string.points), "123456", null, "AZTEC"); assertEquals(-416706, ((ColorDrawable) activity.findViewById(R.id.thumbnail).getBackground()).getColor()); diff --git a/app/src/test/java/protect/card_locker/MainActivityTest.java b/app/src/test/java/protect/card_locker/MainActivityTest.java index 62bfdd000..09f9b4a87 100644 --- a/app/src/test/java/protect/card_locker/MainActivityTest.java +++ b/app/src/test/java/protect/card_locker/MainActivityTest.java @@ -20,25 +20,19 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.android.controller.ActivityController; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; +import org.w3c.dom.Text; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import androidx.recyclerview.widget.RecyclerView; + +import static android.os.Looper.getMainLooper; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.robolectric.Shadows.shadowOf; -<<<<<<>>>>>>cdd9472(WIP Issue #14(and #65)) - <<<<<<>>>>>>cdd9472(WIP Issue #14(and #65)) - <<<<<<>>>>>>cdd9472(WIP Issue #14(and #65)) - @RunWith(RobolectricTestRunner.class) @Config(sdk = 23) public class MainActivityTest @@ -56,7 +50,7 @@ public class MainActivityTest TextView noMatchingCardsText = activity.findViewById(R.id.noMatchingCardsText); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); - ListView list = activity.findViewById(R.id.list); + RecyclerView list = activity.findViewById(R.id.list); assertEquals(View.GONE, list.getVisibility()); } @@ -99,11 +93,11 @@ public class MainActivityTest TextView helpText = mainActivity.findViewById(R.id.helpText); TextView noMatchingCardsText = mainActivity.findViewById(R.id.noMatchingCardsText); - ListView list = mainActivity.findViewById(R.id.list); + RecyclerView list = mainActivity.findViewById(R.id.list); - assertEquals(0, list.getCount()); + assertEquals(0, list.getAdapter().getItemCount()); - DBHelper db = new DBHelper(mainActivity); + DBHelper db = TestHelpers.getEmptyDb(mainActivity); db.insertLoyaltyCard("store", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 0); assertEquals(View.VISIBLE, helpText.getVisibility()); @@ -117,9 +111,7 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getAdapter().getCount()); - Cursor cursor = (Cursor)list.getAdapter().getItem(0); - assertNotNull(cursor); + assertEquals(1, list.getAdapter().getItemCount()); db.close(); } @@ -132,14 +124,15 @@ public class MainActivityTest Activity mainActivity = (Activity)activityController.get(); activityController.start(); activityController.resume(); + activityController.visible(); TextView helpText = mainActivity.findViewById(R.id.helpText); TextView noMatchingCardsText = mainActivity.findViewById(R.id.noMatchingCardsText); - ListView list = mainActivity.findViewById(R.id.list); + RecyclerView list = mainActivity.findViewById(R.id.list); - assertEquals(0, list.getCount()); + assertEquals(0, list.getAdapter().getItemCount()); - DBHelper db = new DBHelper(mainActivity); + DBHelper db = TestHelpers.getEmptyDb(mainActivity); db.insertLoyaltyCard("storeB", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 0); db.insertLoyaltyCard("storeA", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 0); db.insertLoyaltyCard("storeD", "note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 1); @@ -151,27 +144,17 @@ public class MainActivityTest activityController.pause(); activityController.resume(); + activityController.visible(); assertEquals(View.GONE, helpText.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(4, list.getAdapter().getCount()); - Cursor cursor = (Cursor)list.getAdapter().getItem(0); - assertNotNull(cursor); - assertEquals("storeC",cursor.getString(cursor.getColumnIndex("store"))); - - cursor = (Cursor)list.getAdapter().getItem(1); - assertNotNull(cursor); - assertEquals("storeD",cursor.getString(cursor.getColumnIndex("store"))); - - cursor = (Cursor)list.getAdapter().getItem(2); - assertNotNull(cursor); - assertEquals("storeA",cursor.getString(cursor.getColumnIndex("store"))); - - cursor = (Cursor)list.getAdapter().getItem(3); - assertNotNull(cursor); - assertEquals("storeB",cursor.getString(cursor.getColumnIndex("store"))); + assertEquals(4, list.getAdapter().getItemCount()); + assertEquals("storeC", ((TextView) list.findViewHolderForAdapterPosition(0).itemView.findViewById(R.id.store)).getText()); + assertEquals("storeD", ((TextView) list.findViewHolderForAdapterPosition(1).itemView.findViewById(R.id.store)).getText()); + assertEquals("storeA", ((TextView) list.findViewHolderForAdapterPosition(2).itemView.findViewById(R.id.store)).getText()); + assertEquals("storeB", ((TextView) list.findViewHolderForAdapterPosition(3).itemView.findViewById(R.id.store)).getText()); db.close(); } @@ -185,7 +168,7 @@ public class MainActivityTest activityController.start(); activityController.resume(); - DBHelper db = new DBHelper(mainActivity); + DBHelper db = TestHelpers.getEmptyDb(mainActivity); TabLayout groupTabs = mainActivity.findViewById(R.id.groups); @@ -237,10 +220,10 @@ public class MainActivityTest TextView helpText = mainActivity.findViewById(R.id.helpText); TextView noMatchingCardsText = mainActivity.findViewById(R.id.noMatchingCardsText); - ListView list = mainActivity.findViewById(R.id.list); + RecyclerView list = mainActivity.findViewById(R.id.list); TabLayout groupTabs = mainActivity.findViewById(R.id.groups); - DBHelper db = new DBHelper(mainActivity); + DBHelper db = TestHelpers.getEmptyDb(mainActivity); db.insertLoyaltyCard("The First Store", "Initial note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 0); db.insertLoyaltyCard("The Second Store", "Secondary note", null, new BigDecimal("0"), null, "cardId", null, BarcodeFormat.UPC_A, Color.BLACK, 0); @@ -256,7 +239,7 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(2, list.getCount()); + assertEquals(2, list.getAdapter().getItemCount()); mainActivity.mFilter = "store"; @@ -267,9 +250,8 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(2, list.getCount()); + assertEquals(2, list.getAdapter().getItemCount()); -<<<<<<< HEAD // Switch to Group one groupTabs.selectTab(groupTabs.getTabAt(1)); @@ -280,7 +262,7 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); @@ -289,12 +271,9 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(2, list.getCount()); + assertEquals(2, list.getAdapter().getItemCount()); - mainActivity.filter = "first"; -======= mainActivity.mFilter = "first"; ->>>>>>> cdd9472 (WIP Issue #14 (and #65)) activityController.pause(); activityController.resume(); @@ -303,9 +282,8 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); -<<<<<<< HEAD // Switch to Group one groupTabs.selectTab(groupTabs.getTabAt(1)); @@ -316,7 +294,7 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); @@ -325,12 +303,9 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); - mainActivity.filter = "initial"; -======= mainActivity.mFilter = "initial"; ->>>>>>> cdd9472 (WIP Issue #14 (and #65)) activityController.pause(); activityController.resume(); @@ -339,9 +314,8 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); -<<<<<<< HEAD // Switch to Group one groupTabs.selectTab(groupTabs.getTabAt(1)); @@ -352,7 +326,7 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); @@ -361,12 +335,9 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); - mainActivity.filter = "second"; -======= mainActivity.mFilter = "second"; ->>>>>>> cdd9472 (WIP Issue #14 (and #65)) activityController.pause(); activityController.resume(); @@ -375,20 +346,21 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); -<<<<<<< HEAD // Switch to Group one groupTabs.selectTab(groupTabs.getTabAt(1)); activityController.pause(); activityController.resume(); + shadowOf(getMainLooper()).idle(); + assertEquals(View.GONE, helpText.getVisibility()); assertEquals(View.VISIBLE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(0, list.getCount()); + assertEquals(0, list.getAdapter().getItemCount()); // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); @@ -397,34 +369,34 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); - mainActivity.filter = "company"; -======= mainActivity.mFilter = "company"; ->>>>>>> cdd9472 (WIP Issue #14 (and #65)) activityController.pause(); activityController.resume(); + shadowOf(getMainLooper()).idle(); + assertEquals(View.GONE, helpText.getVisibility()); assertEquals(View.VISIBLE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(0, list.getCount()); + assertEquals(0, list.getAdapter().getItemCount()); -<<<<<<< HEAD // Switch to Group one groupTabs.selectTab(groupTabs.getTabAt(1)); activityController.pause(); activityController.resume(); + shadowOf(getMainLooper()).idle(); + assertEquals(View.GONE, helpText.getVisibility()); assertEquals(View.VISIBLE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(0, list.getCount()); + assertEquals(0, list.getAdapter().getItemCount()); // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); @@ -433,21 +405,20 @@ public class MainActivityTest assertEquals(View.VISIBLE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(0, list.getCount()); + assertEquals(0, list.getAdapter().getItemCount()); - mainActivity.filter = ""; -======= mainActivity.mFilter = ""; ->>>>>>> cdd9472 (WIP Issue #14 (and #65)) activityController.pause(); activityController.resume(); + shadowOf(getMainLooper()).idle(); + assertEquals(View.GONE, helpText.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(2, list.getCount()); + assertEquals(2, list.getAdapter().getItemCount()); // Switch to Group one groupTabs.selectTab(groupTabs.getTabAt(1)); @@ -455,11 +426,13 @@ public class MainActivityTest activityController.pause(); activityController.resume(); + shadowOf(getMainLooper()).idle(); + assertEquals(View.GONE, helpText.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(1, list.getCount()); + assertEquals(1, list.getAdapter().getItemCount()); // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); @@ -468,7 +441,7 @@ public class MainActivityTest assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); - assertEquals(2, list.getCount()); + assertEquals(2, list.getAdapter().getItemCount()); db.close(); } diff --git a/app/src/test/java/protect/card_locker/TestHelpers.java b/app/src/test/java/protect/card_locker/TestHelpers.java new file mode 100644 index 000000000..cccca7bc6 --- /dev/null +++ b/app/src/test/java/protect/card_locker/TestHelpers.java @@ -0,0 +1,18 @@ +package protect.card_locker; + +import android.app.Activity; +import android.database.sqlite.SQLiteDatabase; + +public class TestHelpers { + static public DBHelper getEmptyDb(Activity activity) { + DBHelper db = new DBHelper(activity); + // Make sure DB is empty + SQLiteDatabase database = db.getWritableDatabase(); + database.execSQL("delete from " + DBHelper.LoyaltyCardDbIds.TABLE); + database.execSQL("delete from " + DBHelper.LoyaltyCardDbGroups.TABLE); + database.execSQL("delete from " + DBHelper.LoyaltyCardDbIdsGroups.TABLE); + database.close(); + + return db; + } +} diff --git a/app/src/test/java/protect/card_locker/UtilsTest.java b/app/src/test/java/protect/card_locker/UtilsTest.java index e12ab9133..53e4d76ca 100644 --- a/app/src/test/java/protect/card_locker/UtilsTest.java +++ b/app/src/test/java/protect/card_locker/UtilsTest.java @@ -1,6 +1,5 @@ package protect.card_locker; - import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner;