1
+ ///<reference types="jest" />
2
+
3
+ import { assert } from "chai" ;
4
+ import { ILibsOptions , LibsOrderBy } from "../../src/services/ISPService" ;
5
+ import SPService from "../../src/services/SPService" ;
6
+
7
+ describe ( "SPService" , ( ) => {
8
+ test ( "getField (positive)" , async ( ) => {
9
+ let calledApi = "" ;
10
+ let ctx = {
11
+ pageContext : {
12
+ web : {
13
+ absoluteUrl : "https://test.sharepoint.com/sites/test-site"
14
+ }
15
+ } ,
16
+ spHttpClient : {
17
+ get : ( apiUrl : string ) => {
18
+ calledApi = apiUrl ;
19
+ return Promise . resolve ( {
20
+ ok : true ,
21
+ json : ( ) => Promise . resolve ( {
22
+ Id : "test-field-id"
23
+ } )
24
+ } ) ;
25
+ }
26
+ }
27
+ }
28
+ let spService = new SPService ( ctx as any ) ;
29
+ let field = await spService . getField ( "test-list-id" , "test-internal-column-name" ) ;
30
+ assert . equal ( field . Id , "test-field-id" ) ;
31
+ assert . equal ( calledApi , "https://test.sharepoint.com/sites/test-site/_api/web/lists('test-list-id')/fields/getByInternalNameOrTitle('test-internal-column-name')" ) ;
32
+ } ) ;
33
+ test ( "getField (positive - calculated)" , async ( ) => {
34
+ let calledApi = "" ;
35
+ let ctx = {
36
+ pageContext : {
37
+ web : {
38
+ absoluteUrl : "https://test.sharepoint.com/sites/test-site"
39
+ }
40
+ } ,
41
+ spHttpClient : {
42
+ get : ( apiUrl : string ) => {
43
+ calledApi = apiUrl ;
44
+ return Promise . resolve ( {
45
+ ok : true ,
46
+ json : ( ) => Promise . resolve ( {
47
+ Id : "test-field-id" ,
48
+ SchemaXml : `<Field Type="Calculated" DisplayName="TestCalculated" ResultType="Text"><Formula>=CONCATENATE(Title," Test")</Formula><FieldRefs><FieldRef Name="Title" /></FieldRefs></Field>` ,
49
+ TypeAsString : "Calculated"
50
+ } )
51
+ } ) ;
52
+ }
53
+ }
54
+ }
55
+ let spService = new SPService ( ctx as any ) ;
56
+ let field = await spService . getField ( "test-list-id" , "test-internal-column-name" ) ;
57
+ assert . equal ( field . Id , "test-field-id" ) ;
58
+ assert . equal ( field . ResultType , "Text" ) ;
59
+ assert . equal ( calledApi , "https://test.sharepoint.com/sites/test-site/_api/web/lists('test-list-id')/fields/getByInternalNameOrTitle('test-internal-column-name')" ) ;
60
+ } ) ;
61
+ test ( "getField (negative)" , async ( ) => {
62
+ let ctx = {
63
+ pageContext : {
64
+ web : {
65
+ absoluteUrl : "https://test.sharepoint.com/sites/test-site"
66
+ }
67
+ } ,
68
+ spHttpClient : {
69
+ get : ( apiUrl : string ) => {
70
+ return Promise . resolve ( {
71
+ ok : false ,
72
+ json : ( ) => Promise . resolve ( {
73
+ Id : "test-field-id"
74
+ } )
75
+ } ) ;
76
+ }
77
+ }
78
+ }
79
+ let spService = new SPService ( ctx as any ) ;
80
+ let field = await spService . getField ( "test-list-id" , "test-internal-column-name" ) ;
81
+ assert . isUndefined ( field ) ;
82
+ } ) ;
83
+ test ( "getField (negative [exception])" , async ( ) => {
84
+ let ctx = {
85
+ pageContext : {
86
+ web : {
87
+ absoluteUrl : "https://test.sharepoint.com/sites/test-site"
88
+ }
89
+ } ,
90
+ spHttpClient : {
91
+ get : ( apiUrl : string ) => {
92
+ throw "Test exception"
93
+ }
94
+ }
95
+ }
96
+ let spService = new SPService ( ctx as any ) ;
97
+ try {
98
+ let field = await spService . getField ( "test-list-id" , "test-internal-column-name" ) ;
99
+ throw "No error thrown" ;
100
+ }
101
+ catch ( err ) {
102
+ assert . equal ( err , "Test exception" ) ;
103
+ }
104
+ } ) ;
105
+
106
+ test . each ( [
107
+ [
108
+ {
109
+
110
+ } ,
111
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate"
112
+ ] ,
113
+ [
114
+ {
115
+ orderBy : LibsOrderBy . Id
116
+ } ,
117
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate&$orderby=Id"
118
+ ] ,
119
+ [
120
+ {
121
+ orderBy : LibsOrderBy . Title
122
+ } ,
123
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate&$orderby=Title"
124
+ ] ,
125
+ [
126
+ {
127
+ filter : "Title eq 'Test'"
128
+ } ,
129
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate&$filter=Title%20eq%20'Test'"
130
+ ] ,
131
+ [
132
+ {
133
+ orderBy : LibsOrderBy . Title ,
134
+ filter : "Title eq 'Test'"
135
+ } ,
136
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate&$orderby=Title&$filter=Title%20eq%20'Test'"
137
+ ] ,
138
+ [
139
+ {
140
+ filter : "Title eq 'Test'" ,
141
+ baseTemplate : 101
142
+ } ,
143
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate&$filter=Title%20eq%20'Test'"
144
+ ] ,
145
+ [
146
+ {
147
+ baseTemplate : 101
148
+ } ,
149
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate&$filter=BaseTemplate eq 101"
150
+ ] ,
151
+ [
152
+ {
153
+ baseTemplate : 101 ,
154
+ includeHidden : false
155
+ } ,
156
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate&$filter=BaseTemplate eq 101 and Hidden eq false"
157
+ ] ,
158
+ [
159
+ {
160
+ includeHidden : false
161
+ } ,
162
+ "https://test.sharepoint.com/sites/test-site/_api/web/lists?$select=Title,id,BaseTemplate&$filter=Hidden eq false"
163
+ ]
164
+ ] ) ( "getLibs %j" , async ( options : ILibsOptions , expectedApi : string ) => {
165
+ let calledApi ;
166
+ let ctx = {
167
+ pageContext : {
168
+ web : {
169
+ absoluteUrl : "https://test.sharepoint.com/sites/test-site"
170
+ }
171
+ } ,
172
+ spHttpClient : {
173
+ get : ( apiUrl : string ) => {
174
+ calledApi = apiUrl ;
175
+ return Promise . resolve ( {
176
+ ok : true ,
177
+ json : ( ) => Promise . resolve ( [ ] )
178
+ } ) ;
179
+ }
180
+ }
181
+ }
182
+ let spService = new SPService ( ctx as any ) ;
183
+ await spService . getLibs ( options ) ;
184
+
185
+ assert . equal ( calledApi , expectedApi ) ;
186
+ } ) ;
187
+ test ( "getLibs (negative)" , async ( ) => {
188
+ let ctx = {
189
+ pageContext : {
190
+ web : {
191
+ absoluteUrl : "https://test.sharepoint.com/sites/test-site"
192
+ }
193
+ } ,
194
+ spHttpClient : {
195
+ get : ( apiUrl : string ) => {
196
+ return Promise . resolve ( {
197
+ ok : false ,
198
+ json : ( ) => Promise . resolve ( [ ] )
199
+ } ) ;
200
+ }
201
+ }
202
+ }
203
+ let spService = new SPService ( ctx as any ) ;
204
+ let libs = await spService . getLibs ( { } ) ;
205
+
206
+ assert . isNull ( libs ) ;
207
+ } ) ;
208
+ } ) ;
0 commit comments