Skip to content

Commit bd79c49

Browse files
Add comprehensive unit tests for Config and Contentstack classes
1 parent eb6484b commit bd79c49

File tree

2 files changed

+570
-8
lines changed

2 files changed

+570
-8
lines changed

src/test/java/com/contentstack/sdk/TestConfig.java

Lines changed: 352 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,45 @@
11
package com.contentstack.sdk;
22

3+
import com.contentstack.sdk.Config.ContentstackRegion;
34
import okhttp3.ConnectionPool;
5+
import org.json.JSONObject;
46
import org.junit.jupiter.api.Assertions;
5-
import org.junit.jupiter.api.BeforeAll;
7+
import org.junit.jupiter.api.BeforeEach;
68
import org.junit.jupiter.api.Test;
79

810
import java.net.InetSocketAddress;
911
import java.net.Proxy;
12+
import java.util.concurrent.TimeUnit;
1013
import java.util.logging.Level;
1114
import java.util.logging.Logger;
1215

16+
import static org.junit.jupiter.api.Assertions.*;
17+
1318
/**
14-
* The type Config testcase.
19+
* Comprehensive unit tests for Config class.
1520
*/
1621
public class TestConfig {
1722

1823
private static final Logger logger = Logger.getLogger(TestConfig.class.getName());
19-
private static Config config;
20-
24+
private Config config;
2125

22-
@BeforeAll
23-
public static void setUp() {
26+
@BeforeEach
27+
public void setUp() {
2428
logger.setLevel(Level.FINE);
2529
config = new Config();
2630
}
2731

28-
2932
@Test
3033
void testNullProxy() {
31-
Assertions.assertNotNull(config.getProxy());
34+
Assertions.assertNull(config.getProxy());
3235
}
3336

3437
@Test
3538
void testsSetProxy() {
3639
java.net.Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("sl.shaileshmishra.io", 80));
3740
config.setProxy(proxy);
3841
Proxy newProxy = config.getProxy();
42+
Assertions.assertNotNull(newProxy);
3943
Assertions.assertNotNull(newProxy.address().toString());
4044
}
4145

@@ -54,5 +58,345 @@ void testsTags() {
5458
Assertions.assertNotNull(joinedTags);
5559
}
5660

61+
// ========== CONNECTION POOL TESTS ==========
62+
63+
@Test
64+
void testConnectionPoolWithCustomParameters() {
65+
ConnectionPool customPool = config.connectionPool(10, 300, TimeUnit.SECONDS);
66+
67+
assertNotNull(customPool);
68+
assertNotNull(config.connectionPool);
69+
assertEquals(customPool, config.connectionPool);
70+
}
71+
72+
@Test
73+
void testConnectionPoolWithMinutes() {
74+
ConnectionPool pool = config.connectionPool(5, 5, TimeUnit.MINUTES);
75+
76+
assertNotNull(pool);
77+
assertNotNull(config.connectionPool);
78+
}
79+
80+
@Test
81+
void testConnectionPoolWithHours() {
82+
ConnectionPool pool = config.connectionPool(20, 1, TimeUnit.HOURS);
83+
84+
assertNotNull(pool);
85+
}
86+
87+
@Test
88+
void testConnectionPoolWithMilliseconds() {
89+
ConnectionPool pool = config.connectionPool(3, 30000, TimeUnit.MILLISECONDS);
90+
91+
assertNotNull(pool);
92+
}
93+
94+
@Test
95+
void testConnectionPoolMultipleTimes() {
96+
ConnectionPool pool1 = config.connectionPool(5, 5, TimeUnit.MINUTES);
97+
ConnectionPool pool2 = config.connectionPool(10, 10, TimeUnit.MINUTES);
98+
99+
assertNotNull(pool1);
100+
assertNotNull(pool2);
101+
assertNotEquals(pool1, pool2);
102+
assertEquals(pool2, config.connectionPool);
103+
}
104+
105+
// ========== REGION TESTS ==========
106+
107+
@Test
108+
void testGetDefaultRegion() {
109+
ContentstackRegion region = config.getRegion();
110+
111+
assertNotNull(region);
112+
assertEquals(ContentstackRegion.US, region);
113+
}
114+
115+
@Test
116+
void testSetRegion() {
117+
ContentstackRegion newRegion = config.setRegion(ContentstackRegion.EU);
118+
119+
assertNotNull(newRegion);
120+
assertEquals(ContentstackRegion.EU, newRegion);
121+
assertEquals(ContentstackRegion.EU, config.getRegion());
122+
}
123+
124+
@Test
125+
void testSetRegionAzureNA() {
126+
ContentstackRegion region = config.setRegion(ContentstackRegion.AZURE_NA);
127+
128+
assertEquals(ContentstackRegion.AZURE_NA, region);
129+
assertEquals(ContentstackRegion.AZURE_NA, config.getRegion());
130+
}
131+
132+
@Test
133+
void testSetRegionAzureEU() {
134+
ContentstackRegion region = config.setRegion(ContentstackRegion.AZURE_EU);
135+
136+
assertEquals(ContentstackRegion.AZURE_EU, region);
137+
}
138+
139+
@Test
140+
void testSetRegionGcpNA() {
141+
config.setRegion(ContentstackRegion.GCP_NA);
142+
143+
assertEquals(ContentstackRegion.GCP_NA, config.getRegion());
144+
}
145+
146+
@Test
147+
void testSetRegionGcpEU() {
148+
config.setRegion(ContentstackRegion.GCP_EU);
149+
150+
assertEquals(ContentstackRegion.GCP_EU, config.getRegion());
151+
}
152+
153+
@Test
154+
void testSetRegionAU() {
155+
config.setRegion(ContentstackRegion.AU);
156+
157+
assertEquals(ContentstackRegion.AU, config.getRegion());
158+
}
159+
160+
@Test
161+
void testSetRegionMultipleTimes() {
162+
config.setRegion(ContentstackRegion.EU);
163+
assertEquals(ContentstackRegion.EU, config.getRegion());
164+
165+
config.setRegion(ContentstackRegion.AZURE_NA);
166+
assertEquals(ContentstackRegion.AZURE_NA, config.getRegion());
167+
168+
config.setRegion(ContentstackRegion.GCP_EU);
169+
assertEquals(ContentstackRegion.GCP_EU, config.getRegion());
170+
}
171+
172+
// ========== LIVE PREVIEW TESTS ==========
173+
174+
@Test
175+
void testEnableLivePreviewTrue() {
176+
Config result = config.enableLivePreview(true);
177+
178+
assertNotNull(result);
179+
assertEquals(config, result); // Should return this for chaining
180+
assertTrue(config.enableLivePreview);
181+
}
182+
183+
@Test
184+
void testEnableLivePreviewFalse() {
185+
Config result = config.enableLivePreview(false);
186+
187+
assertNotNull(result);
188+
assertFalse(config.enableLivePreview);
189+
}
190+
191+
@Test
192+
void testEnableLivePreviewChaining() {
193+
Config result = config.enableLivePreview(true)
194+
.setLivePreviewHost("preview.contentstack.io");
195+
196+
assertNotNull(result);
197+
assertEquals(config, result);
198+
assertTrue(config.enableLivePreview);
199+
}
200+
201+
@Test
202+
void testSetLivePreviewHost() {
203+
Config result = config.setLivePreviewHost("custom-preview.example.com");
204+
205+
assertNotNull(result);
206+
assertEquals(config, result);
207+
assertEquals("custom-preview.example.com", config.livePreviewHost);
208+
}
209+
210+
@Test
211+
void testSetLivePreviewHostWithDefaultValue() {
212+
Config result = config.setLivePreviewHost("preview.contentstack.io");
213+
214+
assertNotNull(result);
215+
assertEquals("preview.contentstack.io", config.livePreviewHost);
216+
}
217+
218+
@Test
219+
void testSetLivePreviewHostMultipleTimes() {
220+
config.setLivePreviewHost("host1.example.com");
221+
assertEquals("host1.example.com", config.livePreviewHost);
222+
223+
config.setLivePreviewHost("host2.example.com");
224+
assertEquals("host2.example.com", config.livePreviewHost);
225+
}
226+
227+
@Test
228+
void testSetLivePreviewEntry() {
229+
JSONObject entry = new JSONObject();
230+
entry.put("uid", "entry_uid_123");
231+
entry.put("title", "Preview Entry");
232+
233+
Config result = config.setLivePreviewEntry(entry);
234+
235+
assertNotNull(result);
236+
assertEquals(config, result);
237+
assertNotNull(config.livePreviewEntry);
238+
assertEquals("entry_uid_123", config.livePreviewEntry.opt("uid"));
239+
assertEquals("Preview Entry", config.livePreviewEntry.opt("title"));
240+
}
241+
242+
@Test
243+
void testSetLivePreviewEntryWithEmptyObject() {
244+
JSONObject emptyEntry = new JSONObject();
245+
246+
Config result = config.setLivePreviewEntry(emptyEntry);
247+
248+
assertNotNull(result);
249+
assertNotNull(config.livePreviewEntry);
250+
assertTrue(config.livePreviewEntry.isEmpty());
251+
}
252+
253+
@Test
254+
void testSetLivePreviewEntryChaining() {
255+
JSONObject entry = new JSONObject();
256+
entry.put("content_type", "blog_post");
257+
258+
Config result = config.enableLivePreview(true)
259+
.setLivePreviewHost("preview.example.com")
260+
.setLivePreviewEntry(entry);
261+
262+
assertNotNull(result);
263+
assertTrue(config.enableLivePreview);
264+
assertEquals("preview.example.com", config.livePreviewHost);
265+
assertEquals("blog_post", config.livePreviewEntry.opt("content_type"));
266+
}
267+
268+
// ========== PREVIEW TOKEN TESTS ==========
269+
270+
@Test
271+
void testSetPreviewToken() {
272+
Config result = config.setPreviewToken("preview_token_12345");
273+
274+
assertNotNull(result);
275+
assertEquals(config, result);
276+
assertEquals("preview_token_12345", config.previewToken);
277+
}
278+
279+
@Test
280+
void testSetPreviewTokenChaining() {
281+
Config result = config.setPreviewToken("token_abc")
282+
.enableLivePreview(true);
283+
284+
assertNotNull(result);
285+
assertEquals("token_abc", config.previewToken);
286+
assertTrue(config.enableLivePreview);
287+
}
288+
289+
@Test
290+
void testSetPreviewTokenMultipleTimes() {
291+
config.setPreviewToken("token1");
292+
assertEquals("token1", config.previewToken);
293+
294+
config.setPreviewToken("token2");
295+
assertEquals("token2", config.previewToken);
296+
}
297+
298+
// ========== MANAGEMENT TOKEN TESTS ==========
299+
300+
@Test
301+
void testSetManagementToken() {
302+
Config result = config.setManagementToken("management_token_xyz");
303+
304+
assertNotNull(result);
305+
assertEquals(config, result);
306+
assertEquals("management_token_xyz", config.managementToken);
307+
}
308+
309+
@Test
310+
void testSetManagementTokenChaining() {
311+
Config result = config.setManagementToken("mgmt_token")
312+
.setPreviewToken("preview_token");
313+
314+
assertNotNull(result);
315+
assertEquals("mgmt_token", config.managementToken);
316+
assertEquals("preview_token", config.previewToken);
317+
}
318+
319+
@Test
320+
void testSetManagementTokenMultipleTimes() {
321+
config.setManagementToken("token_a");
322+
assertEquals("token_a", config.managementToken);
323+
324+
config.setManagementToken("token_b");
325+
assertEquals("token_b", config.managementToken);
326+
}
327+
328+
// ========== COMPREHENSIVE CHAINING TESTS ==========
329+
330+
@Test
331+
void testCompleteConfigurationChaining() {
332+
JSONObject liveEntry = new JSONObject();
333+
liveEntry.put("uid", "entry_123");
334+
335+
Config result = config
336+
.enableLivePreview(true)
337+
.setLivePreviewHost("preview.contentstack.io")
338+
.setLivePreviewEntry(liveEntry)
339+
.setPreviewToken("preview_token")
340+
.setManagementToken("management_token");
341+
342+
assertNotNull(result);
343+
assertEquals(config, result);
344+
assertTrue(config.enableLivePreview);
345+
assertEquals("preview.contentstack.io", config.livePreviewHost);
346+
assertNotNull(config.livePreviewEntry);
347+
assertEquals("preview_token", config.previewToken);
348+
assertEquals("management_token", config.managementToken);
349+
}
350+
351+
@Test
352+
void testHostAndVersionGetters() {
353+
String host = config.getHost();
354+
String version = config.getVersion();
355+
356+
assertNotNull(host);
357+
assertNotNull(version);
358+
assertEquals("cdn.contentstack.io", host);
359+
assertEquals("v3", version);
360+
}
361+
362+
@Test
363+
void testSetHost() {
364+
config.setHost("custom.contentstack.io");
365+
366+
assertEquals("custom.contentstack.io", config.getHost());
367+
}
368+
369+
@Test
370+
void testSetHostWithEmptyString() {
371+
String originalHost = config.getHost();
372+
config.setHost("");
373+
374+
// Empty string should not change the host
375+
assertEquals(originalHost, config.getHost());
376+
}
377+
378+
@Test
379+
void testSetHostWithNull() {
380+
String originalHost = config.getHost();
381+
config.setHost(null);
382+
383+
// Null should not change the host
384+
assertEquals(originalHost, config.getHost());
385+
}
57386

387+
@Test
388+
void testBranchGetterAndSetter() {
389+
config.setBranch("development");
390+
391+
assertEquals("development", config.getBranch());
392+
}
393+
394+
@Test
395+
void testEarlyAccessGetterAndSetter() {
396+
String[] earlyAccessHeaders = {"Taxonomy", "Teams"};
397+
Config result = config.setEarlyAccess(earlyAccessHeaders);
398+
399+
assertNotNull(result);
400+
assertArrayEquals(earlyAccessHeaders, config.getEarlyAccess());
401+
}
58402
}

0 commit comments

Comments
 (0)