Skip to content

Commit 6caf791

Browse files
committed
Unit tests for SearchClaimsActivity class
1 parent f56e747 commit 6caf791

5 files changed

Lines changed: 153 additions & 4 deletions

File tree

claimManagement/fakedatabase

0 Bytes
Binary file not shown.

claimManagement/fakemapping

0 Bytes
Binary file not shown.

claimManagement/src/main/java/org/openimis/imisclaims/SearchClaimsActivity.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class SearchClaimsActivity extends ImisActivity {
3636
private final Calendar visitDateToCalendar = Calendar.getInstance();
3737
private final Calendar dateProcessedFromCalendar = Calendar.getInstance();
3838
private final Calendar dateProcessedToCalendar = Calendar.getInstance();
39+
protected FetchClaims fetchClaims;
3940

4041
private Spinner spinner;
4142

@@ -77,6 +78,7 @@ protected void onCreate(Bundle savedInstanceState) {
7778
dateProcessedToCalendar.setTimeInMillis(savedInstanceState.getLong(PROCESSED_TO));
7879
TextViewUtils.setDate(dateProcessedTo, dateProcessedToCalendar.getTime());
7980
}
81+
fetchClaims = new FetchClaims();
8082

8183
findViewById(R.id.clear).setOnClickListener(view -> {
8284
visitDateFrom.setText("");
@@ -119,7 +121,7 @@ public DatePickerDialog getDatePicker(TextView textView, Calendar calendar) {
119121
}
120122

121123
@Nullable
122-
private Claim.Status getStatus(Spinner spinner) {
124+
protected Claim.Status getStatus(Spinner spinner) {
123125
switch (spinner.getSelectedItemPosition()) {
124126
case 1:
125127
return Claim.Status.ENTERED;
@@ -137,14 +139,14 @@ private Claim.Status getStatus(Spinner spinner) {
137139
}
138140

139141
@Nullable
140-
private Date getDate(@NonNull EditText editText, @NonNull Calendar calendar) {
142+
protected Date getDate(@NonNull EditText editText, @NonNull Calendar calendar) {
141143
if (editText.length() != 0) {
142144
return calendar.getTime();
143145
}
144146
return null;
145147
}
146148

147-
private void getClaims(
149+
protected void getClaims(
148150
@Nullable String claimAdministratorCode,
149151
@Nullable Claim.Status status,
150152
@Nullable Date visitDateFrom,
@@ -156,7 +158,7 @@ private void getClaims(
156158
new Thread(() -> {
157159

158160
try {
159-
List<Claim> claims = new FetchClaims().execute(
161+
List<Claim> claims = fetchClaims.execute(
160162
claimAdministratorCode, status, visitDateFrom,
161163
visitDateTo, processedDateFrom, processedDateTo
162164
);

claimManagement/src/test/java/org/openimis/imisclaims/MapItemsTest.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,61 @@ public void showDialog_createsAlertDialog() {
177177
AlertDialog dialog = activity.ShowDialog("Test message");
178178
assertNotNull(dialog);
179179
}
180+
181+
@Test
182+
public void uncheckAll_setsAllItemsUnmapped() {
183+
for (int i = 0; i < 3; i++) {
184+
HashMap<String, Object> item = new HashMap<>();
185+
item.put("Code", "ITEM00" + i);
186+
item.put("Name", "Item " + i);
187+
item.put("isMapped", true);
188+
activity.ItemsList.add(item);
189+
}
190+
191+
activity.alAdapter = activity.new ItemAdapter(activity, activity.ItemsList,
192+
R.layout.mappinglist,
193+
new String[]{"Code", "Name", "isMapped"},
194+
new int[]{R.id.tvMapCode, R.id.tvMapName, R.id.chkMap});
195+
196+
activity.CheckUncheckAll(false);
197+
198+
for (HashMap<String, Object> item : activity.ItemsList) {
199+
assertFalse((Boolean) item.get("isMapped"));
200+
}
201+
}
202+
203+
@Test
204+
public void bindItemList_loadsMultipleItemsCorrectly() {
205+
doReturn(mockCursor).when(activity.sqlHandler).getMapping("I");
206+
when(mockCursor.moveToFirst()).thenReturn(true);
207+
when(mockCursor.isAfterLast()).thenReturn(false, false, true);
208+
when(mockCursor.getString(0)).thenReturn("ITEM001", "ITEM002");
209+
when(mockCursor.getString(1)).thenReturn("Paracetamol", "Aspirin");
210+
when(mockCursor.getString(2)).thenReturn(null, "mapped");
211+
212+
activity.BindItemList();
213+
214+
assertEquals(2, activity.ItemsList.size());
215+
assertFalse((Boolean) activity.ItemsList.get(0).get("isMapped"));
216+
assertTrue((Boolean) activity.ItemsList.get(1).get("isMapped"));
217+
verify(mockCursor).close();
218+
}
219+
220+
@Test
221+
public void save_clearsMapping_beforeInserting() {
222+
HashMap<String, Object> item = new HashMap<>();
223+
item.put("Code", "ITEM001");
224+
item.put("Name", "Test");
225+
item.put("isMapped", true);
226+
activity.ItemsList.add(item);
227+
228+
when(mockSqlHandler.InsertMapping(anyString(), anyString(), anyString())).thenReturn(true);
229+
doNothing().when(mockSqlHandler).ClearMapping("I");
230+
231+
activity.Save();
232+
233+
verify(mockSqlHandler).ClearMapping("I");
234+
verify(mockSqlHandler).InsertMapping("ITEM001", "Test", "I");
235+
}
236+
180237
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package org.openimis.imisclaims;
2+
3+
import static org.junit.Assert.*;
4+
import static org.mockito.ArgumentMatchers.*;
5+
import static org.mockito.Mockito.*;
6+
7+
import android.widget.EditText;
8+
import android.widget.Spinner;
9+
10+
import org.junit.Before;
11+
import org.junit.Test;
12+
import org.junit.runner.RunWith;
13+
import org.openimis.imisclaims.domain.entity.Claim;
14+
import org.openimis.imisclaims.usecase.FetchClaims;
15+
import org.robolectric.Robolectric;
16+
import org.robolectric.RobolectricTestRunner;
17+
import org.robolectric.annotation.Config;
18+
19+
import java.util.ArrayList;
20+
import java.util.Calendar;
21+
22+
@RunWith(RobolectricTestRunner.class)
23+
@Config(sdk = {28}, application = Global.class)
24+
public class SearchClaimsActivityTest {
25+
26+
private SearchClaimsActivity activity;
27+
private Spinner spinner;
28+
private EditText visitDateFrom;
29+
private EditText dateProcessedFrom;
30+
31+
@Before
32+
public void setup() {
33+
activity = Robolectric.buildActivity(SearchClaimsActivity.class)
34+
.create()
35+
.get();
36+
37+
spinner = activity.findViewById(R.id.spinner_status);
38+
visitDateFrom = activity.findViewById(R.id.visit_date_from);
39+
dateProcessedFrom = activity.findViewById(R.id.date_processed_from);
40+
}
41+
42+
@Test
43+
public void getStatus_returnsCorrectStatusForAllPositions() {
44+
assertNull(activity.getStatus(spinner)); // Position 0 - no selection
45+
46+
spinner.setSelection(1);
47+
assertEquals(Claim.Status.ENTERED, activity.getStatus(spinner));
48+
49+
spinner.setSelection(2);
50+
assertEquals(Claim.Status.CHECKED, activity.getStatus(spinner));
51+
52+
spinner.setSelection(3);
53+
assertEquals(Claim.Status.PROCESSED, activity.getStatus(spinner));
54+
55+
spinner.setSelection(4);
56+
assertEquals(Claim.Status.VALUATED, activity.getStatus(spinner));
57+
58+
spinner.setSelection(5);
59+
assertEquals(Claim.Status.REJECTED, activity.getStatus(spinner));
60+
}
61+
62+
@Test
63+
public void getDate_returnsNullWhenEmpty_andDateWhenFilled() {
64+
Calendar calendar = Calendar.getInstance();
65+
calendar.set(2024, Calendar.JANUARY, 15);
66+
67+
// Empty field returns null
68+
visitDateFrom.setText("");
69+
assertNull(activity.getDate(visitDateFrom, calendar));
70+
71+
// Filled field returns date
72+
visitDateFrom.setText("15/01/2024");
73+
assertNotNull(activity.getDate(visitDateFrom, calendar));
74+
assertEquals(calendar.getTime(), activity.getDate(visitDateFrom, calendar));
75+
}
76+
77+
@Test
78+
public void clearButton_resetsAllFields() {
79+
spinner.setSelection(2);
80+
visitDateFrom.setText("01/01/2024");
81+
dateProcessedFrom.setText("01/01/2024");
82+
83+
activity.findViewById(R.id.clear).performClick();
84+
85+
assertEquals(0, spinner.getSelectedItemPosition());
86+
assertEquals("", visitDateFrom.getText().toString());
87+
assertEquals("", dateProcessedFrom.getText().toString());
88+
}
89+
90+
}

0 commit comments

Comments
 (0)