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