/* * Copyright (c) 2012 Denis Solonenko. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v2.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ package ru.orangesoftware.financisto2.test.db; import android.database.Cursor; import java.util.ArrayList; import java.util.List; import ru.orangesoftware.financisto2.blotter.BlotterFilter; import ru.orangesoftware.financisto2.filter.WhereFilter; import ru.orangesoftware.financisto2.model.Account; import ru.orangesoftware.financisto2.model.Payee; import ru.orangesoftware.financisto2.model.Transaction; import ru.orangesoftware.financisto2.test.builders.AccountBuilder; import ru.orangesoftware.financisto2.test.builders.DateTime; import ru.orangesoftware.financisto2.test.builders.TransactionBuilder; /** * Created by IntelliJ IDEA. * User: denis.solonenko * Date: 8/16/12 8:08 PM */ public class BlotterTest extends AbstractDbTest { Account a1; DateTime dt = DateTime.fromTimestamp(System.currentTimeMillis()); @Override public void setUp() throws Exception { super.setUp(); a1 = AccountBuilder.createDefault(db); } public void test_should_sort_transactions_in_the_blotter_with_the_same_datetime_according_to_filter() { //given Transaction t1 = TransactionBuilder.withDb(db).account(a1).amount(1000).dateTime(dt).create(); Transaction t2 = TransactionBuilder.withDb(db).account(a1).amount(2000).dateTime(dt).create(); Transaction t3 = TransactionBuilder.withDb(db).account(a1).amount(3000).dateTime(dt).create(); //when sorted oldest-to-newest assertBlotter(getBlotter(WhereFilter.empty().asc(BlotterFilter.DATETIME)), t1, t2, t3); //when sorted newest-to-oldest assertBlotter(getBlotter(WhereFilter.empty().desc(BlotterFilter.DATETIME)), t3, t2, t1); //when sorted newest-to-oldest by default assertBlotter(getBlotter(WhereFilter.empty()), t3, t2, t1); } public void test_should_filter_blotter_by_payee() { //given Transaction t1 = TransactionBuilder.withDb(db).account(a1).amount(1000).payee("P1").dateTime(dt).create(); Transaction t2 = TransactionBuilder.withDb(db).account(a1).amount(2000).dateTime(dt).create(); Payee p = db.getPayee("P1"); //then assertBlotter(getBlotter(WhereFilter.empty().eq(BlotterFilter.PAYEE_ID, String.valueOf(p.id))), t1); assertBlotter(getBlotter(WhereFilter.empty().isNull(BlotterFilter.PAYEE_ID)), t2); } private void assertBlotter(List<Transaction> blotter, Transaction...transactions) { assertEquals(transactions.length, blotter.size()); for (int i=0;i<transactions.length;i++) { assertEquals("Pos "+i, transactions[i].id, blotter.get(i).id); } } private List<Transaction> getBlotter(WhereFilter filter) { Cursor c = db.getBlotter(filter); try { List<Transaction> list = new ArrayList<Transaction>(); while (c.moveToNext()) { list.add(Transaction.fromBlotterCursor(c)); } return list; } finally { c.close(); } } }