Skip to content

Commit 910fde8

Browse files
Add comprehensive unit tests for ErrorMessages and GlobalField classes
1 parent 64db395 commit 910fde8

File tree

2 files changed

+879
-0
lines changed

2 files changed

+879
-0
lines changed
Lines changed: 316 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,316 @@
1+
package com.contentstack.sdk;
2+
3+
import org.junit.jupiter.api.Test;
4+
import static org.junit.jupiter.api.Assertions.*;
5+
6+
/**
7+
* Comprehensive unit tests for the ErrorMessages utility class.
8+
* Tests all error message constants and ensures the class cannot be instantiated.
9+
*/
10+
public class TestErrorMessages {
11+
12+
@Test
13+
void testCannotInstantiateErrorMessages() {
14+
Exception exception = assertThrows(Exception.class, () -> {
15+
// Use reflection to access private constructor
16+
java.lang.reflect.Constructor<ErrorMessages> constructor =
17+
ErrorMessages.class.getDeclaredConstructor();
18+
constructor.setAccessible(true);
19+
try {
20+
constructor.newInstance();
21+
} catch (java.lang.reflect.InvocationTargetException e) {
22+
// Unwrap and rethrow the actual exception
23+
throw e.getCause();
24+
}
25+
});
26+
assertTrue(exception instanceof UnsupportedOperationException);
27+
assertTrue(exception.getMessage().contains("utility class"));
28+
}
29+
30+
// ========== AUTHENTICATION & ACCESS ERRORS TESTS ==========
31+
32+
@Test
33+
void testMissingApiKeyMessage() {
34+
assertNotNull(ErrorMessages.MISSING_API_KEY);
35+
assertFalse(ErrorMessages.MISSING_API_KEY.isEmpty());
36+
assertTrue(ErrorMessages.MISSING_API_KEY.contains("API key"));
37+
}
38+
39+
@Test
40+
void testMissingDeliveryTokenMessage() {
41+
assertNotNull(ErrorMessages.MISSING_DELIVERY_TOKEN);
42+
assertFalse(ErrorMessages.MISSING_DELIVERY_TOKEN.isEmpty());
43+
assertTrue(ErrorMessages.MISSING_DELIVERY_TOKEN.contains("delivery token"));
44+
}
45+
46+
@Test
47+
void testMissingEnvironmentMessage() {
48+
assertNotNull(ErrorMessages.MISSING_ENVIRONMENT);
49+
assertFalse(ErrorMessages.MISSING_ENVIRONMENT.isEmpty());
50+
assertTrue(ErrorMessages.MISSING_ENVIRONMENT.contains("environment"));
51+
}
52+
53+
@Test
54+
void testMissingRequestHeadersMessage() {
55+
assertNotNull(ErrorMessages.MISSING_REQUEST_HEADERS);
56+
assertFalse(ErrorMessages.MISSING_REQUEST_HEADERS.isEmpty());
57+
assertTrue(ErrorMessages.MISSING_REQUEST_HEADERS.contains("headers"));
58+
}
59+
60+
// ========== DIRECT INSTANTIATION ERRORS TESTS ==========
61+
62+
@Test
63+
void testDirectInstantiationStackMessage() {
64+
assertNotNull(ErrorMessages.DIRECT_INSTANTIATION_STACK);
65+
assertFalse(ErrorMessages.DIRECT_INSTANTIATION_STACK.isEmpty());
66+
assertTrue(ErrorMessages.DIRECT_INSTANTIATION_STACK.contains("Stack"));
67+
assertTrue(ErrorMessages.DIRECT_INSTANTIATION_STACK.contains("Contentstack.stack()"));
68+
}
69+
70+
@Test
71+
void testDirectInstantiationContentstackMessage() {
72+
assertNotNull(ErrorMessages.DIRECT_INSTANTIATION_CONTENTSTACK);
73+
assertFalse(ErrorMessages.DIRECT_INSTANTIATION_CONTENTSTACK.isEmpty());
74+
}
75+
76+
@Test
77+
void testDirectInstantiationContentTypeMessage() {
78+
assertNotNull(ErrorMessages.DIRECT_INSTANTIATION_CONTENT_TYPE);
79+
assertFalse(ErrorMessages.DIRECT_INSTANTIATION_CONTENT_TYPE.isEmpty());
80+
assertTrue(ErrorMessages.DIRECT_INSTANTIATION_CONTENT_TYPE.contains("ContentType"));
81+
}
82+
83+
@Test
84+
void testDirectInstantiationEntryMessage() {
85+
assertNotNull(ErrorMessages.DIRECT_INSTANTIATION_ENTRY);
86+
assertFalse(ErrorMessages.DIRECT_INSTANTIATION_ENTRY.isEmpty());
87+
assertTrue(ErrorMessages.DIRECT_INSTANTIATION_ENTRY.contains("Entry"));
88+
}
89+
90+
// ========== REQUIRED FIELD ERRORS TESTS ==========
91+
92+
@Test
93+
void testContentTypeUidRequiredMessage() {
94+
assertNotNull(ErrorMessages.CONTENT_TYPE_UID_REQUIRED);
95+
assertFalse(ErrorMessages.CONTENT_TYPE_UID_REQUIRED.isEmpty());
96+
assertTrue(ErrorMessages.CONTENT_TYPE_UID_REQUIRED.contains("UID"));
97+
}
98+
99+
@Test
100+
void testEntryUidRequiredMessage() {
101+
assertNotNull(ErrorMessages.ENTRY_UID_REQUIRED);
102+
assertFalse(ErrorMessages.ENTRY_UID_REQUIRED.isEmpty());
103+
assertTrue(ErrorMessages.ENTRY_UID_REQUIRED.contains("UID"));
104+
}
105+
106+
@Test
107+
void testGlobalFieldUidRequiredMessage() {
108+
assertNotNull(ErrorMessages.GLOBAL_FIELD_UID_REQUIRED);
109+
assertFalse(ErrorMessages.GLOBAL_FIELD_UID_REQUIRED.isEmpty());
110+
assertTrue(ErrorMessages.GLOBAL_FIELD_UID_REQUIRED.contains("global field"));
111+
}
112+
113+
// ========== DATA VALIDATION ERRORS TESTS ==========
114+
115+
@Test
116+
void testInvalidParameterKeyMessage() {
117+
assertNotNull(ErrorMessages.INVALID_PARAMETER_KEY);
118+
assertFalse(ErrorMessages.INVALID_PARAMETER_KEY.isEmpty());
119+
assertTrue(ErrorMessages.INVALID_PARAMETER_KEY.contains("parameter key"));
120+
}
121+
122+
@Test
123+
void testInvalidParameterValueMessage() {
124+
assertNotNull(ErrorMessages.INVALID_PARAMETER_VALUE);
125+
assertFalse(ErrorMessages.INVALID_PARAMETER_VALUE.isEmpty());
126+
assertTrue(ErrorMessages.INVALID_PARAMETER_VALUE.contains("parameter value"));
127+
}
128+
129+
@Test
130+
void testInvalidQueryUrlMessage() {
131+
assertNotNull(ErrorMessages.INVALID_QUERY_URL);
132+
assertFalse(ErrorMessages.INVALID_QUERY_URL.isEmpty());
133+
assertTrue(ErrorMessages.INVALID_QUERY_URL.contains("URL"));
134+
}
135+
136+
@Test
137+
void testInvalidDateFormatMessage() {
138+
assertNotNull(ErrorMessages.INVALID_DATE_FORMAT);
139+
assertFalse(ErrorMessages.INVALID_DATE_FORMAT.isEmpty());
140+
assertTrue(ErrorMessages.INVALID_DATE_FORMAT.contains("date format"));
141+
}
142+
143+
// ========== DATA TYPE ERRORS TESTS ==========
144+
145+
@Test
146+
void testInvalidAssetsTypeMessage() {
147+
assertNotNull(ErrorMessages.INVALID_ASSETS_TYPE);
148+
assertFalse(ErrorMessages.INVALID_ASSETS_TYPE.isEmpty());
149+
assertTrue(ErrorMessages.INVALID_ASSETS_TYPE.contains("assets"));
150+
}
151+
152+
@Test
153+
void testInvalidObjectTypeAssetModelMessage() {
154+
assertNotNull(ErrorMessages.INVALID_OBJECT_TYPE_ASSET_MODEL);
155+
assertFalse(ErrorMessages.INVALID_OBJECT_TYPE_ASSET_MODEL.isEmpty());
156+
assertTrue(ErrorMessages.INVALID_OBJECT_TYPE_ASSET_MODEL.contains("AssetModel"));
157+
}
158+
159+
@Test
160+
void testInvalidContentTypeDataMessage() {
161+
assertNotNull(ErrorMessages.INVALID_CONTENT_TYPE_DATA);
162+
assertFalse(ErrorMessages.INVALID_CONTENT_TYPE_DATA.isEmpty());
163+
assertTrue(ErrorMessages.INVALID_CONTENT_TYPE_DATA.contains("content type"));
164+
}
165+
166+
@Test
167+
void testInvalidContentTypesListMessage() {
168+
assertNotNull(ErrorMessages.INVALID_CONTENT_TYPES_LIST);
169+
assertFalse(ErrorMessages.INVALID_CONTENT_TYPES_LIST.isEmpty());
170+
}
171+
172+
@Test
173+
void testInvalidGlobalFieldDataMessage() {
174+
assertNotNull(ErrorMessages.INVALID_GLOBAL_FIELD_DATA);
175+
assertFalse(ErrorMessages.INVALID_GLOBAL_FIELD_DATA.isEmpty());
176+
assertTrue(ErrorMessages.INVALID_GLOBAL_FIELD_DATA.contains("global field"));
177+
}
178+
179+
@Test
180+
void testInvalidGlobalFieldsListMessage() {
181+
assertNotNull(ErrorMessages.INVALID_GLOBAL_FIELDS_LIST);
182+
assertFalse(ErrorMessages.INVALID_GLOBAL_FIELDS_LIST.isEmpty());
183+
}
184+
185+
// ========== MISSING DATA ERRORS TESTS ==========
186+
187+
@Test
188+
void testMissingAssetsListMessage() {
189+
assertNotNull(ErrorMessages.MISSING_ASSETS_LIST);
190+
assertFalse(ErrorMessages.MISSING_ASSETS_LIST.isEmpty());
191+
assertTrue(ErrorMessages.MISSING_ASSETS_LIST.contains("assets"));
192+
}
193+
194+
@Test
195+
void testMissingJsonObjectSyncMessage() {
196+
assertNotNull(ErrorMessages.MISSING_JSON_OBJECT_SYNC);
197+
assertFalse(ErrorMessages.MISSING_JSON_OBJECT_SYNC.isEmpty());
198+
assertTrue(ErrorMessages.MISSING_JSON_OBJECT_SYNC.contains("sync"));
199+
}
200+
201+
// ========== NETWORK & CONNECTION ERRORS TESTS ==========
202+
203+
@Test
204+
void testUrlParameterEncodingFailedMessage() {
205+
assertNotNull(ErrorMessages.URL_PARAMETER_ENCODING_FAILED);
206+
assertFalse(ErrorMessages.URL_PARAMETER_ENCODING_FAILED.isEmpty());
207+
assertTrue(ErrorMessages.URL_PARAMETER_ENCODING_FAILED.contains("encoding"));
208+
}
209+
210+
@Test
211+
void testLivePreviewUrlFailedMessage() {
212+
assertNotNull(ErrorMessages.LIVE_PREVIEW_URL_FAILED);
213+
assertFalse(ErrorMessages.LIVE_PREVIEW_URL_FAILED.isEmpty());
214+
assertTrue(ErrorMessages.LIVE_PREVIEW_URL_FAILED.contains("Live Preview"));
215+
}
216+
217+
@Test
218+
void testTaxonomyQueryFailedMessage() {
219+
assertNotNull(ErrorMessages.TAXONOMY_QUERY_FAILED);
220+
assertFalse(ErrorMessages.TAXONOMY_QUERY_FAILED.isEmpty());
221+
assertTrue(ErrorMessages.TAXONOMY_QUERY_FAILED.contains("taxonomy"));
222+
}
223+
224+
@Test
225+
void testInvalidJsonResponseMessage() {
226+
assertNotNull(ErrorMessages.INVALID_JSON_RESPONSE);
227+
assertFalse(ErrorMessages.INVALID_JSON_RESPONSE.isEmpty());
228+
assertTrue(ErrorMessages.INVALID_JSON_RESPONSE.contains("JSON"));
229+
}
230+
231+
// ========== CONFIGURATION ERRORS TESTS ==========
232+
233+
@Test
234+
void testMissingPreviewTokenMessage() {
235+
assertNotNull(ErrorMessages.MISSING_PREVIEW_TOKEN);
236+
assertFalse(ErrorMessages.MISSING_PREVIEW_TOKEN.isEmpty());
237+
assertTrue(ErrorMessages.MISSING_PREVIEW_TOKEN.contains("preview token"));
238+
}
239+
240+
@Test
241+
void testLivePreviewNotEnabledMessage() {
242+
assertNotNull(ErrorMessages.LIVE_PREVIEW_NOT_ENABLED);
243+
assertFalse(ErrorMessages.LIVE_PREVIEW_NOT_ENABLED.isEmpty());
244+
assertTrue(ErrorMessages.LIVE_PREVIEW_NOT_ENABLED.contains("Live Preview"));
245+
}
246+
247+
@Test
248+
void testEmbeddedItemsNotIncludedMessage() {
249+
assertNotNull(ErrorMessages.EMBEDDED_ITEMS_NOT_INCLUDED);
250+
assertFalse(ErrorMessages.EMBEDDED_ITEMS_NOT_INCLUDED.isEmpty());
251+
assertTrue(ErrorMessages.EMBEDDED_ITEMS_NOT_INCLUDED.contains("Embedded items"));
252+
}
253+
254+
// ========== OPERATION ERRORS TESTS ==========
255+
256+
@Test
257+
void testEntryFetchFailedMessage() {
258+
assertNotNull(ErrorMessages.ENTRY_FETCH_FAILED);
259+
assertFalse(ErrorMessages.ENTRY_FETCH_FAILED.isEmpty());
260+
assertTrue(ErrorMessages.ENTRY_FETCH_FAILED.contains("Entry fetch"));
261+
}
262+
263+
@Test
264+
void testQueryExecutionFailedMessage() {
265+
assertNotNull(ErrorMessages.QUERY_EXECUTION_FAILED);
266+
assertFalse(ErrorMessages.QUERY_EXECUTION_FAILED.isEmpty());
267+
assertTrue(ErrorMessages.QUERY_EXECUTION_FAILED.contains("Query"));
268+
}
269+
270+
@Test
271+
void testEntriesProcessingFailedMessage() {
272+
assertNotNull(ErrorMessages.ENTRIES_PROCESSING_FAILED);
273+
assertFalse(ErrorMessages.ENTRIES_PROCESSING_FAILED.isEmpty());
274+
assertTrue(ErrorMessages.ENTRIES_PROCESSING_FAILED.contains("entries"));
275+
}
276+
277+
@Test
278+
void testGroupDateParsingFailedMessage() {
279+
assertNotNull(ErrorMessages.GROUP_DATE_PARSING_FAILED);
280+
assertFalse(ErrorMessages.GROUP_DATE_PARSING_FAILED.isEmpty());
281+
assertTrue(ErrorMessages.GROUP_DATE_PARSING_FAILED.contains("date"));
282+
}
283+
284+
@Test
285+
void testQueryResultProcessingFailedMessage() {
286+
assertNotNull(ErrorMessages.QUERY_RESULT_PROCESSING_FAILED);
287+
assertFalse(ErrorMessages.QUERY_RESULT_PROCESSING_FAILED.isEmpty());
288+
assertTrue(ErrorMessages.QUERY_RESULT_PROCESSING_FAILED.contains("query result"));
289+
}
290+
291+
// ========== COMPREHENSIVE ERROR MESSAGE FORMAT TESTS ==========
292+
293+
@Test
294+
void testAllErrorMessagesAreNonNull() {
295+
assertNotNull(ErrorMessages.MISSING_API_KEY);
296+
assertNotNull(ErrorMessages.MISSING_DELIVERY_TOKEN);
297+
assertNotNull(ErrorMessages.MISSING_ENVIRONMENT);
298+
assertNotNull(ErrorMessages.MISSING_REQUEST_HEADERS);
299+
assertNotNull(ErrorMessages.DIRECT_INSTANTIATION_STACK);
300+
assertNotNull(ErrorMessages.DIRECT_INSTANTIATION_CONTENTSTACK);
301+
assertNotNull(ErrorMessages.DIRECT_INSTANTIATION_CONTENT_TYPE);
302+
assertNotNull(ErrorMessages.DIRECT_INSTANTIATION_ENTRY);
303+
assertNotNull(ErrorMessages.CONTENT_TYPE_UID_REQUIRED);
304+
assertNotNull(ErrorMessages.ENTRY_UID_REQUIRED);
305+
assertNotNull(ErrorMessages.GLOBAL_FIELD_UID_REQUIRED);
306+
}
307+
308+
@Test
309+
void testAllErrorMessagesHaveMinimumLength() {
310+
assertTrue(ErrorMessages.MISSING_API_KEY.length() > 20);
311+
assertTrue(ErrorMessages.MISSING_DELIVERY_TOKEN.length() > 20);
312+
assertTrue(ErrorMessages.DIRECT_INSTANTIATION_STACK.length() > 20);
313+
assertTrue(ErrorMessages.CONTENT_TYPE_UID_REQUIRED.length() > 20);
314+
}
315+
}
316+

0 commit comments

Comments
 (0)