mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2025-12-30 02:27:54 -05:00
187 lines
6.6 KiB
Java
187 lines
6.6 KiB
Java
package protect.card_locker;
|
|
|
|
import android.app.Activity;
|
|
import android.content.ContentValues;
|
|
import android.database.Cursor;
|
|
import android.database.sqlite.SQLiteDatabase;
|
|
|
|
import com.google.zxing.BarcodeFormat;
|
|
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
import org.robolectric.Robolectric;
|
|
import org.robolectric.RobolectricGradleTestRunner;
|
|
import org.robolectric.annotation.Config;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertNotNull;
|
|
import static org.junit.Assert.assertNull;
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
@RunWith(RobolectricGradleTestRunner.class)
|
|
@Config(constants = BuildConfig.class, sdk = 17)
|
|
public class DatabaseTest
|
|
{
|
|
private DBHelper db;
|
|
|
|
@Before
|
|
public void setUp()
|
|
{
|
|
Activity activity = Robolectric.setupActivity(MainActivity.class);
|
|
db = new DBHelper(activity);
|
|
}
|
|
|
|
@Test
|
|
public void addRemoveOneGiftCard()
|
|
{
|
|
assertEquals(0, db.getLoyaltyCardCount());
|
|
boolean result = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString());
|
|
assertTrue(result);
|
|
assertEquals(1, db.getLoyaltyCardCount());
|
|
|
|
LoyaltyCard loyaltyCard = db.getLoyaltyCard(1);
|
|
assertNotNull(loyaltyCard);
|
|
assertEquals("store", loyaltyCard.store);
|
|
assertEquals("note", loyaltyCard.note);
|
|
assertEquals("cardId", loyaltyCard.cardId);
|
|
assertEquals(BarcodeFormat.UPC_A.toString(), loyaltyCard.barcodeType);
|
|
|
|
result = db.deleteLoyaltyCard(1);
|
|
assertTrue(result);
|
|
assertEquals(0, db.getLoyaltyCardCount());
|
|
assertNull(db.getLoyaltyCard(1));
|
|
}
|
|
|
|
@Test
|
|
public void updateGiftCard()
|
|
{
|
|
boolean result = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString());
|
|
assertTrue(result);
|
|
assertEquals(1, db.getLoyaltyCardCount());
|
|
|
|
result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1", BarcodeFormat.AZTEC.toString());
|
|
assertTrue(result);
|
|
assertEquals(1, db.getLoyaltyCardCount());
|
|
|
|
LoyaltyCard loyaltyCard = db.getLoyaltyCard(1);
|
|
assertNotNull(loyaltyCard);
|
|
assertEquals("store1", loyaltyCard.store);
|
|
assertEquals("note1", loyaltyCard.note);
|
|
assertEquals("cardId1", loyaltyCard.cardId);
|
|
assertEquals(BarcodeFormat.AZTEC.toString(), loyaltyCard.barcodeType);
|
|
}
|
|
|
|
@Test
|
|
public void updateMissingGiftCard()
|
|
{
|
|
assertEquals(0, db.getLoyaltyCardCount());
|
|
|
|
boolean result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1",
|
|
BarcodeFormat.UPC_A.toString());
|
|
assertEquals(false, result);
|
|
assertEquals(0, db.getLoyaltyCardCount());
|
|
}
|
|
|
|
@Test
|
|
public void emptyGiftCardValues()
|
|
{
|
|
boolean result = db.insertLoyaltyCard("", "", "", "");
|
|
assertTrue(result);
|
|
assertEquals(1, db.getLoyaltyCardCount());
|
|
|
|
LoyaltyCard loyaltyCard = db.getLoyaltyCard(1);
|
|
assertNotNull(loyaltyCard);
|
|
assertEquals("", loyaltyCard.store);
|
|
assertEquals("", loyaltyCard.note);
|
|
assertEquals("", loyaltyCard.cardId);
|
|
assertEquals("", loyaltyCard.barcodeType);
|
|
}
|
|
|
|
@Test
|
|
public void giftCardsViaCursor()
|
|
{
|
|
final int CARDS_TO_ADD = 10;
|
|
|
|
// Add the gift cards in reverse order, to ensure
|
|
// that they are sorted
|
|
for(int index = CARDS_TO_ADD-1; index >= 0; index--)
|
|
{
|
|
boolean result = db.insertLoyaltyCard("store" + index, "note" + index, "cardId" + index,
|
|
BarcodeFormat.UPC_A.toString());
|
|
assertTrue(result);
|
|
}
|
|
|
|
assertEquals(CARDS_TO_ADD, db.getLoyaltyCardCount());
|
|
|
|
Cursor cursor = db.getLoyaltyCardCursor();
|
|
assertNotNull(cursor);
|
|
|
|
assertEquals(CARDS_TO_ADD, cursor.getCount());
|
|
|
|
cursor.moveToFirst();
|
|
|
|
for(int index = 0; index < CARDS_TO_ADD; index++)
|
|
{
|
|
assertEquals("store"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STORE)));
|
|
assertEquals("note"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.NOTE)));
|
|
assertEquals("cardId"+index, cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID)));
|
|
assertEquals(BarcodeFormat.UPC_A.toString(), cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE)));
|
|
|
|
cursor.moveToNext();
|
|
}
|
|
|
|
assertTrue(cursor.isAfterLast());
|
|
}
|
|
|
|
private void setupDatabaseVersion1(SQLiteDatabase database)
|
|
{
|
|
// Delete the tables as they exist now
|
|
database.execSQL("drop table " + DBHelper.LoyaltyCardDbIds.TABLE);
|
|
|
|
// Create the table as it existed in revision 1
|
|
database.execSQL("create table " + DBHelper.LoyaltyCardDbIds.TABLE + "(" +
|
|
DBHelper.LoyaltyCardDbIds.ID + " INTEGER primary key autoincrement," +
|
|
DBHelper.LoyaltyCardDbIds.STORE + " TEXT not null," +
|
|
DBHelper.LoyaltyCardDbIds.CARD_ID + " TEXT not null," +
|
|
DBHelper.LoyaltyCardDbIds.BARCODE_TYPE + " TEXT not null)");
|
|
}
|
|
|
|
private int insertCardVersion1(SQLiteDatabase database,
|
|
final String store, final String cardId,
|
|
final String barcodeType)
|
|
{
|
|
ContentValues contentValues = new ContentValues();
|
|
contentValues.put(DBHelper.LoyaltyCardDbIds.STORE, store);
|
|
contentValues.put(DBHelper.LoyaltyCardDbIds.CARD_ID, cardId);
|
|
contentValues.put(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE, barcodeType);
|
|
final long newId = database.insert(DBHelper.LoyaltyCardDbIds.TABLE, null, contentValues);
|
|
assertTrue(newId != -1);
|
|
return (int)newId;
|
|
}
|
|
|
|
@Test
|
|
public void databaseUpgradeFromVersion1()
|
|
{
|
|
SQLiteDatabase database = db.getWritableDatabase();
|
|
|
|
// Setup the database as it appeared in revision 1
|
|
setupDatabaseVersion1(database);
|
|
|
|
// Insert a budget and transaction
|
|
int newCardId = insertCardVersion1(database, "store", "cardId", BarcodeFormat.UPC_A.toString());
|
|
|
|
// Upgrade database
|
|
db.onUpgrade(database, DBHelper.ORIGINAL_DATABASE_VERSION, DBHelper.DATABASE_VERSION);
|
|
|
|
// Determine that the entries are queryable and the fields are correct
|
|
LoyaltyCard card = db.getLoyaltyCard(newCardId);
|
|
assertEquals("store", card.store);
|
|
assertEquals("cardId", card.cardId);
|
|
assertEquals(BarcodeFormat.UPC_A.toString(), card.barcodeType);
|
|
assertEquals("", card.note);
|
|
|
|
database.close();
|
|
}
|
|
}
|