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+ }
0 commit comments