Skip to content

Commit bcaa241

Browse files
authored
Merge pull request #90 from contentstack/staging
DX | 21-07-2025 | Release
2 parents a95baeb + ba9716b commit bcaa241

File tree

52 files changed

+10741
-27
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+10741
-27
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
# Changelog
2+
## [v0.3.0](https://github.com/contentstack/contentstack-management-dotnet/tree/v0.3.0)
3+
- Feat
4+
- Bulk Operations:
5+
- Added Support for the bulk operations of Publish, Unpublish, Delete, Workflow Update, addRelease Items, Update Release Items, Job-Status both sync and async methods
6+
- Nested Global Fields:
7+
Added the support for the nested global fields for all the CRUD Operations
8+
19
# Changelog
210
## [v0.2.0](https://github.com/contentstack/contentstack-management-dotnet/tree/v0.2.0)
311
- Fix

Contentstack.Management.Core.Tests/IntegrationTest/Contentstack011_GlobalFieldTest.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,19 @@ public void Test006_Should_Query_Global_Field()
107107

108108
[TestMethod]
109109
[DoNotParallelize]
110-
public async System.Threading.Tasks.Task Test007_Should_Update_Async_Global_Field()
110+
public void Test006a_Should_Query_Global_Field_With_ApiVersion()
111+
{
112+
ContentstackResponse response = _stack.GlobalField(apiVersion: "3.2").Query().Find();
113+
GlobalFieldsModel globalField = response.OpenTResponse<GlobalFieldsModel>();
114+
Assert.IsNotNull(response);
115+
Assert.IsNotNull(globalField);
116+
Assert.IsNotNull(globalField.Modellings);
117+
Assert.AreEqual(1, globalField.Modellings.Count);
118+
}
119+
120+
[TestMethod]
121+
[DoNotParallelize]
122+
public async System.Threading.Tasks.Task Test007_Should_Query_Async_Global_Field()
111123
{
112124
ContentstackResponse response = await _stack.GlobalField().Query().FindAsync();
113125
GlobalFieldsModel globalField = response.OpenTResponse<GlobalFieldsModel>();
@@ -116,5 +128,17 @@ public async System.Threading.Tasks.Task Test007_Should_Update_Async_Global_Fiel
116128
Assert.IsNotNull(globalField.Modellings);
117129
Assert.AreEqual(1, globalField.Modellings.Count);
118130
}
131+
132+
[TestMethod]
133+
[DoNotParallelize]
134+
public async System.Threading.Tasks.Task Test007a_Should_Query_Async_Global_Field_With_ApiVersion()
135+
{
136+
ContentstackResponse response = await _stack.GlobalField(apiVersion: "3.2").Query().FindAsync();
137+
GlobalFieldsModel globalField = response.OpenTResponse<GlobalFieldsModel>();
138+
Assert.IsNotNull(response);
139+
Assert.IsNotNull(globalField);
140+
Assert.IsNotNull(globalField.Modellings);
141+
Assert.AreEqual(1, globalField.Modellings.Count);
142+
}
119143
}
120144
}
Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Threading.Tasks;
6+
using AutoFixture;
7+
using Contentstack.Management.Core.Models;
8+
using Contentstack.Management.Core.Models.Fields;
9+
using Contentstack.Management.Core.Queryable;
10+
using Contentstack.Management.Core.Tests.Model;
11+
using Microsoft.VisualStudio.TestTools.UnitTesting;
12+
13+
namespace Contentstack.Management.Core.Tests.IntegrationTest
14+
{
15+
[TestClass]
16+
public class Contentstack008_NestedGlobalFieldTest
17+
{
18+
private Stack _stack;
19+
20+
[TestInitialize]
21+
public void Initialize()
22+
{
23+
StackResponse response = StackResponse.getStack(Contentstack.Client.serializer);
24+
_stack = Contentstack.Client.Stack(response.Stack.APIKey);
25+
}
26+
27+
private ContentModelling CreateReferencedGlobalFieldModel()
28+
{
29+
return new ContentModelling
30+
{
31+
Title = "Referenced Global Field",
32+
Uid = "referenced_global_field",
33+
Description = "A global field that will be referenced by another global field",
34+
Schema = new List<Field>
35+
{
36+
new TextboxField
37+
{
38+
DisplayName = "Title",
39+
Uid = "title",
40+
DataType = "text",
41+
Mandatory = true,
42+
Unique = true,
43+
FieldMetadata = new FieldMetadata
44+
{
45+
Default = "true"
46+
}
47+
},
48+
new TextboxField
49+
{
50+
DisplayName = "Description",
51+
Uid = "description",
52+
DataType = "text",
53+
Mandatory = false,
54+
FieldMetadata = new FieldMetadata
55+
{
56+
Description = "A description field"
57+
}
58+
}
59+
}
60+
};
61+
}
62+
63+
private ContentModelling CreateNestedGlobalFieldModel()
64+
{
65+
return new ContentModelling
66+
{
67+
Title = "Nested Global Field Test",
68+
Uid = "nested_global_field_test",
69+
Description = "Test nested global field for .NET SDK",
70+
Schema = new List<Field>
71+
{
72+
new TextboxField
73+
{
74+
DisplayName = "Single Line Textbox",
75+
Uid = "single_line",
76+
DataType = "text",
77+
Mandatory = false,
78+
Multiple = false,
79+
Unique = false,
80+
FieldMetadata = new FieldMetadata
81+
{
82+
Description = "",
83+
DefaultValue = "",
84+
Version = 3
85+
}
86+
},
87+
new GlobalFieldReference
88+
{
89+
DisplayName = "Global Field Reference",
90+
Uid = "global_field_reference",
91+
DataType = "global_field",
92+
ReferenceTo = "referenced_global_field",
93+
Mandatory = false,
94+
Multiple = false,
95+
Unique = false,
96+
NonLocalizable = false,
97+
FieldMetadata = new FieldMetadata
98+
{
99+
Description = "Reference to another global field"
100+
}
101+
}
102+
},
103+
GlobalFieldRefs = new List<GlobalFieldRefs>
104+
{
105+
new GlobalFieldRefs
106+
{
107+
Uid = "referenced_global_field",
108+
OccurrenceCount = 1,
109+
IsChild = true,
110+
Paths = new List<string> { "schema.1" }
111+
}
112+
}
113+
};
114+
}
115+
116+
[TestMethod]
117+
[DoNotParallelize]
118+
public void Test001_Should_Create_Referenced_Global_Field()
119+
{
120+
var referencedGlobalFieldModel = CreateReferencedGlobalFieldModel();
121+
ContentstackResponse response = _stack.GlobalField().Create(referencedGlobalFieldModel);
122+
GlobalFieldModel globalField = response.OpenTResponse<GlobalFieldModel>();
123+
124+
Assert.IsNotNull(response);
125+
Assert.IsNotNull(globalField);
126+
Assert.IsNotNull(globalField.Modelling);
127+
Assert.AreEqual(referencedGlobalFieldModel.Title, globalField.Modelling.Title);
128+
Assert.AreEqual(referencedGlobalFieldModel.Uid, globalField.Modelling.Uid);
129+
Assert.AreEqual(referencedGlobalFieldModel.Schema.Count, globalField.Modelling.Schema.Count);
130+
}
131+
132+
[TestMethod]
133+
[DoNotParallelize]
134+
public void Test002_Should_Create_Nested_Global_Field()
135+
{
136+
var nestedGlobalFieldModel = CreateNestedGlobalFieldModel();
137+
ContentstackResponse response = _stack.GlobalField().Create(nestedGlobalFieldModel);
138+
GlobalFieldModel globalField = response.OpenTResponse<GlobalFieldModel>();
139+
140+
Assert.IsNotNull(response);
141+
Assert.IsNotNull(globalField);
142+
Assert.IsNotNull(globalField.Modelling);
143+
Assert.AreEqual(nestedGlobalFieldModel.Title, globalField.Modelling.Title);
144+
Assert.AreEqual(nestedGlobalFieldModel.Uid, globalField.Modelling.Uid);
145+
Assert.AreEqual(nestedGlobalFieldModel.Schema.Count, globalField.Modelling.Schema.Count);
146+
147+
}
148+
149+
[TestMethod]
150+
[DoNotParallelize]
151+
public void Test003_Should_Fetch_Nested_Global_Field()
152+
{
153+
154+
ContentstackResponse response = _stack.GlobalField("nested_global_field_test").Fetch();
155+
GlobalFieldModel globalField = response.OpenTResponse<GlobalFieldModel>();
156+
157+
Assert.IsNotNull(response);
158+
Assert.IsNotNull(globalField);
159+
Assert.IsNotNull(globalField.Modelling);
160+
Assert.AreEqual("nested_global_field_test", globalField.Modelling.Uid);
161+
162+
Assert.IsTrue(globalField.Modelling.Schema.Count >= 2);
163+
}
164+
165+
[TestMethod]
166+
[DoNotParallelize]
167+
public async Task Test004_Should_Fetch_Async_Nested_Global_Field()
168+
{
169+
170+
ContentstackResponse response = await _stack.GlobalField("nested_global_field_test").FetchAsync();
171+
GlobalFieldModel globalField = response.OpenTResponse<GlobalFieldModel>();
172+
173+
Assert.IsNotNull(response);
174+
Assert.IsNotNull(globalField);
175+
Assert.IsNotNull(globalField.Modelling);
176+
Assert.AreEqual("nested_global_field_test", globalField.Modelling.Uid);
177+
}
178+
179+
[TestMethod]
180+
[DoNotParallelize]
181+
public void Test005_Should_Update_Nested_Global_Field()
182+
{
183+
var updateModel = new ContentModelling
184+
{
185+
Title = "Updated Nested Global Field",
186+
Uid = "nested_global_field_test",
187+
Description = "Updated description for nested global field",
188+
Schema = CreateNestedGlobalFieldModel().Schema,
189+
GlobalFieldRefs = CreateNestedGlobalFieldModel().GlobalFieldRefs
190+
};
191+
192+
ContentstackResponse response = _stack.GlobalField("nested_global_field_test").Update(updateModel);
193+
GlobalFieldModel globalField = response.OpenTResponse<GlobalFieldModel>();
194+
195+
Assert.IsNotNull(response);
196+
Assert.IsNotNull(globalField);
197+
Assert.IsNotNull(globalField.Modelling);
198+
Assert.AreEqual(updateModel.Title, globalField.Modelling.Title);
199+
Assert.AreEqual("nested_global_field_test", globalField.Modelling.Uid);
200+
}
201+
202+
[TestMethod]
203+
[DoNotParallelize]
204+
public async Task Test006_Should_Update_Async_Nested_Global_Field()
205+
{
206+
var updateModel = new ContentModelling
207+
{
208+
Title = "Updated Async Nested Global Field",
209+
Uid = "nested_global_field_test",
210+
Description = "Updated async description for nested global field",
211+
Schema = CreateNestedGlobalFieldModel().Schema,
212+
GlobalFieldRefs = CreateNestedGlobalFieldModel().GlobalFieldRefs
213+
};
214+
215+
ContentstackResponse response = await _stack.GlobalField("nested_global_field_test").UpdateAsync(updateModel);
216+
GlobalFieldModel globalField = response.OpenTResponse<GlobalFieldModel>();
217+
218+
Assert.IsNotNull(response);
219+
Assert.IsNotNull(globalField);
220+
Assert.IsNotNull(globalField.Modelling);
221+
Assert.AreEqual(updateModel.Title, globalField.Modelling.Title);
222+
Assert.AreEqual("nested_global_field_test", globalField.Modelling.Uid);
223+
}
224+
225+
[TestMethod]
226+
[DoNotParallelize]
227+
public void Test007_Should_Query_Nested_Global_Fields()
228+
{
229+
230+
ContentstackResponse response = _stack.GlobalField().Query().Find();
231+
GlobalFieldsModel globalFields = response.OpenTResponse<GlobalFieldsModel>();
232+
233+
Assert.IsNotNull(response);
234+
Assert.IsNotNull(globalFields);
235+
Assert.IsNotNull(globalFields.Modellings);
236+
Assert.IsTrue(globalFields.Modellings.Count >= 1);
237+
238+
var nestedGlobalField = globalFields.Modellings.Find(gf => gf.Uid == "nested_global_field_test");
239+
Assert.IsNotNull(nestedGlobalField);
240+
Assert.AreEqual("nested_global_field_test", nestedGlobalField.Uid);
241+
}
242+
243+
244+
245+
[TestMethod]
246+
[DoNotParallelize]
247+
public void Test009_Should_Delete_Referenced_Global_Field()
248+
{
249+
// This has been used to avoid tthe confirmation prompt during deletion in case the global field is referenced
250+
var parameters = new ParameterCollection();
251+
parameters.Add("force", "true");
252+
ContentstackResponse response = _stack.GlobalField("referenced_global_field").Delete(parameters);
253+
254+
Assert.IsNotNull(response);
255+
}
256+
257+
[TestMethod]
258+
[DoNotParallelize]
259+
public void Test008_Should_Delete_Nested_Global_Field()
260+
{
261+
ContentstackResponse response = _stack.GlobalField("nested_global_field_test").Delete();
262+
Assert.IsNotNull(response);
263+
}
264+
265+
}
266+
}

0 commit comments

Comments
 (0)