1+ using System . Collections . Generic ;
2+ using System . Linq ;
3+ using Microsoft . VisualStudio . TestTools . UnitTesting ;
4+ using Newtonsoft . Json ;
5+ using Contentstack . Management . Core . Models ;
6+
7+ namespace Contentstack . Management . Core . Unit . Tests . Models . BulkOperation
8+ {
9+ [ TestClass ]
10+ public class BulkOperationModelsTest
11+ {
12+ [ TestMethod ]
13+ public void BulkPublishDetails_Serialization_Test ( )
14+ {
15+ // Arrange
16+ var details = new BulkPublishDetails
17+ {
18+ Entries = new List < BulkPublishEntry >
19+ {
20+ new BulkPublishEntry
21+ {
22+ Uid = "entry_uid_1" ,
23+ ContentType = "content_type_1" ,
24+ Version = 1 ,
25+ Locale = "en-us"
26+ } ,
27+ new BulkPublishEntry
28+ {
29+ Uid = "entry_uid_2" ,
30+ ContentType = "content_type_2" ,
31+ Version = 2 ,
32+ Locale = "en-gb"
33+ }
34+ } ,
35+ Assets = new List < BulkPublishAsset >
36+ {
37+ new BulkPublishAsset { Uid = "asset_uid_1" } ,
38+ new BulkPublishAsset { Uid = "asset_uid_2" }
39+ } ,
40+ Locales = new List < string > { "en-us" , "en-gb" } ,
41+ Environments = new List < string > { "env_1" , "env_2" }
42+ } ;
43+
44+ // Act
45+ var json = JsonConvert . SerializeObject ( details ) ;
46+ var deserialized = JsonConvert . DeserializeObject < BulkPublishDetails > ( json ) ;
47+
48+ // Assert
49+ Assert . IsNotNull ( deserialized ) ;
50+ Assert . AreEqual ( 2 , deserialized . Entries . Count ) ;
51+ Assert . AreEqual ( 2 , deserialized . Assets . Count ) ;
52+ Assert . AreEqual ( 2 , deserialized . Locales . Count ) ;
53+ Assert . AreEqual ( 2 , deserialized . Environments . Count ) ;
54+
55+ var firstEntry = deserialized . Entries . First ( ) ;
56+ Assert . AreEqual ( "entry_uid_1" , firstEntry . Uid ) ;
57+ Assert . AreEqual ( "content_type_1" , firstEntry . ContentType ) ;
58+ Assert . AreEqual ( 1 , firstEntry . Version ) ;
59+ Assert . AreEqual ( "en-us" , firstEntry . Locale ) ;
60+
61+ var firstAsset = deserialized . Assets . First ( ) ;
62+ Assert . AreEqual ( "asset_uid_1" , firstAsset . Uid ) ;
63+ }
64+
65+ [ TestMethod ]
66+ public void BulkPublishEntry_WithContentType_Serialization_Test ( )
67+ {
68+ // Arrange
69+ var entry = new BulkPublishEntry
70+ {
71+ Uid = "entry_uid" ,
72+ ContentType = "content_type_1" ,
73+ Version = 1 ,
74+ Locale = "en-us"
75+ } ;
76+
77+ // Act
78+ var json = JsonConvert . SerializeObject ( entry ) ;
79+ var deserialized = JsonConvert . DeserializeObject < BulkPublishEntry > ( json ) ;
80+
81+ // Assert
82+ Assert . IsNotNull ( deserialized ) ;
83+ Assert . AreEqual ( "entry_uid" , deserialized . Uid ) ;
84+ Assert . AreEqual ( "content_type_1" , deserialized . ContentType ) ;
85+ Assert . AreEqual ( 1 , deserialized . Version ) ;
86+ Assert . AreEqual ( "en-us" , deserialized . Locale ) ;
87+ }
88+
89+ [ TestMethod ]
90+ public void BulkDeleteDetails_Serialization_Test ( )
91+ {
92+ // Arrange
93+ var details = new BulkDeleteDetails
94+ {
95+ Entries = new List < BulkDeleteEntry >
96+ {
97+ new BulkDeleteEntry
98+ {
99+ Uid = "entry_uid_1" ,
100+ ContentType = "content_type_1" ,
101+ Locale = "en-us"
102+ } ,
103+ new BulkDeleteEntry
104+ {
105+ Uid = "entry_uid_2" ,
106+ ContentType = "content_type_2" ,
107+ Locale = "en-gb"
108+ }
109+ } ,
110+ Assets = new List < BulkDeleteAsset >
111+ {
112+ new BulkDeleteAsset { Uid = "asset_uid_1" } ,
113+ new BulkDeleteAsset { Uid = "asset_uid_2" }
114+ }
115+ } ;
116+
117+ // Act
118+ var json = JsonConvert . SerializeObject ( details ) ;
119+ var deserialized = JsonConvert . DeserializeObject < BulkDeleteDetails > ( json ) ;
120+
121+ // Assert
122+ Assert . IsNotNull ( deserialized ) ;
123+ Assert . AreEqual ( 2 , deserialized . Entries . Count ) ;
124+ Assert . AreEqual ( 2 , deserialized . Assets . Count ) ;
125+
126+ var firstEntry = deserialized . Entries . First ( ) ;
127+ Assert . AreEqual ( "entry_uid_1" , firstEntry . Uid ) ;
128+ Assert . AreEqual ( "content_type_1" , firstEntry . ContentType ) ;
129+ Assert . AreEqual ( "en-us" , firstEntry . Locale ) ;
130+ }
131+
132+ [ TestMethod ]
133+ public void BulkWorkflowUpdateBody_Serialization_Test ( )
134+ {
135+ // Arrange
136+ var updateBody = new BulkWorkflowUpdateBody
137+ {
138+ Entries = new List < BulkWorkflowEntry >
139+ {
140+ new BulkWorkflowEntry
141+ {
142+ Uid = "entry_uid_1" ,
143+ ContentType = "content_type_1" ,
144+ Locale = "en-us"
145+ }
146+ } ,
147+ Workflow = new BulkWorkflowStage
148+ {
149+ Uid = "workflow_stage_uid" ,
150+ Comment = "Test comment" ,
151+ DueDate = "2023-12-01" ,
152+ Notify = true ,
153+ AssignedTo = new List < BulkWorkflowUser >
154+ {
155+ new BulkWorkflowUser
156+ {
157+ Uid = "user_uid" ,
158+ Name = "Test User" ,
159+ Email = "test@example.com"
160+ }
161+ } ,
162+ AssignedByRoles = new List < BulkWorkflowRole >
163+ {
164+ new BulkWorkflowRole
165+ {
166+ Uid = "role_uid" ,
167+ Name = "Test Role"
168+ }
169+ }
170+ }
171+ } ;
172+
173+ // Act
174+ var json = JsonConvert . SerializeObject ( updateBody ) ;
175+ var deserialized = JsonConvert . DeserializeObject < BulkWorkflowUpdateBody > ( json ) ;
176+
177+ // Assert
178+ Assert . IsNotNull ( deserialized ) ;
179+ Assert . AreEqual ( 1 , deserialized . Entries . Count ) ;
180+ Assert . IsNotNull ( deserialized . Workflow ) ;
181+
182+ var entry = deserialized . Entries . First ( ) ;
183+ Assert . AreEqual ( "entry_uid_1" , entry . Uid ) ;
184+ Assert . AreEqual ( "content_type_1" , entry . ContentType ) ;
185+ Assert . AreEqual ( "en-us" , entry . Locale ) ;
186+
187+ var workflow = deserialized . Workflow ;
188+ Assert . AreEqual ( "workflow_stage_uid" , workflow . Uid ) ;
189+ Assert . AreEqual ( "Test comment" , workflow . Comment ) ;
190+ Assert . AreEqual ( "2023-12-01" , workflow . DueDate ) ;
191+ Assert . IsTrue ( workflow . Notify ) ;
192+ Assert . AreEqual ( 1 , workflow . AssignedTo . Count ) ;
193+ Assert . AreEqual ( 1 , workflow . AssignedByRoles . Count ) ;
194+
195+ var user = workflow . AssignedTo . First ( ) ;
196+ Assert . AreEqual ( "user_uid" , user . Uid ) ;
197+ Assert . AreEqual ( "Test User" , user . Name ) ;
198+ Assert . AreEqual ( "test@example.com" , user . Email ) ;
199+
200+ var role = workflow . AssignedByRoles . First ( ) ;
201+ Assert . AreEqual ( "role_uid" , role . Uid ) ;
202+ Assert . AreEqual ( "Test Role" , role . Name ) ;
203+ }
204+
205+ [ TestMethod ]
206+ public void BulkAddItemsData_Serialization_Test ( )
207+ {
208+ // Arrange
209+ var data = new BulkAddItemsData
210+ {
211+ Items = new List < BulkAddItem >
212+ {
213+ new BulkAddItem
214+ {
215+ Uid = "entry_uid_1" ,
216+ ContentType = "content_type_1"
217+ } ,
218+ new BulkAddItem
219+ {
220+ Uid = "entry_uid_2" ,
221+ ContentType = "content_type_2"
222+ }
223+ }
224+ } ;
225+
226+ // Act
227+ var json = JsonConvert . SerializeObject ( data ) ;
228+ var deserialized = JsonConvert . DeserializeObject < BulkAddItemsData > ( json ) ;
229+
230+ // Assert
231+ Assert . IsNotNull ( deserialized ) ;
232+ Assert . AreEqual ( 2 , deserialized . Items . Count ) ;
233+
234+ var firstItem = deserialized . Items . First ( ) ;
235+ Assert . AreEqual ( "entry_uid_1" , firstItem . Uid ) ;
236+ Assert . AreEqual ( "content_type_1" , firstItem . ContentType ) ;
237+ }
238+
239+ [ TestMethod ]
240+ public void BulkPublishDetails_EmptyCollections_Test ( )
241+ {
242+ // Arrange
243+ var details = new BulkPublishDetails ( ) ;
244+
245+ // Act
246+ var json = JsonConvert . SerializeObject ( details ) ;
247+ var deserialized = JsonConvert . DeserializeObject < BulkPublishDetails > ( json ) ;
248+
249+ // Assert
250+ Assert . IsNotNull ( deserialized ) ;
251+ Assert . IsNotNull ( deserialized . Entries ) ;
252+ Assert . IsNotNull ( deserialized . Assets ) ;
253+ Assert . IsNotNull ( deserialized . Locales ) ;
254+ Assert . IsNotNull ( deserialized . Environments ) ;
255+ Assert . AreEqual ( 0 , deserialized . Entries . Count ) ;
256+ Assert . AreEqual ( 0 , deserialized . Assets . Count ) ;
257+ Assert . AreEqual ( 0 , deserialized . Locales . Count ) ;
258+ Assert . AreEqual ( 0 , deserialized . Environments . Count ) ;
259+ }
260+
261+ [ TestMethod ]
262+ public void BulkPublishDetails_WithRulesAndScheduling_Test ( )
263+ {
264+ // Arrange
265+ var details = new BulkPublishDetails
266+ {
267+ Entries = new List < BulkPublishEntry >
268+ {
269+ new BulkPublishEntry
270+ {
271+ Uid = "uid" ,
272+ ContentType = "ct0" ,
273+ Version = 5 ,
274+ Locale = "en-us"
275+ }
276+ } ,
277+ Locales = new List < string > { "en-us" } ,
278+ Environments = new List < string > { "env1" } ,
279+ Rules = new BulkPublishRules
280+ {
281+ Approvals = "true"
282+ } ,
283+ ScheduledAt = "2023-12-01T10:00:00Z" ,
284+ PublishWithReference = true
285+ } ;
286+
287+ // Act
288+ var json = JsonConvert . SerializeObject ( details ) ;
289+ var deserialized = JsonConvert . DeserializeObject < BulkPublishDetails > ( json ) ;
290+
291+ // Assert
292+ Assert . IsNotNull ( deserialized ) ;
293+ Assert . AreEqual ( 1 , deserialized . Entries . Count ) ;
294+ Assert . AreEqual ( 1 , deserialized . Locales . Count ) ;
295+ Assert . AreEqual ( 1 , deserialized . Environments . Count ) ;
296+ Assert . IsNotNull ( deserialized . Rules ) ;
297+ Assert . AreEqual ( "true" , deserialized . Rules . Approvals ) ;
298+ Assert . AreEqual ( "2023-12-01T10:00:00Z" , deserialized . ScheduledAt ) ;
299+ Assert . IsTrue ( deserialized . PublishWithReference ) ;
300+
301+ var entry = deserialized . Entries . First ( ) ;
302+ Assert . AreEqual ( "uid" , entry . Uid ) ;
303+ Assert . AreEqual ( "ct0" , entry . ContentType ) ;
304+ Assert . AreEqual ( 5 , entry . Version ) ;
305+ Assert . AreEqual ( "en-us" , entry . Locale ) ;
306+ }
307+
308+ [ TestMethod ]
309+ public void BulkWorkflowStage_EmptyCollections_Test ( )
310+ {
311+ // Arrange
312+ var workflowStage = new BulkWorkflowStage
313+ {
314+ Uid = "test_uid" ,
315+ Comment = "test_comment"
316+ } ;
317+
318+ // Act
319+ var json = JsonConvert . SerializeObject ( workflowStage ) ;
320+ var deserialized = JsonConvert . DeserializeObject < BulkWorkflowStage > ( json ) ;
321+
322+ // Assert
323+ Assert . IsNotNull ( deserialized ) ;
324+ Assert . AreEqual ( "test_uid" , deserialized . Uid ) ;
325+ Assert . AreEqual ( "test_comment" , deserialized . Comment ) ;
326+ Assert . IsNotNull ( deserialized . AssignedTo ) ;
327+ Assert . IsNotNull ( deserialized . AssignedByRoles ) ;
328+ Assert . AreEqual ( 0 , deserialized . AssignedTo . Count ) ;
329+ Assert . AreEqual ( 0 , deserialized . AssignedByRoles . Count ) ;
330+ }
331+
332+ [ TestMethod ]
333+ public void BulkPublishEntry_NullValues_Test ( )
334+ {
335+ // Arrange
336+ var entry = new BulkPublishEntry
337+ {
338+ Uid = "entry_uid"
339+ // Version is null by default
340+ } ;
341+
342+ // Act
343+ var json = JsonConvert . SerializeObject ( entry ) ;
344+ var deserialized = JsonConvert . DeserializeObject < BulkPublishEntry > ( json ) ;
345+
346+ // Assert
347+ Assert . IsNotNull ( deserialized ) ;
348+ Assert . AreEqual ( "entry_uid" , deserialized . Uid ) ;
349+ Assert . AreEqual ( 0 , deserialized . Version ) ; // int defaults to 0, not null
350+ Assert . IsNull ( deserialized . ContentType ) ;
351+ Assert . IsNull ( deserialized . Locale ) ;
352+ }
353+ }
354+ }
0 commit comments