Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit b891412

Browse files
author
Evgenii Kanivets
committed
#17[2h]. Refactor Record to contain nested objects. Add tests for RecordRepo.
1 parent adb6ac0 commit b891412

38 files changed

+486
-234
lines changed

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/AccountRepoTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import android.database.Cursor;
55

66
import com.blogspot.e_kanivets.moneytracker.DbHelper;
7-
import com.blogspot.e_kanivets.moneytracker.model.Account;
7+
import com.blogspot.e_kanivets.moneytracker.entity.Account;
88

99
import junit.framework.TestCase;
1010

@@ -63,6 +63,7 @@ public void testGetListFromCursor() throws Exception {
6363
Mockito.when(mockCursor.getColumnIndex(DbHelper.TITLE_COLUMN)).thenReturn(2);
6464
Mockito.when(mockCursor.getColumnIndex(DbHelper.CUR_SUM_COLUMN)).thenReturn(3);
6565
Mockito.when(mockCursor.getColumnIndex(DbHelper.CURRENCY_COLUMN)).thenReturn(4);
66+
6667
Mockito.when(mockCursor.getLong(1)).thenReturn(1L);
6768
Mockito.when(mockCursor.getString(2)).thenReturn("title");
6869
Mockito.when(mockCursor.getInt(3)).thenReturn(100);

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/CategoryRepoTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import android.database.Cursor;
55

66
import com.blogspot.e_kanivets.moneytracker.DbHelper;
7-
import com.blogspot.e_kanivets.moneytracker.model.Category;
7+
import com.blogspot.e_kanivets.moneytracker.entity.Category;
88

99
import junit.framework.TestCase;
1010

@@ -59,6 +59,7 @@ public void testGetListFromCursor() throws Exception {
5959
Mockito.when(mockCursor.moveToFirst()).thenReturn(true);
6060
Mockito.when(mockCursor.getColumnIndex(DbHelper.ID_COLUMN)).thenReturn(1);
6161
Mockito.when(mockCursor.getColumnIndex(DbHelper.NAME_COLUMN)).thenReturn(2);
62+
6263
Mockito.when(mockCursor.getLong(1)).thenReturn(1L);
6364
Mockito.when(mockCursor.getString(2)).thenReturn("category");
6465

app/src/androidTest/java/com/blogspot/e_kanivets/moneytracker/repo/ExchangeRateRepoTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import android.database.Cursor;
55

66
import com.blogspot.e_kanivets.moneytracker.DbHelper;
7-
import com.blogspot.e_kanivets.moneytracker.model.ExchangeRate;
7+
import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate;
88

99
import junit.framework.TestCase;
1010

@@ -65,6 +65,7 @@ public void testGetListFromCursor() throws Exception {
6565
Mockito.when(mockCursor.getColumnIndex(DbHelper.FROM_CURRENCY_COLUMN)).thenReturn(3);
6666
Mockito.when(mockCursor.getColumnIndex(DbHelper.TO_CURRENCY_COLUMN)).thenReturn(4);
6767
Mockito.when(mockCursor.getColumnIndex(DbHelper.AMOUNT_COLUMN)).thenReturn(5);
68+
6869
Mockito.when(mockCursor.getLong(1)).thenReturn(1L);
6970
Mockito.when(mockCursor.getLong(2)).thenReturn(1L);
7071
Mockito.when(mockCursor.getString(3)).thenReturn("NON");
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package com.blogspot.e_kanivets.moneytracker.repo;
2+
3+
import android.content.ContentValues;
4+
import android.database.Cursor;
5+
6+
import com.blogspot.e_kanivets.moneytracker.DbHelper;
7+
import com.blogspot.e_kanivets.moneytracker.entity.Record;
8+
9+
import junit.framework.TestCase;
10+
11+
import org.mockito.Mockito;
12+
13+
import java.util.ArrayList;
14+
import java.util.List;
15+
16+
/**
17+
* Android Test case.
18+
* Created on 3/1/16.
19+
*
20+
* @author Evgenii Kanivets
21+
*/
22+
public class RecordRepoTest extends TestCase {
23+
private RecordRepo repo;
24+
25+
@Override
26+
public void setUp() throws Exception {
27+
super.setUp();
28+
DbHelper mock = Mockito.mock(DbHelper.class);
29+
repo = new RecordRepo(mock);
30+
}
31+
32+
@Override
33+
public void tearDown() throws Exception {
34+
super.tearDown();
35+
repo = null;
36+
}
37+
38+
public void testGetTable() throws Exception {
39+
assertEquals(DbHelper.TABLE_RECORDS, repo.getTable());
40+
}
41+
42+
public void testContentValues() throws Exception {
43+
Record record = new Record(1, 1, Record.TYPE_EXPENSE, "title", 1, 100, 1, "NON");
44+
45+
ContentValues expected = new ContentValues();
46+
expected.put(DbHelper.TIME_COLUMN, 1L);
47+
expected.put(DbHelper.TYPE_COLUMN, Record.TYPE_EXPENSE);
48+
expected.put(DbHelper.TITLE_COLUMN, "title");
49+
expected.put(DbHelper.CATEGORY_ID_COLUMN, 1L);
50+
expected.put(DbHelper.PRICE_COLUMN, 100);
51+
expected.put(DbHelper.ACCOUNT_ID_COLUMN, 1L);
52+
expected.put(DbHelper.CURRENCY_COLUMN, "NON");
53+
54+
ContentValues actual = repo.contentValues(record);
55+
56+
assertEquals(expected, actual);
57+
58+
assertNull(repo.contentValues(null));
59+
}
60+
61+
public void testGetListFromCursor() throws Exception {
62+
assertEquals(new ArrayList<Record>(), repo.getListFromCursor(Mockito.mock(Cursor.class)));
63+
64+
Cursor mockCursor = Mockito.mock(Cursor.class);
65+
Mockito.when(mockCursor.moveToFirst()).thenReturn(true);
66+
Mockito.when(mockCursor.getColumnIndex(DbHelper.ID_COLUMN)).thenReturn(1);
67+
Mockito.when(mockCursor.getColumnIndex(DbHelper.TIME_COLUMN)).thenReturn(2);
68+
Mockito.when(mockCursor.getColumnIndex(DbHelper.TYPE_COLUMN)).thenReturn(3);
69+
Mockito.when(mockCursor.getColumnIndex(DbHelper.TITLE_COLUMN)).thenReturn(4);
70+
Mockito.when(mockCursor.getColumnIndex(DbHelper.CATEGORY_ID_COLUMN)).thenReturn(5);
71+
Mockito.when(mockCursor.getColumnIndex(DbHelper.PRICE_COLUMN)).thenReturn(6);
72+
Mockito.when(mockCursor.getColumnIndex(DbHelper.ACCOUNT_ID_COLUMN)).thenReturn(7);
73+
Mockito.when(mockCursor.getColumnIndex(DbHelper.CURRENCY_COLUMN)).thenReturn(8);
74+
75+
Mockito.when(mockCursor.getLong(1)).thenReturn(1L);
76+
Mockito.when(mockCursor.getLong(2)).thenReturn(1L);
77+
Mockito.when(mockCursor.getInt(3)).thenReturn(Record.TYPE_EXPENSE);
78+
Mockito.when(mockCursor.getString(4)).thenReturn("title");
79+
Mockito.when(mockCursor.getLong(5)).thenReturn(1L);
80+
Mockito.when(mockCursor.getInt(6)).thenReturn(100);
81+
Mockito.when(mockCursor.getLong(7)).thenReturn(1L);
82+
Mockito.when(mockCursor.getString(8)).thenReturn("NON");
83+
84+
List<Record> expected = new ArrayList<>();
85+
expected.add(new Record(1, 1, Record.TYPE_EXPENSE, "title", 1, 100, 1, "NON"));
86+
87+
assertEquals(expected, repo.getListFromCursor(mockCursor));
88+
89+
assertEquals(new ArrayList<>(), repo.getListFromCursor(null));
90+
}
91+
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/AddAccountActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseActivity;
1111
import com.blogspot.e_kanivets.moneytracker.DbHelper;
1212
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
13-
import com.blogspot.e_kanivets.moneytracker.model.Account;
13+
import com.blogspot.e_kanivets.moneytracker.entity.Account;
1414
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
1515
import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider;
1616

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/AddExchangeRateActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.blogspot.e_kanivets.moneytracker.R;
1111
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseActivity;
1212
import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController;
13-
import com.blogspot.e_kanivets.moneytracker.model.ExchangeRate;
13+
import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate;
1414
import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo;
1515
import com.blogspot.e_kanivets.moneytracker.util.CurrencyProvider;
1616

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/AddRecordActivity.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717
import com.blogspot.e_kanivets.moneytracker.controller.CategoryController;
1818
import com.blogspot.e_kanivets.moneytracker.DbHelper;
1919
import com.blogspot.e_kanivets.moneytracker.controller.RecordController;
20-
import com.blogspot.e_kanivets.moneytracker.model.Account;
21-
import com.blogspot.e_kanivets.moneytracker.model.Record;
20+
import com.blogspot.e_kanivets.moneytracker.entity.Account;
21+
import com.blogspot.e_kanivets.moneytracker.entity.Category;
22+
import com.blogspot.e_kanivets.moneytracker.entity.Record;
2223
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
2324
import com.blogspot.e_kanivets.moneytracker.repo.CategoryRepo;
2425
import com.blogspot.e_kanivets.moneytracker.repo.RecordRepo;
@@ -84,6 +85,7 @@ record = getIntent().getParcelableExtra(KEY_RECORD);
8485
return mode != null && type != -1 && (!mode.equals(Mode.MODE_EDIT) || record != null);
8586
}
8687

88+
@SuppressWarnings("deprecation")
8789
@SuppressLint("SetTextI18n")
8890
@Override
8991
protected void initViews() {
@@ -100,12 +102,12 @@ protected void initViews() {
100102
//Add texts to dialog if it's edit dialog
101103
if (mode == Mode.MODE_EDIT) {
102104
etTitle.setText(record.getTitle());
103-
etCategory.setText(record.getCategory());
105+
etCategory.setText(record.getCategory().getName());
104106
etPrice.setText(Integer.toString(record.getPrice()));
105107

106108
for (int i = 0; i < accountList.size(); i++) {
107109
Account account = accountList.get(i);
108-
if (account.getId() == record.getAccountId()) {
110+
if (account.getId() == record.getAccount().getId()) {
109111
spinnerAccount.setSelection(i);
110112
}
111113
}
@@ -190,25 +192,21 @@ protected boolean doRecord(String title, String category, int price, Account acc
190192
switch (type) {
191193
case Record.TYPE_EXPENSE:
192194
recordController.create(new Record(new Date().getTime(), Record.TYPE_EXPENSE,
193-
title, category, price, account.getId(),
194-
account.getCurrency()));
195+
title, new Category(category), price, account, account.getCurrency()));
195196
return true;
196197

197198
case Record.TYPE_INCOME:
198199
recordController.create(new Record(new Date().getTime(), Record.TYPE_INCOME,
199-
title, category, price, account.getId(), account.getCurrency()));
200+
title, new Category(category), price, account, account.getCurrency()));
200201
return true;
201202

202203
default:
203204
return false;
204205
}
205206
} else if (mode == Mode.MODE_EDIT) {
206-
record.setTitle(title);
207-
record.setCategory(category);
208-
record.setPrice(price);
209-
record.setAccountId(account.getId());
210-
record.setCurrency(account.getCurrency());
211-
recordController.update(record);
207+
Record updatedRecord = new Record(record.getId(), record.getTime(), record.getType(),
208+
title, new Category(category), price, account, account.getCurrency());
209+
recordController.update(updatedRecord);
212210

213211
return true;
214212
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/ReportActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import com.blogspot.e_kanivets.moneytracker.controller.ExchangeRateController;
1212
import com.blogspot.e_kanivets.moneytracker.DbHelper;
1313
import com.blogspot.e_kanivets.moneytracker.model.Period;
14-
import com.blogspot.e_kanivets.moneytracker.model.Record;
14+
import com.blogspot.e_kanivets.moneytracker.entity.Record;
1515
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
1616
import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo;
1717
import com.blogspot.e_kanivets.moneytracker.report.ReportConverter;

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/TransferActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
import com.blogspot.e_kanivets.moneytracker.controller.AccountController;
1212
import com.blogspot.e_kanivets.moneytracker.DbHelper;
1313
import com.blogspot.e_kanivets.moneytracker.controller.TransferController;
14-
import com.blogspot.e_kanivets.moneytracker.model.Account;
15-
import com.blogspot.e_kanivets.moneytracker.model.Transfer;
14+
import com.blogspot.e_kanivets.moneytracker.entity.Account;
15+
import com.blogspot.e_kanivets.moneytracker.entity.Transfer;
1616
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
1717
import com.blogspot.e_kanivets.moneytracker.repo.TransferRepo;
1818

app/src/main/java/com/blogspot/e_kanivets/moneytracker/adapter/AccountAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import android.widget.TextView;
1010

1111
import com.blogspot.e_kanivets.moneytracker.R;
12-
import com.blogspot.e_kanivets.moneytracker.model.Account;
12+
import com.blogspot.e_kanivets.moneytracker.entity.Account;
1313

1414
import java.util.List;
1515

0 commit comments

Comments
 (0)