Skip to content

Commit a9a0428

Browse files
authored
Merge pull request #113 from Y-Note-SAS/feature-34670
test ClaimActivity.saveClaim
2 parents 10e2cfe + 16594fb commit a9a0428

5 files changed

Lines changed: 162 additions & 9 deletions

File tree

.github/workflows/main.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ on:
66
- '*'
77
# tags:
88
# - '!v*'
9+
pull_request:
10+
branches:
11+
- '*'
12+
types: [opened, synchronize, reopened]
913

1014
jobs:
1115
build:

claimManagement/build.gradle

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@ android {
180180
packagingOptions {
181181
exclude 'META-INF/DEPENDENCIES'
182182
}
183+
184+
testOptions {
185+
unitTests {
186+
includeAndroidResources = true
187+
}
188+
}
183189
}
184190

185191
apollo {
@@ -193,6 +199,13 @@ apollo {
193199
]
194200
}
195201

202+
tasks.withType(Test).configureEach {
203+
testLogging {
204+
events "passed", "skipped", "failed"
205+
exceptionFormat "full"
206+
showStandardStreams = false
207+
}
208+
}
196209

197210
// Apply custom flavours
198211
if(file('custom-flavours.gradle').exists()){
@@ -215,9 +228,13 @@ dependencies {
215228
implementation ('com.apollographql.apollo:apollo-android-support:2.5.14'){
216229
because("Apollo 3+ only works with Kotlin coroutines")
217230
}
218-
testImplementation 'junit:junit:4.12'
231+
testImplementation 'junit:junit:4.13.2'
232+
testImplementation 'org.mockito:mockito-core:5.5.0'
233+
testImplementation 'org.robolectric:robolectric:4.11.1'
234+
testImplementation 'androidx.test:core:1.5.0'
219235
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
220236
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
237+
androidTestImplementation 'androidx.test:core:1.5.0'
221238
implementation group: 'com.squareup.picasso', name: 'picasso', version: '2.71828'
222239
implementation group: 'net.lingala.zip4j', name: 'zip4j', version: '1.2.7'
223240

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,7 @@ protected void confirmNewDialog(String msg) {
811811
runOnUiThread(() -> showDialog(msg, (dialog, which) -> ClearForm(), (dialog, which) -> dialog.dismiss()));
812812
}
813813

814-
private boolean saveClaim() {
814+
protected boolean saveClaim() {
815815
Intent intent = getIntent();
816816
String claimUUID;
817817
if (intent.hasExtra(EXTRA_CLAIM_UUID)) {
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
package org.openimis.imisclaims;
2+
3+
import static org.junit.Assert.*;
4+
import static org.mockito.ArgumentMatchers.any;
5+
import static org.mockito.Mockito.*;
6+
7+
import android.app.Activity;
8+
import android.content.ContentValues;
9+
import android.content.res.Resources;
10+
import android.widget.AutoCompleteTextView;
11+
import android.widget.CheckBox;
12+
import android.widget.EditText;
13+
import android.text.SpannableStringBuilder;
14+
15+
import org.junit.Before;
16+
import org.junit.Test;
17+
import org.junit.runner.RunWith;
18+
import org.mockito.Mock;
19+
import org.mockito.MockitoAnnotations;
20+
import org.openimis.imisclaims.tools.StorageManager;
21+
import org.robolectric.Robolectric;
22+
import org.robolectric.RobolectricTestRunner;
23+
24+
import java.util.ArrayList;
25+
import java.util.HashMap;
26+
27+
@RunWith(RobolectricTestRunner.class)
28+
public class ClaimActivityTest {
29+
@Mock
30+
Global global;
31+
32+
@Mock
33+
SQLHandler sqlHandler;
34+
35+
@Mock
36+
Activity activity;
37+
38+
@Mock
39+
Resources resources;
40+
41+
@Mock
42+
StorageManager storageManager;
43+
44+
ClaimActivity claimActivity;
45+
46+
@Before
47+
public void setup() {
48+
MockitoAnnotations.openMocks(this);
49+
when(activity.getResources()).thenReturn(resources);
50+
when(resources.getString(anyInt())).thenReturn("mockString");
51+
claimActivity = Robolectric.buildActivity(ClaimActivity.class).create().start().resume().visible().get();
52+
claimActivity.sqlHandler = sqlHandler;
53+
claimActivity.global = global;
54+
when(global.isNetworkAvailable()).thenReturn(true); // or false, it doesn't matter
55+
}
56+
57+
@Test
58+
public void testSaveClaim_ShouldInsertInDatabase() {
59+
EditText etHF = mock(EditText.class);
60+
EditText etClaimAdmin = mock(EditText.class);
61+
EditText etClaimCode = mock(EditText.class);
62+
EditText etGuaranteeNo = mock(EditText.class);
63+
EditText etCHFID = mock(EditText.class);
64+
EditText etStart = mock(EditText.class);
65+
EditText etEnd = mock(EditText.class);
66+
67+
AutoCompleteTextView etDiagnosis = mock(AutoCompleteTextView.class);
68+
AutoCompleteTextView etDiagnosis1 = mock(AutoCompleteTextView.class);
69+
AutoCompleteTextView etDiagnosis2 = mock(AutoCompleteTextView.class);
70+
AutoCompleteTextView etDiagnosis3 = mock(AutoCompleteTextView.class);
71+
AutoCompleteTextView etDiagnosis4 = mock(AutoCompleteTextView.class);
72+
73+
when(etHF.getText()).thenReturn(new SpannableStringBuilder("HF001"));
74+
when(etClaimAdmin.getText()).thenReturn(new SpannableStringBuilder("ADMIN001"));
75+
when(etClaimCode.getText()).thenReturn(new SpannableStringBuilder("CLM001"));
76+
when(etGuaranteeNo.getText()).thenReturn(new SpannableStringBuilder("GNT001"));
77+
when(etCHFID.getText()).thenReturn(new SpannableStringBuilder("INS12345"));
78+
when(etStart.getText()).thenReturn(new SpannableStringBuilder("2025-12-01"));
79+
when(etEnd.getText()).thenReturn(new SpannableStringBuilder("2025-12-09"));
80+
when(etDiagnosis.getText()).thenReturn(new SpannableStringBuilder("A01"));
81+
when(etDiagnosis1.getText()).thenReturn(new SpannableStringBuilder("B01"));
82+
when(etDiagnosis2.getText()).thenReturn(new SpannableStringBuilder("C01"));
83+
when(etDiagnosis3.getText()).thenReturn(new SpannableStringBuilder("D01"));
84+
when(etDiagnosis4.getText()).thenReturn(new SpannableStringBuilder("E01"));
85+
86+
AutoCompleteTextView etVisitType = mock(AutoCompleteTextView.class);
87+
AutoCompleteTextView patientCondition = mock(AutoCompleteTextView.class);
88+
when(etVisitType.getTag()).thenReturn("O");
89+
when(patientCondition.getTag()).thenReturn("A");
90+
91+
CheckBox etPreAuth = mock(CheckBox.class);
92+
when(etPreAuth.isChecked()).thenReturn(false);
93+
94+
claimActivity.etHealthFacility = etHF;
95+
claimActivity.etClaimAdmin = etClaimAdmin;
96+
claimActivity.etClaimCode = etClaimCode;
97+
claimActivity.etGuaranteeNo = etGuaranteeNo;
98+
claimActivity.etInsureeNumber = etCHFID;
99+
claimActivity.etStartDate = etStart;
100+
claimActivity.etEndDate = etEnd;
101+
102+
claimActivity.etDiagnosis = etDiagnosis;
103+
claimActivity.etDiagnosis1 = etDiagnosis1;
104+
claimActivity.etDiagnosis2 = etDiagnosis2;
105+
claimActivity.etDiagnosis3 = etDiagnosis3;
106+
claimActivity.etDiagnosis4 = etDiagnosis4;
107+
108+
claimActivity.etVisitType = etVisitType;
109+
claimActivity.etPatientCondition = patientCondition;
110+
claimActivity.etPreAuthorization = etPreAuth;
111+
112+
ArrayList<HashMap<String, String>> fakeItems = new ArrayList<>();
113+
HashMap<String, String> item1 = new HashMap<>();
114+
item1.put("Code", "ITEM001");
115+
item1.put("Price", "50");
116+
item1.put("Quantity", "1");
117+
fakeItems.add(item1);
118+
claimActivity.lvItemList = fakeItems;
119+
120+
ArrayList<HashMap<String, String>> fakeServices = new ArrayList<>();
121+
HashMap<String, String> svc1 = new HashMap<>();
122+
svc1.put("Code", "SVC001");
123+
svc1.put("Price", "40");
124+
svc1.put("Quantity", "1");
125+
svc1.put("PackageType", "P");
126+
svc1.put("SubServicesItems", "[]");
127+
fakeServices.add(svc1);
128+
claimActivity.lvServiceList = fakeServices;
129+
130+
doNothing().when(sqlHandler).saveClaim(any(ContentValues.class), anyList(), anyList());
131+
132+
boolean result = claimActivity.saveClaim();
133+
134+
assertTrue(result);
135+
verify(sqlHandler, times(1))
136+
.saveClaim(any(ContentValues.class), anyList(), anyList());
137+
}
138+
139+
}

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

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)