Skip to content

Commit 5bc3884

Browse files
committed
unit tests for AddItems/Services, MasterDataService classes
1 parent 6caf791 commit 5bc3884

File tree

4 files changed

+537
-1
lines changed

4 files changed

+537
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ private boolean isDatabaseValid(File databaseFile) {
127127
return isValid;
128128
}
129129

130-
private boolean tableExists(SQLiteDatabase db, String table) {
130+
protected boolean tableExists(SQLiteDatabase db, String table) {
131131
Cursor c = db.query("sqlite_master", new String[]{"tbl_name "}, "tbl_name = ?", new String[]{table}, null, null, null);
132132
boolean exists = c.getCount() > 0;
133133
c.close();
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
package org.openimis.imisclaims;
2+
3+
import static org.junit.Assert.*;
4+
import static org.mockito.Mockito.*;
5+
6+
import android.content.Intent;
7+
import android.database.Cursor;
8+
import android.widget.AutoCompleteTextView;
9+
import android.widget.Button;
10+
import android.widget.EditText;
11+
12+
import org.junit.Before;
13+
import org.junit.Test;
14+
import org.junit.runner.RunWith;
15+
import org.robolectric.Robolectric;
16+
import org.robolectric.RobolectricTestRunner;
17+
import org.robolectric.annotation.Config;
18+
19+
import java.util.HashMap;
20+
21+
@RunWith(RobolectricTestRunner.class)
22+
@Config(sdk = {28}, application = Global.class)
23+
public class AddItemsTest {
24+
25+
private AddItems activity;
26+
private AutoCompleteTextView etItems;
27+
private EditText etQuantity;
28+
private EditText etAmount;
29+
private Button btnAdd;
30+
private SQLHandler mockSqlHandler;
31+
32+
@Before
33+
public void setup() {
34+
mockSqlHandler = mock(SQLHandler.class);
35+
36+
// Initialize static list BEFORE creating activity
37+
ClaimActivity.lvItemList = new java.util.ArrayList<>();
38+
39+
activity = Robolectric.buildActivity(AddItems.class).create().get();
40+
activity.sqlHandler = mockSqlHandler;
41+
42+
etItems = activity.findViewById(R.id.etItems);
43+
etQuantity = activity.findViewById(R.id.etQuantity);
44+
etAmount = activity.findViewById(R.id.etAmount);
45+
btnAdd = activity.findViewById(R.id.btnAdd);
46+
}
47+
48+
@Test
49+
public void onCreate_disablesFieldsWhenReadonly() {
50+
Intent intent = new Intent();
51+
intent.putExtra(ClaimActivity.EXTRA_READONLY, true);
52+
53+
activity = Robolectric.buildActivity(AddItems.class, intent).create().get();
54+
55+
etItems = activity.findViewById(R.id.etItems);
56+
etQuantity = activity.findViewById(R.id.etQuantity);
57+
etAmount = activity.findViewById(R.id.etAmount);
58+
btnAdd = activity.findViewById(R.id.btnAdd);
59+
60+
assertFalse(etItems.isEnabled());
61+
assertFalse(etQuantity.isEnabled());
62+
assertFalse(etAmount.isEnabled());
63+
assertFalse(btnAdd.isEnabled());
64+
}
65+
66+
@Test
67+
public void addButton_isDisabledInitially() {
68+
assertFalse(btnAdd.isEnabled());
69+
}
70+
71+
@Test
72+
public void addButton_enablesWhenAllFieldsFilled() {
73+
etItems.setText("TEST001");
74+
etQuantity.setText("5");
75+
etAmount.setText("100");
76+
77+
assertTrue(btnAdd.isEnabled());
78+
}
79+
80+
@Test
81+
public void addButton_disablesWhenItemEmpty() {
82+
etItems.setText("");
83+
etQuantity.setText("5");
84+
etAmount.setText("100");
85+
86+
assertFalse(btnAdd.isEnabled());
87+
}
88+
89+
@Test
90+
public void addButton_disablesWhenQuantityEmpty() {
91+
etItems.setText("TEST001");
92+
etQuantity.setText("");
93+
etAmount.setText("100");
94+
95+
assertFalse(btnAdd.isEnabled());
96+
}
97+
98+
@Test
99+
public void addButton_disablesWhenAmountEmpty() {
100+
etItems.setText("TEST001");
101+
etQuantity.setText("5");
102+
etAmount.setText("");
103+
104+
assertFalse(btnAdd.isEnabled());
105+
}
106+
107+
@Test
108+
public void addButton_addsItemToList() {
109+
activity.oItem = new HashMap<>();
110+
activity.oItem.put("Code", "ITEM001");
111+
activity.oItem.put("Name", "Paracetamol");
112+
113+
etQuantity.setText("10");
114+
etAmount.setText("500");
115+
116+
int initialSize = ClaimActivity.lvItemList.size();
117+
btnAdd.performClick();
118+
119+
assertEquals(initialSize + 1, ClaimActivity.lvItemList.size());
120+
121+
HashMap<String, String> addedItem = ClaimActivity.lvItemList.get(initialSize);
122+
assertEquals("ITEM001", addedItem.get("Code"));
123+
assertEquals("Paracetamol", addedItem.get("Name"));
124+
assertEquals("500", addedItem.get("Price"));
125+
assertEquals("10", addedItem.get("Quantity"));
126+
}
127+
128+
@Test
129+
public void addButton_usesDefaultQuantityWhenEmpty() {
130+
activity.oItem = new HashMap<>();
131+
activity.oItem.put("Code", "ITEM001");
132+
activity.oItem.put("Name", "Paracetamol");
133+
134+
etQuantity.setText("");
135+
etAmount.setText("500");
136+
137+
btnAdd.performClick();
138+
139+
HashMap<String, String> addedItem = ClaimActivity.lvItemList.get(0);
140+
assertEquals("1", addedItem.get("Quantity"));
141+
}
142+
143+
@Test
144+
public void addButton_clearsFieldsAfterAdding() {
145+
activity.oItem = new HashMap<>();
146+
activity.oItem.put("Code", "ITEM001");
147+
activity.oItem.put("Name", "Paracetamol");
148+
149+
etItems.setText("TEST");
150+
etQuantity.setText("10");
151+
etAmount.setText("500");
152+
153+
btnAdd.performClick();
154+
155+
assertEquals("", etItems.getText().toString());
156+
assertEquals("", etQuantity.getText().toString());
157+
assertEquals("", etAmount.getText().toString());
158+
}
159+
160+
@Test
161+
public void addButton_doesNothingWhenItemNotSelected() {
162+
activity.oItem = null;
163+
164+
etQuantity.setText("10");
165+
etAmount.setText("500");
166+
167+
int initialSize = ClaimActivity.lvItemList.size();
168+
btnAdd.performClick();
169+
170+
assertEquals(initialSize, ClaimActivity.lvItemList.size());
171+
}
172+
}
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
package org.openimis.imisclaims;
2+
3+
import static org.junit.Assert.*;
4+
import static org.mockito.Mockito.*;
5+
6+
import android.content.Intent;
7+
import android.widget.AutoCompleteTextView;
8+
import android.widget.Button;
9+
import android.widget.EditText;
10+
11+
import org.junit.Before;
12+
import org.junit.Test;
13+
import org.junit.runner.RunWith;
14+
import org.robolectric.Robolectric;
15+
import org.robolectric.RobolectricTestRunner;
16+
import org.robolectric.annotation.Config;
17+
18+
import java.util.HashMap;
19+
20+
@RunWith(RobolectricTestRunner.class)
21+
@Config(sdk = {28}, application = Global.class)
22+
public class AddServicesTest {
23+
24+
private AddServices activity;
25+
private AutoCompleteTextView etServices;
26+
private EditText etSQuantity;
27+
private EditText etSAmount;
28+
private Button btnAdd;
29+
private SQLHandler mockSqlHandler;
30+
31+
@Before
32+
public void setup() {
33+
mockSqlHandler = mock(SQLHandler.class);
34+
35+
// Initialize static list BEFORE creating activity
36+
ClaimActivity.lvServiceList = new java.util.ArrayList<>();
37+
38+
activity = Robolectric.buildActivity(AddServices.class).create().get();
39+
activity.sqlHandler = mockSqlHandler;
40+
41+
etServices = activity.findViewById(R.id.etService);
42+
etSQuantity = activity.findViewById(R.id.etSQuantity);
43+
etSAmount = activity.findViewById(R.id.etSAmount);
44+
btnAdd = activity.findViewById(R.id.btnAdd);
45+
}
46+
47+
@Test
48+
public void onCreate_disablesFieldsWhenReadonly() {
49+
Intent intent = new Intent();
50+
intent.putExtra(ClaimActivity.EXTRA_READONLY, true);
51+
52+
activity = Robolectric.buildActivity(AddServices.class, intent).create().get();
53+
54+
etServices = activity.findViewById(R.id.etService);
55+
etSQuantity = activity.findViewById(R.id.etSQuantity);
56+
etSAmount = activity.findViewById(R.id.etSAmount);
57+
btnAdd = activity.findViewById(R.id.btnAdd);
58+
59+
assertFalse(etServices.isEnabled());
60+
assertFalse(etSQuantity.isEnabled());
61+
assertFalse(etSAmount.isEnabled());
62+
assertFalse(btnAdd.isEnabled());
63+
}
64+
65+
@Test
66+
public void addButton_isDisabledInitially() {
67+
assertFalse(btnAdd.isEnabled());
68+
}
69+
70+
@Test
71+
public void addButton_enablesWhenAllFieldsFilled() {
72+
etServices.setText("SRV001");
73+
etSQuantity.setText("2");
74+
etSAmount.setText("5000");
75+
76+
assertTrue(btnAdd.isEnabled());
77+
}
78+
79+
@Test
80+
public void addButton_disablesWhenServiceEmpty() {
81+
etServices.setText("");
82+
etSQuantity.setText("2");
83+
etSAmount.setText("5000");
84+
85+
assertFalse(btnAdd.isEnabled());
86+
}
87+
88+
@Test
89+
public void addButton_disablesWhenQuantityEmpty() {
90+
etServices.setText("SRV001");
91+
etSQuantity.setText("");
92+
etSAmount.setText("5000");
93+
94+
assertFalse(btnAdd.isEnabled());
95+
}
96+
97+
@Test
98+
public void addButton_disablesWhenAmountEmpty() {
99+
etServices.setText("SRV001");
100+
etSQuantity.setText("2");
101+
etSAmount.setText("");
102+
103+
assertFalse(btnAdd.isEnabled());
104+
}
105+
106+
@Test
107+
public void addButton_addsServiceToList() {
108+
activity.oService = new HashMap<>();
109+
activity.oService.put("Code", "SRV001");
110+
activity.oService.put("Name", "Consultation");
111+
activity.oService.put("PackageType", "S");
112+
113+
etSQuantity.setText("1");
114+
etSAmount.setText("2000");
115+
116+
int initialSize = ClaimActivity.lvServiceList.size();
117+
btnAdd.performClick();
118+
119+
assertEquals(initialSize + 1, ClaimActivity.lvServiceList.size());
120+
121+
HashMap<String, String> addedService = ClaimActivity.lvServiceList.get(initialSize);
122+
assertEquals("SRV001", addedService.get("Code"));
123+
assertEquals("Consultation", addedService.get("Name"));
124+
assertEquals("2000", addedService.get("Price"));
125+
assertEquals("1", addedService.get("Quantity"));
126+
assertEquals("S", addedService.get("PackageType"));
127+
}
128+
129+
@Test
130+
public void addButton_usesDefaultQuantityWhenEmpty() {
131+
activity.oService = new HashMap<>();
132+
activity.oService.put("Code", "SRV001");
133+
activity.oService.put("Name", "Consultation");
134+
activity.oService.put("PackageType", "S");
135+
136+
etSQuantity.setText("");
137+
etSAmount.setText("2000");
138+
139+
btnAdd.performClick();
140+
141+
HashMap<String, String> addedService = ClaimActivity.lvServiceList.get(0);
142+
assertEquals("1", addedService.get("Quantity"));
143+
}
144+
145+
@Test
146+
public void addButton_clearsFieldsAfterAdding() {
147+
activity.oService = new HashMap<>();
148+
activity.oService.put("Code", "SRV001");
149+
activity.oService.put("Name", "Consultation");
150+
activity.oService.put("PackageType", "S");
151+
152+
etServices.setText("TEST");
153+
etSQuantity.setText("1");
154+
etSAmount.setText("2000");
155+
156+
btnAdd.performClick();
157+
158+
assertEquals("", etServices.getText().toString());
159+
assertEquals("", etSQuantity.getText().toString());
160+
assertEquals("", etSAmount.getText().toString());
161+
}
162+
163+
@Test
164+
public void addButton_doesNothingWhenServiceNotSelected() {
165+
activity.oService = null;
166+
167+
etSQuantity.setText("1");
168+
etSAmount.setText("2000");
169+
170+
int initialSize = ClaimActivity.lvServiceList.size();
171+
btnAdd.performClick();
172+
173+
assertEquals(initialSize, ClaimActivity.lvServiceList.size());
174+
}
175+
}

0 commit comments

Comments
 (0)