1+ package com .contentstack .cms .stack ;
2+
3+ import com .contentstack .cms .TestClient ;
4+ import com .contentstack .cms .core .Util ;
5+ import okhttp3 .Request ;
6+ import org .json .simple .JSONArray ;
7+ import org .json .simple .JSONObject ;
8+ import org .junit .jupiter .api .*;
9+
10+ import java .util .HashMap ;
11+
12+ @ Tag ("unit" )
13+ @ TestMethodOrder (MethodOrderer .OrderAnnotation .class )
14+ class ReleaseItemAPITest {
15+
16+ protected static String API_KEY = TestClient .API_KEY ;
17+ protected static String MANAGEMENT_TOKEN = TestClient .MANAGEMENT_TOKEN ;
18+ protected static String RELEASE_UID = "test_release_uid" ;
19+ protected static Stack stack ;
20+ protected static ReleaseItem releaseItem ;
21+
22+ @ BeforeAll
23+ static void setup () {
24+ HashMap <String , Object > headers = new HashMap <>();
25+ headers .put (Util .API_KEY , API_KEY );
26+ headers .put (Util .AUTHORIZATION , MANAGEMENT_TOKEN );
27+ stack = TestClient .getStack (); // Remove the "Stack" type declaration to use the class field
28+ releaseItem = stack .releases (RELEASE_UID ).item ();
29+ releaseItem .addHeader ("testHeader" , "testValue" );
30+ }
31+
32+ @ Test
33+ @ Order (1 )
34+ void testFind () {
35+ releaseItem .addParam ("include_count" , "true" );
36+ Request request = releaseItem .find ().request ();
37+
38+ Assertions .assertEquals ("GET" , request .method ());
39+ Assertions .assertTrue (request .url ().isHttps ());
40+ Assertions .assertEquals ("api.contentstack.io" , request .url ().host ());
41+ Assertions .assertTrue (request .url ().pathSegments ().contains ("items" ));
42+ Assertions .assertTrue (request .url ().toString ().contains (RELEASE_UID ));
43+ Assertions .assertTrue (request .url ().toString ().contains ("include_count=true" ));
44+ }
45+
46+ @ Test
47+ @ Order (2 )
48+ void testCreate () {
49+ // Prepare test request body
50+ JSONObject requestBody = new JSONObject ();
51+ JSONObject item = new JSONObject ();
52+ item .put ("uid" , "entry123" );
53+ item .put ("content_type_uid" , "blog" );
54+ item .put ("locale" , "en-us" );
55+ item .put ("version" , 1 );
56+ requestBody .put ("item" , item );
57+
58+ Request request = releaseItem .create (requestBody ).request ();
59+
60+ Assertions .assertEquals ("POST" , request .method ());
61+ Assertions .assertTrue (request .url ().isHttps ());
62+ Assertions .assertTrue (request .url ().pathSegments ().contains ("item" ));
63+ Assertions .assertTrue (request .url ().toString ().contains (RELEASE_UID ));
64+ Assertions .assertNotNull (request .body ());
65+ }
66+
67+ @ Test
68+ @ Order (3 )
69+ void testCreateMultiple () {
70+ // Prepare test request body for multiple items
71+ JSONObject requestBody = new JSONObject ();
72+ JSONArray items = new JSONArray ();
73+
74+ JSONObject item1 = new JSONObject ();
75+ item1 .put ("uid" , "entry123" );
76+ item1 .put ("content_type_uid" , "blog" );
77+ item1 .put ("locale" , "en-us" );
78+
79+ JSONObject item2 = new JSONObject ();
80+ item2 .put ("uid" , "asset456" );
81+ item2 .put ("action" , "publish" );
82+
83+ items .add (item1 );
84+ items .add (item2 );
85+ requestBody .put ("items" , items );
86+
87+ // Add bulk parameter
88+ releaseItem .addParam ("bulk" , true );
89+
90+ Request request = releaseItem .createMultiple (requestBody ).request ();
91+
92+ Assertions .assertEquals ("POST" , request .method ());
93+ Assertions .assertTrue (request .url ().isHttps ());
94+ Assertions .assertTrue (request .url ().toString ().contains (RELEASE_UID ));
95+ Assertions .assertTrue (request .url ().toString ().contains ("items" ));
96+ Assertions .assertTrue (request .url ().toString ().contains ("bulk=true" ));
97+ Assertions .assertNotNull (request .body ());
98+ }
99+
100+ @ Test
101+ @ Order (4 )
102+ void testUpdate () {
103+ Request request = releaseItem .update (new JSONObject ()).request ();
104+
105+ Assertions .assertEquals ("PUT" , request .method ());
106+ Assertions .assertTrue (request .url ().isHttps ());
107+ Assertions .assertTrue (request .url ().toString ().contains (RELEASE_UID ));
108+
109+ Assertions .assertNotNull (request .body ());
110+ }
111+
112+ @ Test
113+ @ Order (5 )
114+ void testDelete () {
115+ Request request = releaseItem .delete ().request ();
116+
117+ Assertions .assertEquals ("DELETE" , request .method ());
118+ Assertions .assertTrue (request .url ().isHttps ());
119+ Assertions .assertTrue (request .url ().toString ().contains (RELEASE_UID ));
120+ Assertions .assertTrue (request .url ().pathSegments ().contains ("items" ));
121+ }
122+
123+ @ Test
124+ @ Order (6 )
125+ void testDeleteReleaseItems () {
126+
127+ Request request = releaseItem .deleteReleaseItems (new JSONObject ()).request ();
128+
129+ Assertions .assertEquals ("DELETE" , request .method ());
130+ Assertions .assertTrue (request .url ().isHttps ());
131+ Assertions .assertTrue (request .url ().toString ().contains (RELEASE_UID ));
132+ Assertions .assertTrue (request .url ().pathSegments ().contains ("items" ));
133+ Assertions .assertNotNull (request .body ());
134+ }
135+
136+ @ Test
137+ @ Order (7 )
138+ void testDeleteReleaseItem () {
139+
140+ Request request = releaseItem .deleteReleaseItem (new JSONObject ()).request ();
141+
142+ Assertions .assertEquals ("DELETE" , request .method ());
143+ Assertions .assertTrue (request .url ().isHttps ());
144+ Assertions .assertTrue (request .url ().toString ().contains (RELEASE_UID ));
145+ Assertions .assertTrue (request .url ().pathSegments ().contains ("item" ));
146+ Assertions .assertNotNull (request .body ());
147+ }
148+
149+ @ Test
150+ @ Order (8 )
151+ void testMove () {
152+ Request request = releaseItem .move (new JSONObject ()).request ();
153+
154+ Assertions .assertEquals ("POST" , request .method ());
155+ Assertions .assertTrue (request .url ().isHttps ());
156+ Assertions .assertTrue (request .url ().toString ().contains (RELEASE_UID ));
157+ Assertions .assertTrue (request .url ().pathSegments ().contains ("move" ));
158+ Assertions .assertNotNull (request .body ());
159+
160+ // Verify release_version header was added
161+ // Assertions.assertEquals("2.0", Objects.requireNonNull(request.headers().get("release_version")));
162+ }
163+
164+ @ Test
165+ @ Order (9 )
166+ void testParamsManagement () {
167+ releaseItem .clearParams ();
168+ releaseItem .addParam ("test_key" , "test_value" );
169+
170+ Request request = releaseItem .find ().request ();
171+
172+ Assertions .assertTrue (request .url ().toString ().contains ("test_key=test_value" ));
173+
174+ releaseItem .removeParam ("test_key" );
175+ request = releaseItem .find ().request ();
176+
177+ Assertions .assertFalse (request .url ().toString ().contains ("test_key=test_value" ));
178+ }
179+
180+ @ Test
181+ @ Order (10 )
182+ void testHeadersManagement () {
183+ releaseItem .addHeader ("custom_header" , "custom_value" );
184+
185+ Request request = releaseItem .find ().request ();
186+
187+ Assertions .assertEquals ("custom_value" , request .headers ().get ("custom_header" ));
188+ }
189+ }
0 commit comments