- Now the Transaction History is working and is Paged
- New class to test the app: a Random Transaction Generator
This commit is contained in:
parent
7306652dda
commit
515d09c0c2
8 changed files with 84 additions and 33 deletions
|
@ -10,18 +10,25 @@ import android.support.test.InstrumentationRegistry;
|
|||
import android.support.test.rule.ActivityTestRule;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import carbon.crypto.com.carbon.Assertions.RecyclerViewItemsCountAssertion;
|
||||
import cy.agorise.crystalwallet.IntroActivity;
|
||||
import cy.agorise.crystalwallet.R;
|
||||
import cy.agorise.crystalwallet.dao.CrystalDatabase;
|
||||
import cy.agorise.crystalwallet.models.CryptoCoinTransaction;
|
||||
import cy.agorise.crystalwallet.randomdatagenerators.RandomTransactionsGenerator;
|
||||
|
||||
import static android.support.test.espresso.Espresso.onView;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withId;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
|
||||
/**
|
||||
* Created by Henry Varona on 19/9/2017.
|
||||
*/
|
||||
|
@ -29,34 +36,17 @@ import static android.support.test.espresso.matcher.ViewMatchers.withId;
|
|||
public class TransactionListTest {
|
||||
CrystalDatabase db;
|
||||
|
||||
List<CryptoCoinTransaction> transactions;
|
||||
int numberOfTransactions = 100;
|
||||
|
||||
@Before
|
||||
public void addingTransactions(){
|
||||
Calendar cal = Calendar.getInstance();
|
||||
db = CrystalDatabase.getAppDatabase(InstrumentationRegistry.getTargetContext());
|
||||
transactions = RandomTransactionsGenerator.generateTransactions(numberOfTransactions,1262304001,1496275201,1,999999999);
|
||||
|
||||
this.db = CrystalDatabase.getAppDatabase(InstrumentationRegistry.getTargetContext());
|
||||
cal.set(2017,01,01,01,01,01);
|
||||
CryptoCoinTransaction newTransaction = new CryptoCoinTransaction();
|
||||
newTransaction.setAmount(1);
|
||||
newTransaction.setFrom("friend1");
|
||||
newTransaction.setTo("me1");
|
||||
newTransaction.setDate(cal.getTime());
|
||||
db.transactionDao().insertTransaction(newTransaction);
|
||||
|
||||
cal.set(2017,02,02,02,02,02);
|
||||
newTransaction = new CryptoCoinTransaction();
|
||||
newTransaction.setAmount(2);
|
||||
newTransaction.setFrom("friend2");
|
||||
newTransaction.setTo("me2");
|
||||
newTransaction.setDate(cal.getTime());
|
||||
db.transactionDao().insertTransaction(newTransaction);
|
||||
|
||||
cal.set(2017,03,03,03,03,03);
|
||||
newTransaction = new CryptoCoinTransaction();
|
||||
newTransaction.setAmount(3);
|
||||
newTransaction.setFrom("friend3");
|
||||
newTransaction.setTo("me3");
|
||||
newTransaction.setDate(cal.getTime());
|
||||
db.transactionDao().insertTransaction(newTransaction);
|
||||
for(int i=0;i<transactions.size();i++) {
|
||||
db.transactionDao().insertTransaction(transactions.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
@Rule
|
||||
|
@ -64,7 +54,7 @@ public class TransactionListTest {
|
|||
|
||||
@Test
|
||||
public void numberOfTransactionsInList(){
|
||||
onView(withId(R.id.transactionListView)).check(new RecyclerViewItemsCountAssertion(3));
|
||||
onView(withId(R.id.transactionListView)).check(new RecyclerViewItemsCountAssertion(numberOfTransactions));
|
||||
}
|
||||
|
||||
@After
|
||||
|
|
|
@ -16,9 +16,12 @@ import java.util.List;
|
|||
|
||||
import cy.agorise.crystalwallet.dao.CrystalDatabase;
|
||||
import cy.agorise.crystalwallet.models.CryptoCoinTransaction;
|
||||
import cy.agorise.crystalwallet.randomdatagenerators.RandomTransactionsGenerator;
|
||||
import cy.agorise.crystalwallet.viewmodels.TransactionListViewModel;
|
||||
import cy.agorise.crystalwallet.views.TransactionListView;
|
||||
|
||||
import static cy.agorise.crystalwallet.R.string.transactions;
|
||||
|
||||
public class IntroActivity extends LifecycleActivity {
|
||||
|
||||
TransactionListViewModel transactionListViewModel;
|
||||
|
@ -29,10 +32,18 @@ public class IntroActivity extends LifecycleActivity {
|
|||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_intro);
|
||||
|
||||
/*CrystalDatabase db = CrystalDatabase.getAppDatabase(getApplicationContext());
|
||||
List<CryptoCoinTransaction> transactions = RandomTransactionsGenerator.generateTransactions(100,1262304001,1496275201,1,999999999);
|
||||
|
||||
for(int i=0;i<transactions.size();i++) {
|
||||
db.transactionDao().insertTransaction(transactions.get(i));
|
||||
}*/
|
||||
|
||||
transactionListView = this.findViewById(R.id.transaction_list);
|
||||
|
||||
transactionListViewModel = ViewModelProviders.of(this).get(TransactionListViewModel.class);
|
||||
LiveData<PagedList<CryptoCoinTransaction>> transactionData = transactionListViewModel.getTransactionList();
|
||||
transactionListView.setData(null);
|
||||
|
||||
transactionData.observe(this, new Observer<PagedList<CryptoCoinTransaction>>() {
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
package cy.agorise.crystalwallet.randomdatagenerators;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import cy.agorise.crystalwallet.models.CryptoCoinTransaction;
|
||||
|
||||
/**
|
||||
* Created by Henry Varona on 20/9/2017.
|
||||
*/
|
||||
|
||||
public class RandomTransactionsGenerator {
|
||||
|
||||
static public List<CryptoCoinTransaction> generateTransactions(int numberOfTransactions, int minTimestamp, int maxTimestamp, int minAmount, int maxAmount){
|
||||
ArrayList<CryptoCoinTransaction> result = new ArrayList<CryptoCoinTransaction>();
|
||||
Random randomGenerator = new Random();
|
||||
Calendar cal = Calendar.getInstance();
|
||||
int randomTimeStamp;
|
||||
int randomAmount;
|
||||
CryptoCoinTransaction randomTransaction;
|
||||
|
||||
for (int i=0;i<numberOfTransactions;i++){
|
||||
randomAmount = randomGenerator.nextInt((maxAmount - minAmount) + 1) + minAmount;
|
||||
randomTimeStamp = randomGenerator.nextInt((maxTimestamp - minTimestamp) + 1) + minTimestamp;
|
||||
cal.setTimeInMillis(randomTimeStamp*1000);
|
||||
|
||||
randomTransaction = new CryptoCoinTransaction();
|
||||
randomTransaction.setAmount(randomAmount);
|
||||
randomTransaction.setFrom("friend"+i);
|
||||
randomTransaction.setTo("me"+i);
|
||||
randomTransaction.setDate(cal.getTime());
|
||||
result.add(randomTransaction);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
|
@ -31,7 +31,10 @@ public class TransactionListAdapter extends PagedListAdapter<CryptoCoinTransacti
|
|||
|
||||
@Override
|
||||
public TransactionViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
return null;
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.transaction_list_item,parent,false);
|
||||
|
||||
|
||||
return new TransactionViewHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -3,6 +3,7 @@ package cy.agorise.crystalwallet.views;
|
|||
import android.arch.paging.PagedList;
|
||||
import android.arch.paging.PagedListAdapter;
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -51,13 +52,17 @@ public class TransactionListView extends RelativeLayout {
|
|||
public void init(){
|
||||
rootView = mInflater.inflate(R.layout.transaction_list, this, true);
|
||||
this.listView = rootView.findViewById(R.id.transactionListView);
|
||||
this.listView.setLayoutManager(new LinearLayoutManager(this.getContext()));
|
||||
this.listView.setNestedScrollingEnabled(false);
|
||||
}
|
||||
|
||||
public void setData(PagedList<CryptoCoinTransaction> data){
|
||||
if (this.listAdapter == null) {
|
||||
this.listAdapter = new TransactionListAdapter();
|
||||
this.listView.setAdapter(this.listAdapter);
|
||||
} else {
|
||||
}
|
||||
|
||||
if (data != null) {
|
||||
this.listAdapter.setList(data);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/activity_intro"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/transactionListView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</LinearLayout>
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
|
|
Loading…
Reference in a new issue