@@ -4,6 +4,7 @@ import 'package:http_mock_adapter/http_mock_adapter.dart';
4
4
import 'package:jmap_dart_client/http/http_client.dart' ;
5
5
import 'package:jmap_dart_client/jmap/account_id.dart' ;
6
6
import 'package:jmap_dart_client/jmap/core/id.dart' ;
7
+ import 'package:jmap_dart_client/jmap/core/patch_object.dart' ;
7
8
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart' ;
8
9
import 'package:jmap_dart_client/jmap/identities/identity.dart' ;
9
10
import 'package:jmap_dart_client/jmap/identities/set/set_identity_method.dart' ;
@@ -101,4 +102,110 @@ void main() {
101
102
expect (setIdentityResponse! .created! [Id ('dab246' )]! .id, equals (expectedCreated.id));
102
103
});
103
104
});
105
+
106
+ group ('test increase of old default identity request and create new identity request' , () {
107
+ final expectedCreated = Identity (
108
+ id: IdentityId (Id ('5ccf6d7b-77e8-467a-9064-9f7ccfb19e12' )),
109
+ sortOrder: UnsignedInt (1 ),
110
+ );
111
+
112
+ final updatedIdentity = Identity (
113
+ id: IdentityId (Id ('5ccf6d7b-77e8-467a-9064-9f7cc1234512' )),
114
+ sortOrder: UnsignedInt (99 ),
115
+ );
116
+
117
+ test ('test increase of old default identity request and create new identity request' , () async {
118
+ final baseOption = BaseOptions (method: 'POST' );
119
+ final dio = Dio (baseOption)
120
+ ..options.baseUrl = 'http://domain.com/jmap' ;
121
+ final dioAdapter = DioAdapter (dio: dio);
122
+ dioAdapter.onPost (
123
+ '' ,
124
+ (server) => server.reply (200 , {
125
+ "sessionState" : "2c9f1b12-b35a-43e6-9af2-0106f123a943" ,
126
+ "methodResponses" : [
127
+ [
128
+ "Identity/set" ,
129
+ {
130
+ "accountId" : "4603645929458bf671aca134b890cbb8ac4a0d297640fsdefe9230ea28daa0b1" ,
131
+ "newState" : "2c9f1b12-b35a-43e6-9af2-0106fb53a943" ,
132
+ "created" : {
133
+ "xyz123" : {
134
+ "id" : "5ccf6d7b-77e8-467a-9064-9f7ccfb19e12" ,
135
+ "mayDelete" : true ,
136
+ }
137
+ },
138
+ "updated" : {
139
+ "5ccf6d7b-77e8-467a-9064-9f7cc1234512" : {}
140
+ }
141
+ },
142
+ "c0"
143
+ ]
144
+ ]
145
+ }),
146
+ data: {
147
+ "using" : [
148
+ "urn:ietf:params:jmap:core" ,
149
+ "urn:ietf:params:jmap:submission" ,
150
+ "urn:apache:james:params:jmap:mail:identity:sortorder"
151
+ ],
152
+ "methodCalls" : [
153
+ [
154
+ "Identity/set" ,
155
+ {
156
+ "accountId" : "4603645929458bf671aca134b890cbb8ac4a0d297640fsdefe9230ea28daa0b1" ,
157
+ "create" : {
158
+ "xyz123" : {
159
+ "id" : "5ccf6d7b-77e8-467a-9064-9f7ccfb19e12" ,
160
+ "name" : "User B23" ,
161
+
162
+ "sortOrder" : 1
163
+ }
164
+ },
165
+ "update" : {
166
+ "c6ba359f-94a8-4ee9-b515-6bd2d9698618" : {
167
+ "sortOrder" : 8888
168
+ }
169
+ }
170
+ },
171
+ "c0"
172
+ ]
173
+ ]
174
+ },
175
+ headers: {
176
+ "accept" : "application/json;jmapVersion=rfc-8621" ,
177
+ "content-type" : "application/json; charset=utf-8" ,
178
+ "content-length" : 438
179
+ }
180
+ );
181
+
182
+ final setIdentityMethod = SetIdentityMethod (AccountId (Id ('4603645929458bf671aca134b890cbb8ac4a0d297640fsdefe9230ea28daa0b1' )))
183
+ ..addCreate (Id ('xyz123' ),
184
+ Identity (
185
+ id: IdentityId (Id ("5ccf6d7b-77e8-467a-9064-9f7ccfb19e12" )),
186
+ name: 'User B23' ,
187
+
188
+ sortOrder: UnsignedInt (1 )
189
+ )
190
+ )
191
+ ..addUpdates ({
192
+ Id ("c6ba359f-94a8-4ee9-b515-6bd2d9698618" ): PatchObject ({"sortOrder" : 8888 })
193
+ });
194
+
195
+ final httpClient = HttpClient (dio);
196
+ final requestBuilder = JmapRequestBuilder (httpClient, ProcessingInvocation ());
197
+ final setIdentityInvocation = requestBuilder.invocation (setIdentityMethod);
198
+ final response = await (requestBuilder
199
+ ..usings (setIdentityMethod.requiredCapabilitiesSupportSortOrder))
200
+ .build ()
201
+ .execute ();
202
+
203
+ final setIdentityResponse = response.parse <SetIdentityResponse >(
204
+ setIdentityInvocation.methodCallId,
205
+ SetIdentityResponse .deserialize);
206
+
207
+ expect (setIdentityResponse! .created! [Id ('xyz123' )]! .id, equals (expectedCreated.id));
208
+ expect (setIdentityResponse.updated! [Id ('5ccf6d7b-77e8-467a-9064-9f7cc1234512' )], equals (Identity ()));
209
+ });
210
+ });
104
211
}
0 commit comments