예제 #1
0
 public void test_should_convert_split_into_regular_transaction() {
   Transaction t =
       TransactionBuilder.withDb(db)
           .account(a1)
           .amount(2000)
           .withSplit(categories.get("A1"), 500)
           .withSplit(categories.get("A2"), 1500)
           .create();
   List<Transaction> splits = db.getSplitsForTransaction(t.id);
   assertEquals(2, splits.size());
   t.categoryId = categories.get("A").id;
   t.splits = null;
   db.insertOrUpdate(t);
   splits = db.getSplitsForTransaction(t.id);
   assertEquals(0, splits.size());
 }
예제 #2
0
 public void test_should_insert_and_update_attributes() {
   // given
   Category aa1 = categories.get("AA1");
   Attribute attr1 = aa1.attributes.get(0);
   Attribute attr2 = aa1.attributes.get(1);
   // when inserted
   Transaction t1 =
       TransactionBuilder.withDb(db)
           .account(a1)
           .amount(1000)
           .category(aa1)
           .withAttributes(attributeValue(attr1, "value1"), attributeValue(attr2, "value2"))
           .create();
   Transaction t2 =
       TransactionBuilder.withDb(db)
           .account(a2)
           .amount(2000)
           .withSplit(aa1, 600, "Note1", null, attributeValue(attr1, "value11"))
           .withSplit(aa1, 1400, "Note2", null, attributeValue(attr2, "value21"))
           .create();
   // then
   assertAttributes(t1, attributeValue(attr1, "value1"), attributeValue(attr2, "value2"));
   List<Transaction> splits = db.getSplitsForTransaction(t2.id);
   assertAttributes(splits.get(0), attributeValue(attr1, "value11"));
   assertAttributes(splits.get(1), attributeValue(attr2, "value21"));
   // when modified
   db.insertOrUpdate(t1, Arrays.asList(attributeValue(attr2, "value3")));
   splits.get(0).categoryAttributes =
       asMap(attributeValue(attr1, "value111"), attributeValue(attr2, "value222"));
   splits.get(1).categoryAttributes = asMap(attributeValue(attr1, "value333"));
   t2.splits = splits;
   db.insertOrUpdate(t2);
   // then
   assertAttributes(t1, attributeValue(attr2, "value3"));
   splits = db.getSplitsForTransaction(t2.id);
   assertAttributes(
       splits.get(0), attributeValue(attr1, "value111"), attributeValue(attr2, "value222"));
   assertAttributes(splits.get(1), attributeValue(attr1, "value333"));
 }
예제 #3
0
 public void test_should_update_splits() {
   Transaction t =
       TransactionBuilder.withDb(db)
           .account(a1)
           .amount(-150)
           .category(Category.splitCategory(context))
           .withSplit(categories.get("A1"), -60)
           .withSplit(categories.get("A2"), -40)
           .withTransferSplit(a2, -50, 40)
           .create();
   List<Transaction> splits = db.getSplitsForTransaction(t.id);
   assertEquals(3, splits.size());
   t.fromAmount = -250;
   splits.get(0).fromAmount = -70;
   splits.get(1).fromAmount = -50;
   splits.get(2).fromAmount = -130;
   splits.get(2).toAmount = 70;
   t.splits = splits;
   db.insertOrUpdate(t);
   splits = db.getSplitsForTransaction(t.id);
   assertEquals(3, splits.size());
 }
예제 #4
0
 public void test_should_store_transaction_in_the_database() {
   Transaction t = new Transaction();
   t.fromAccountId = 1;
   t.fromAmount = 1000;
   t.categoryId = 5;
   t.accuracy = 6.0f;
   t.latitude = -11.0;
   t.isCCardPayment = 1;
   t.note = "My note";
   t.status = TransactionStatus.RS;
   long id = db.saveOrUpdate(t);
   assertTrue(id > 0);
   Transaction restored = db.load(Transaction.class, id);
   assertEquals(t.fromAccountId, restored.fromAccountId);
   assertEquals(t.fromAmount, restored.fromAmount);
   assertEquals(t.categoryId, restored.categoryId);
   assertEquals(t.note, restored.note);
   assertEquals(t.status, restored.status);
   assertEquals(t.accuracy, restored.accuracy);
   assertEquals(t.latitude, restored.latitude);
   assertEquals(t.isCCardPayment, restored.isCCardPayment);
 }
예제 #5
0
 public void test_should_restore_split_from_intent() {
   Transaction split = new Transaction();
   split.id = -2;
   split.fromAccountId = 3;
   split.toAccountId = 5;
   split.categoryId = 7;
   split.fromAmount = -10000;
   split.toAmount = 4000;
   split.unsplitAmount = 300000;
   split.note = "My note";
   Intent intent = new Intent();
   split.toIntentAsSplit(intent);
   Transaction restored = Transaction.fromIntentAsSplit(intent);
   assertEquals(split.id, restored.id);
   assertEquals(split.fromAccountId, restored.fromAccountId);
   assertEquals(split.toAccountId, restored.toAccountId);
   assertEquals(split.categoryId, restored.categoryId);
   assertEquals(split.fromAmount, restored.fromAmount);
   assertEquals(split.toAmount, restored.toAmount);
   assertEquals(split.unsplitAmount, restored.unsplitAmount);
   assertEquals(split.note, restored.note);
 }