@@ -109,4 +109,198 @@ class LCUserTestCase: BaseTestCase {
109109 LCUser.logOut()
110110 */
111111 }
112+
113+ func testFriendshipRequestAccept( ) {
114+ let openid_1 = uuid
115+ let openid_2 = uuid
116+
117+ let user_1 = LCUser ( )
118+ expecting { exp in
119+ user_1. login ( withAuthData: [ " openid " : openid_1] , platformId: " test " , options: nil ) { succeeded, error in
120+ XCTAssertTrue ( succeeded)
121+ XCTAssertNil ( error)
122+ exp. fulfill ( )
123+ }
124+ }
125+
126+ guard let _ = user_1. objectId,
127+ LCUser . current ( ) === user_1 else {
128+ XCTFail ( )
129+ return
130+ }
131+ LCUser . logOut ( )
132+
133+ let user_2 = LCUser ( )
134+ expecting { exp in
135+ user_2. login ( withAuthData: [ " openid " : openid_2] , platformId: " test " , options: nil ) { succeeded, error in
136+ XCTAssertTrue ( succeeded)
137+ XCTAssertNil ( error)
138+ exp. fulfill ( )
139+ }
140+ }
141+
142+ guard let _ = user_2. objectId,
143+ LCUser . current ( ) === user_2 else {
144+ XCTFail ( )
145+ return
146+ }
147+
148+ expecting { exp in
149+ LCFriendship . request ( withUserId: user_1. objectId!, attributes: [ " group " : " sport " ] ) { succeeded, error in
150+ XCTAssertTrue ( succeeded)
151+ XCTAssertNil ( error)
152+ exp. fulfill ( )
153+ }
154+ }
155+
156+ LCUser . logOut ( )
157+
158+ var query : LCQuery !
159+ expecting ( description: " Accept Friendship Request " , count: 3 ) { exp in
160+ user_1. login ( withAuthData: [ " openid " : openid_1] , platformId: " test " , options: nil ) { succeeded, error in
161+ XCTAssertNil ( error)
162+ exp. fulfill ( )
163+ if succeeded {
164+ query = LCFriendshipRequest . query ( )
165+ query. findObjectsInBackground { requests, error in
166+ let request = requests? . first as? LCFriendshipRequest
167+ let friend = request ? [ " friend " ] as? LCUser
168+ let user = request ? [ " user " ] as? LCUser
169+ XCTAssertNotNil ( request)
170+ XCTAssertNotNil ( friend)
171+ XCTAssertNotNil ( user)
172+ XCTAssertNil ( error)
173+ exp. fulfill ( )
174+ if let request = request {
175+ LCFriendship . accept ( request, attributes: [ " group " : " music " ] ) { succeeded, error in
176+ XCTAssertTrue ( succeeded)
177+ XCTAssertNil ( error)
178+ exp. fulfill ( )
179+ }
180+ }
181+ }
182+ }
183+ }
184+ }
185+
186+ expecting { exp in
187+ user_1. getFolloweeObjects { followees, error in
188+ let followee = followees? . first as? LCObject
189+ XCTAssertNotNil ( followee)
190+ XCTAssertEqual ( followee ? [ " group " ] as? String , " music " )
191+ XCTAssertNil ( error)
192+ exp. fulfill ( )
193+ }
194+ }
195+
196+ LCUser . logOut ( )
197+
198+ expecting ( count: 4 ) { exp in
199+ user_2. login ( withAuthData: [ " openid " : openid_2] , platformId: " test " , options: nil ) { succeeded, error in
200+ XCTAssertNil ( error)
201+ exp. fulfill ( )
202+ if succeeded {
203+ user_2. getFolloweeObjects { followees, error in
204+ let followee = followees? . first as? LCObject
205+ XCTAssertNotNil ( followee)
206+ XCTAssertEqual ( followee ? [ " group " ] as? String , " sport " )
207+ XCTAssertNil ( error)
208+ exp. fulfill ( )
209+ if let followee = followee {
210+ followee [ " group " ] = " music "
211+ followee. saveInBackground { succeeded, error in
212+ XCTAssertNil ( error)
213+ exp. fulfill ( )
214+ if succeeded {
215+ user_2. unfollow ( user_1. objectId!) { succeeded, error in
216+ XCTAssertTrue ( succeeded)
217+ XCTAssertNil ( error)
218+ exp. fulfill ( )
219+ }
220+ }
221+ }
222+ }
223+ }
224+ }
225+ }
226+ }
227+
228+ LCUser . logOut ( )
229+ }
230+
231+ func testFriendshipRequestDecline( ) {
232+ let openid_1 = uuid
233+ let openid_2 = uuid
234+
235+ let user_1 = LCUser ( )
236+ expecting { exp in
237+ user_1. login ( withAuthData: [ " openid " : openid_1] , platformId: " test " , options: nil ) { succeeded, error in
238+ XCTAssertTrue ( succeeded)
239+ XCTAssertNil ( error)
240+ exp. fulfill ( )
241+ }
242+ }
243+
244+ guard let _ = user_1. objectId,
245+ LCUser . current ( ) === user_1 else {
246+ XCTFail ( )
247+ return
248+ }
249+ LCUser . logOut ( )
250+
251+ let user_2 = LCUser ( )
252+ expecting { exp in
253+ user_2. login ( withAuthData: [ " openid " : openid_2] , platformId: " test " , options: nil ) { succeeded, error in
254+ XCTAssertTrue ( succeeded)
255+ XCTAssertNil ( error)
256+ exp. fulfill ( )
257+ }
258+ }
259+
260+ guard let _ = user_2. objectId,
261+ LCUser . current ( ) === user_2 else {
262+ XCTFail ( )
263+ return
264+ }
265+
266+ expecting { exp in
267+ LCFriendship . request ( withUserId: user_1. objectId!, attributes: [ " group " : " sport " ] ) { succeeded, error in
268+ XCTAssertTrue ( succeeded)
269+ XCTAssertNil ( error)
270+ exp. fulfill ( )
271+ }
272+ }
273+
274+ LCUser . logOut ( )
275+
276+ var query : LCQuery !
277+ expecting ( description: " Decline Friendship Request " , count: 3 ) { exp in
278+ user_1. login ( withAuthData: [ " openid " : openid_1] , platformId: " test " , options: nil ) { succeeded, error in
279+ XCTAssertNil ( error)
280+ exp. fulfill ( )
281+ if succeeded {
282+ query = LCFriendshipRequest . query ( )
283+ query. findObjectsInBackground { requests, error in
284+ let request = requests? . first as? LCFriendshipRequest
285+ let friend = request ? [ " friend " ] as? LCUser
286+ let user = request ? [ " user " ] as? LCUser
287+ XCTAssertNotNil ( request)
288+ XCTAssertNotNil ( friend)
289+ XCTAssertNotNil ( user)
290+ XCTAssertNil ( error)
291+ exp. fulfill ( )
292+ if let request = request {
293+ LCFriendship . declineRequest ( request) { succeeded, error in
294+ XCTAssertTrue ( succeeded)
295+ XCTAssertNil ( error)
296+ exp. fulfill ( )
297+ }
298+ }
299+ }
300+ }
301+ }
302+ }
303+
304+ LCUser . logOut ( )
305+ }
112306}
0 commit comments