@@ -109,4 +109,200 @@ 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+ query = user_1. followeeObjectsQuery ( )
188+ query. findObjectsInBackground { followees, error in
189+ let followee = followees? . first as? LCObject
190+ XCTAssertNotNil ( followee)
191+ XCTAssertEqual ( followee ? [ " group " ] as? String , " music " )
192+ XCTAssertNil ( error)
193+ exp. fulfill ( )
194+ }
195+ }
196+
197+ LCUser . logOut ( )
198+
199+ expecting ( count: 4 ) { exp in
200+ user_2. login ( withAuthData: [ " openid " : openid_2] , platformId: " test " , options: nil ) { succeeded, error in
201+ XCTAssertNil ( error)
202+ exp. fulfill ( )
203+ if succeeded {
204+ query = user_2. followeeObjectsQuery ( )
205+ query. findObjectsInBackground { followees, error in
206+ let followee = followees? . first as? LCObject
207+ XCTAssertNotNil ( followee)
208+ XCTAssertEqual ( followee ? [ " group " ] as? String , " sport " )
209+ XCTAssertNil ( error)
210+ exp. fulfill ( )
211+ if let followee = followee {
212+ followee [ " group " ] = " music "
213+ followee. saveInBackground { succeeded, error in
214+ XCTAssertNil ( error)
215+ exp. fulfill ( )
216+ if succeeded {
217+ user_2. unfollow ( user_1. objectId!) { succeeded, error in
218+ XCTAssertTrue ( succeeded)
219+ XCTAssertNil ( error)
220+ exp. fulfill ( )
221+ }
222+ }
223+ }
224+ }
225+ }
226+ }
227+ }
228+ }
229+
230+ LCUser . logOut ( )
231+ }
232+
233+ func testFriendshipRequestDecline( ) {
234+ let openid_1 = uuid
235+ let openid_2 = uuid
236+
237+ let user_1 = LCUser ( )
238+ expecting { exp in
239+ user_1. login ( withAuthData: [ " openid " : openid_1] , platformId: " test " , options: nil ) { succeeded, error in
240+ XCTAssertTrue ( succeeded)
241+ XCTAssertNil ( error)
242+ exp. fulfill ( )
243+ }
244+ }
245+
246+ guard let _ = user_1. objectId,
247+ LCUser . current ( ) === user_1 else {
248+ XCTFail ( )
249+ return
250+ }
251+ LCUser . logOut ( )
252+
253+ let user_2 = LCUser ( )
254+ expecting { exp in
255+ user_2. login ( withAuthData: [ " openid " : openid_2] , platformId: " test " , options: nil ) { succeeded, error in
256+ XCTAssertTrue ( succeeded)
257+ XCTAssertNil ( error)
258+ exp. fulfill ( )
259+ }
260+ }
261+
262+ guard let _ = user_2. objectId,
263+ LCUser . current ( ) === user_2 else {
264+ XCTFail ( )
265+ return
266+ }
267+
268+ expecting { exp in
269+ LCFriendship . request ( withUserId: user_1. objectId!, attributes: [ " group " : " sport " ] ) { succeeded, error in
270+ XCTAssertTrue ( succeeded)
271+ XCTAssertNil ( error)
272+ exp. fulfill ( )
273+ }
274+ }
275+
276+ LCUser . logOut ( )
277+
278+ var query : LCQuery !
279+ expecting ( description: " Decline Friendship Request " , count: 3 ) { exp in
280+ user_1. login ( withAuthData: [ " openid " : openid_1] , platformId: " test " , options: nil ) { succeeded, error in
281+ XCTAssertNil ( error)
282+ exp. fulfill ( )
283+ if succeeded {
284+ query = LCFriendshipRequest . query ( )
285+ query. findObjectsInBackground { requests, error in
286+ let request = requests? . first as? LCFriendshipRequest
287+ let friend = request ? [ " friend " ] as? LCUser
288+ let user = request ? [ " user " ] as? LCUser
289+ XCTAssertNotNil ( request)
290+ XCTAssertNotNil ( friend)
291+ XCTAssertNotNil ( user)
292+ XCTAssertNil ( error)
293+ exp. fulfill ( )
294+ if let request = request {
295+ LCFriendship . declineRequest ( request) { succeeded, error in
296+ XCTAssertTrue ( succeeded)
297+ XCTAssertNil ( error)
298+ exp. fulfill ( )
299+ }
300+ }
301+ }
302+ }
303+ }
304+ }
305+
306+ LCUser . logOut ( )
307+ }
112308}
0 commit comments