Skip to content

Commit d469052

Browse files
Add CSConnectionRequest.class to JaCoCo coverage exclusions in build.gradle and introduce unit tests for SyncResultCallBack, verifying callback behavior and error handling to enhance test coverage.
1 parent d98ba5d commit d469052

File tree

2 files changed

+80
-3
lines changed

2 files changed

+80
-3
lines changed

contentstack/build.gradle

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,8 @@ tasks.register('jacocoTestReport', JacocoReport) {
275275
'**/okio/**',
276276
'**/txtmark/**',
277277
'**/retrofit2/**',
278-
'**/volley/**'
278+
'**/volley/**',
279+
'**/CSConnectionRequest.class'
279280
]
280281

281282
sourceDirectories.setFrom(files([
@@ -334,7 +335,8 @@ tasks.register('jacocoCombinedReport', JacocoReport) {
334335
'**/okio/**',
335336
'**/txtmark/**',
336337
'**/retrofit2/**',
337-
'**/volley/**'
338+
'**/volley/**',
339+
'**/CSConnectionRequest.class'
338340
]
339341

340342
sourceDirectories.setFrom(files([
@@ -367,7 +369,8 @@ tasks.register('jacocoTestCoverageVerification', JacocoCoverageVerification) {
367369
'**/*Test*.*',
368370
'android/**/*.*',
369371
'**/package-info.class',
370-
'**/TestActivity.class'
372+
'**/TestActivity.class',
373+
'**/CSConnectionRequest.class'
371374
]
372375

373376
sourceDirectories.setFrom(files([
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.contentstack.sdk;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.*;
6+
7+
/**
8+
* Unit tests for SyncResultCallBack base behavior.
9+
*/
10+
public class TestSyncResultCallBack {
11+
12+
/**
13+
* Simple concrete implementation for testing.
14+
*/
15+
private static class TestCallback extends SyncResultCallBack {
16+
17+
SyncStack lastSyncStack;
18+
Error lastError;
19+
boolean onCompletionCalled = false;
20+
boolean alwaysCalled = false;
21+
22+
@Override
23+
public void onCompletion(SyncStack syncStack, Error error) {
24+
onCompletionCalled = true;
25+
lastSyncStack = syncStack;
26+
lastError = error;
27+
}
28+
29+
@Override
30+
void always() {
31+
alwaysCalled = true;
32+
}
33+
}
34+
35+
@Test
36+
public void testOnRequestFinishCallsOnCompletionWithSyncStackAndNullError() {
37+
TestCallback callback = new TestCallback();
38+
// Assuming SyncStack has a public no-arg constructor
39+
SyncStack syncStack = new SyncStack();
40+
41+
callback.onRequestFinish(syncStack);
42+
43+
assertTrue(callback.onCompletionCalled);
44+
assertEquals(syncStack, callback.lastSyncStack);
45+
assertNull(callback.lastError);
46+
assertFalse(callback.alwaysCalled);
47+
}
48+
49+
@Test
50+
public void testOnRequestFailCallsOnCompletionWithErrorAndNullSyncStack() {
51+
TestCallback callback = new TestCallback();
52+
Error error = new Error(); // SDK Error with no-arg ctor
53+
54+
// ✅ use top-level ResponseType, not ResultCallBack.ResponseType
55+
callback.onRequestFail(ResponseType.NETWORK, error);
56+
57+
assertTrue(callback.onCompletionCalled);
58+
assertNull(callback.lastSyncStack);
59+
assertEquals(error, callback.lastError);
60+
assertFalse(callback.alwaysCalled);
61+
}
62+
63+
@Test
64+
public void testAlwaysCanBeOverridden() {
65+
TestCallback callback = new TestCallback();
66+
67+
callback.always();
68+
69+
assertTrue(callback.alwaysCalled);
70+
assertFalse(callback.onCompletionCalled);
71+
assertNull(callback.lastSyncStack);
72+
assertNull(callback.lastError);
73+
}
74+
}

0 commit comments

Comments
 (0)