Skip to content

Commit 842908e

Browse files
committed
Feat: Added Bulk Operations Support in Management SDK
1 parent 98ccdd1 commit 842908e

File tree

16 files changed

+3654
-0
lines changed

16 files changed

+3654
-0
lines changed
Lines changed: 354 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,354 @@
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

Comments
 (0)