Skip to content

Commit 9983712

Browse files
committed
test: update
1 parent 99a05bb commit 9983712

File tree

1 file changed

+343
-18
lines changed

1 file changed

+343
-18
lines changed

AVOS/LeanCloudObjcTests/LCLeaderboardTestCase.swift

Lines changed: 343 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ class LCLeaderboardTestCase: BaseTestCase {
6666
}
6767

6868
func testGetUserStatistics() {
69+
defer {
70+
LCUser.logOut()
71+
}
6972
let user = LCUser()
7073
expecting { exp in
7174
user.login(withAuthData: ["openid" : uuid], platformId: "test", options: nil) { _, error in
@@ -123,25 +126,25 @@ class LCLeaderboardTestCase: BaseTestCase {
123126

124127
expecting(count: 2) { exp in
125128
leaderboard0.getStatisticsWithUserIds([userObjectId]) { statistics, error in
126-
// XCTAssertEqual(statistics?.count, 1)
127-
// XCTAssertNil(error)
128-
// XCTAssertEqual(leaderboard0.statisticName, statistics?.first?.name)
129-
// XCTAssertEqual(statistics?.first?.value, 100)
130-
// XCTAssertGreaterThanOrEqual(statistics?.first?.version ?? -1, 0)
131-
// XCTAssertNotNil(statistics?.first?.user)
132-
// XCTAssertNil(statistics?.first?.object)
133-
// XCTAssertNil(statistics?.first?.entity)
129+
XCTAssertEqual(statistics?.count, 1)
130+
XCTAssertNil(error)
131+
XCTAssertEqual(leaderboard0.statisticName, statistics?.first?.name)
132+
XCTAssertEqual(statistics?.first?.value, 100)
133+
XCTAssertGreaterThanOrEqual(statistics?.first?.version ?? -1, 0)
134+
XCTAssertNotNil(statistics?.first?.user)
135+
XCTAssertNil(statistics?.first?.object)
136+
XCTAssertNil(statistics?.first?.entity)
134137
exp.fulfill()
135138
}
136139
leaderboard1.getStatisticsWithUserIds([userObjectId]) { statistics, error in
137-
// XCTAssertEqual(statistics?.count, 1)
138-
// XCTAssertNil(error)
139-
// XCTAssertEqual(leaderboard1.statisticName, statistics?.first?.name)
140-
// XCTAssertEqual(statistics?.first?.value, 100)
141-
// XCTAssertGreaterThanOrEqual(statistics?.first?.version ?? -1, 0)
142-
// XCTAssertNotNil(statistics?.first?.user)
143-
// XCTAssertNil(statistics?.first?.object)
144-
// XCTAssertNil(statistics?.first?.entity)
140+
XCTAssertEqual(statistics?.count, 1)
141+
XCTAssertNil(error)
142+
XCTAssertEqual(leaderboard1.statisticName, statistics?.first?.name)
143+
XCTAssertEqual(statistics?.first?.value, 100)
144+
XCTAssertGreaterThanOrEqual(statistics?.first?.version ?? -1, 0)
145+
XCTAssertNotNil(statistics?.first?.user)
146+
XCTAssertNil(statistics?.first?.object)
147+
XCTAssertNil(statistics?.first?.entity)
145148
exp.fulfill()
146149
}
147150
}
@@ -153,8 +156,6 @@ class LCLeaderboardTestCase: BaseTestCase {
153156
exp.fulfill()
154157
}
155158
}
156-
157-
LCUser.logOut()
158159
}
159160

160161
func testGetObjectStatistics() {
@@ -246,4 +247,328 @@ class LCLeaderboardTestCase: BaseTestCase {
246247
}
247248
}
248249
}
250+
251+
func testGetEntityStatistics() {
252+
let entityId = uuid
253+
254+
let statisticName0 = "test-entity-0"
255+
let statisticName1 = "test-entity-1"
256+
257+
useMasterKey()
258+
expecting { exp in
259+
LCLeaderboard.update(
260+
withIdentity: entityId,
261+
leaderboardPath: .entities,
262+
statistics: [
263+
statisticName0 : 100,
264+
statisticName1 : 100,
265+
])
266+
{ statistics, error in
267+
XCTAssertEqual(statistics?.count, 2)
268+
XCTAssertNil(error)
269+
XCTAssertNotEqual(statistics?.first?.name, statistics?.last?.name)
270+
for item in statistics ?? [] {
271+
XCTAssertTrue([statisticName0, statisticName1].contains(item.name ?? ""))
272+
XCTAssertEqual(item.value, 100)
273+
XCTAssertGreaterThanOrEqual(item.version, 0)
274+
}
275+
exp.fulfill()
276+
}
277+
}
278+
useCommonKey()
279+
280+
expecting { exp in
281+
LCLeaderboard.getStatisticsWithEntity(
282+
entityId,
283+
statisticNames: [statisticName0, statisticName1])
284+
{ statistics, error in
285+
XCTAssertEqual(statistics?.count, 2)
286+
XCTAssertNil(error)
287+
XCTAssertNotEqual(statistics?.first?.name, statistics?.last?.name)
288+
for item in statistics ?? [] {
289+
XCTAssertTrue([statisticName0, statisticName1].contains(item.name ?? ""))
290+
XCTAssertEqual(item.value, 100)
291+
XCTAssertGreaterThanOrEqual(item.version, 0)
292+
XCTAssertNotNil(item.entity)
293+
XCTAssertEqual(item.entity, entityId)
294+
XCTAssertNil(item.user)
295+
XCTAssertNil(item.object)
296+
}
297+
exp.fulfill()
298+
}
299+
}
300+
301+
let leaderboard0 = LCLeaderboard(statisticName: statisticName0)
302+
let leaderboard1 = LCLeaderboard(statisticName: statisticName1)
303+
304+
expecting(count: 2) { exp in
305+
leaderboard0.getStatisticsWithEntities([entityId]) { statistics, error in
306+
XCTAssertEqual(statistics?.count, 1)
307+
XCTAssertNil(error)
308+
XCTAssertEqual(leaderboard0.statisticName, statistics?.first?.name)
309+
XCTAssertEqual(statistics?.first?.value, 100)
310+
XCTAssertGreaterThanOrEqual(statistics?.first?.version ?? -1, 0)
311+
XCTAssertEqual(statistics?.first?.entity, entityId)
312+
XCTAssertNil(statistics?.first?.user)
313+
XCTAssertNil(statistics?.first?.object)
314+
exp.fulfill()
315+
}
316+
leaderboard1.getStatisticsWithEntities([entityId]) { statistics, error in
317+
XCTAssertEqual(statistics?.count, 1)
318+
XCTAssertNil(error)
319+
XCTAssertEqual(leaderboard1.statisticName, statistics?.first?.name)
320+
XCTAssertEqual(statistics?.first?.value, 100)
321+
XCTAssertGreaterThanOrEqual(statistics?.first?.version ?? -1, 0)
322+
XCTAssertEqual(statistics?.first?.entity, entityId)
323+
XCTAssertNil(statistics?.first?.user)
324+
XCTAssertNil(statistics?.first?.object)
325+
exp.fulfill()
326+
}
327+
}
328+
}
329+
330+
func testGetUserRankings() {
331+
defer {
332+
LCUser.logOut()
333+
}
334+
let object = LCObject()
335+
XCTAssertTrue(object.save())
336+
let user = LCUser()
337+
let objectFieldKey = "objectField"
338+
user[objectFieldKey] = object
339+
expecting { exp in
340+
user.login(withAuthData: ["openid" : uuid], platformId: "test", options: nil) { _, error in
341+
XCTAssertNil(error)
342+
exp.fulfill()
343+
}
344+
}
345+
guard let userObjectId = user.objectId else {
346+
XCTFail()
347+
return
348+
}
349+
350+
let statisticName0 = "test-user-0"
351+
let statisticName1 = "test-user-1"
352+
var statistic0version = -1
353+
var statistic1version = -1
354+
355+
expecting { exp in
356+
LCLeaderboard.updateCurrentUserStatistics(
357+
[statisticName0 : 100,
358+
statisticName1 : 100])
359+
{ statistics, error in
360+
XCTAssertEqual(statistics?.count, 2)
361+
XCTAssertNil(error)
362+
XCTAssertNotEqual(statistics?.first?.name, statistics?.last?.name)
363+
for item in statistics ?? [] {
364+
XCTAssertTrue([statisticName0, statisticName1].contains(item.name ?? ""))
365+
XCTAssertEqual(item.value, 100)
366+
XCTAssertGreaterThanOrEqual(item.version, 0)
367+
if (item.name ?? "") == statisticName0 {
368+
statistic0version = item.version
369+
} else {
370+
statistic1version = item.version
371+
}
372+
}
373+
exp.fulfill()
374+
}
375+
}
376+
377+
let leaderboard0 = LCLeaderboard(statisticName: statisticName0)
378+
let leaderboard1 = LCLeaderboard(statisticName: statisticName1)
379+
let option = LCLeaderboardQueryOption()
380+
option.selectKeys = [objectFieldKey]
381+
option.includeKeys = [objectFieldKey]
382+
383+
expecting(count: 2) { exp in
384+
leaderboard0.limit = 1
385+
leaderboard0.includeStatistics = [statisticName1]
386+
leaderboard0.version = statistic0version
387+
leaderboard0.returnCount = true
388+
leaderboard0.getUserResultsAroundUser(userObjectId, option: option) { rankings, count, error in
389+
XCTAssertEqual(rankings?.count, 1)
390+
XCTAssertGreaterThanOrEqual(count, 1)
391+
XCTAssertNil(error)
392+
for item in rankings ?? [] {
393+
XCTAssertEqual(item.statisticName, leaderboard0.statisticName)
394+
XCTAssertGreaterThanOrEqual(item.rank, 0)
395+
XCTAssertEqual(item.value, 100)
396+
XCTAssertEqual(item.includedStatistics?.first?.name, statisticName1)
397+
XCTAssertEqual(item.includedStatistics?.first?.value, 100)
398+
XCTAssertEqual(item.user?.objectId, userObjectId)
399+
XCTAssertNotNil((item.user?[objectFieldKey] as? LCObject)?.createdAt)
400+
XCTAssertNil(item.object)
401+
XCTAssertNil(item.entity)
402+
}
403+
exp.fulfill()
404+
}
405+
leaderboard1.skip = 1
406+
leaderboard1.version = statistic1version
407+
leaderboard1.getUserResults(with: nil) { rankings, count, error in
408+
for item in rankings ?? [] {
409+
XCTAssertNotEqual(item.rank, 0)
410+
}
411+
XCTAssertEqual(count, 0)
412+
XCTAssertNil(error)
413+
exp.fulfill()
414+
}
415+
}
416+
}
417+
418+
func testGetObjectRankings() {
419+
let object = LCObject()
420+
let objectFieldKey = "objectField"
421+
object[objectFieldKey] = LCObject()
422+
XCTAssertTrue(object.save())
423+
guard let objectId = object.objectId else {
424+
XCTFail()
425+
return
426+
}
427+
428+
let statisticName0 = "test-object-0"
429+
let statisticName1 = "test-object-1"
430+
var statistic0version = -1
431+
var statistic1version = -1
432+
433+
useMasterKey()
434+
expecting { exp in
435+
LCLeaderboard.update(
436+
withIdentity: objectId,
437+
leaderboardPath: .objects,
438+
statistics: [
439+
statisticName0 : 100,
440+
statisticName1 : 100,
441+
])
442+
{ statistics, error in
443+
XCTAssertEqual(statistics?.count, 2)
444+
XCTAssertNil(error)
445+
XCTAssertNotEqual(statistics?.first?.name, statistics?.last?.name)
446+
for item in statistics ?? [] {
447+
XCTAssertTrue([statisticName0, statisticName1].contains(item.name ?? ""))
448+
XCTAssertEqual(item.value, 100)
449+
XCTAssertGreaterThanOrEqual(item.version, 0)
450+
if (item.name ?? "") == statisticName0 {
451+
statistic0version = item.version
452+
} else {
453+
statistic1version = item.version
454+
}
455+
}
456+
exp.fulfill()
457+
}
458+
}
459+
useCommonKey()
460+
461+
let leaderboard0 = LCLeaderboard(statisticName: statisticName0)
462+
let leaderboard1 = LCLeaderboard(statisticName: statisticName1)
463+
let option = LCLeaderboardQueryOption()
464+
option.selectKeys = [objectFieldKey]
465+
option.includeKeys = [objectFieldKey]
466+
467+
expecting(count: 2) { exp in
468+
leaderboard0.limit = 1
469+
leaderboard0.includeStatistics = [statisticName1]
470+
leaderboard0.version = statistic0version
471+
leaderboard0.returnCount = true
472+
leaderboard0.getObjectResultsAroundObject(objectId, option: option) { rankings, count, error in
473+
XCTAssertEqual(rankings?.count, 1)
474+
XCTAssertGreaterThanOrEqual(count, 1)
475+
XCTAssertNil(error)
476+
for item in rankings ?? [] {
477+
XCTAssertEqual(item.statisticName, leaderboard0.statisticName)
478+
XCTAssertGreaterThanOrEqual(item.rank, 0)
479+
XCTAssertEqual(item.value, 100)
480+
XCTAssertEqual(item.includedStatistics?.first?.name, statisticName1)
481+
XCTAssertEqual(item.includedStatistics?.first?.value, 100)
482+
XCTAssertEqual(item.object?.objectId, objectId)
483+
XCTAssertNotNil((item.object?[objectFieldKey] as? LCObject)?.createdAt)
484+
XCTAssertNil(item.user)
485+
XCTAssertNil(item.entity)
486+
}
487+
exp.fulfill()
488+
}
489+
leaderboard1.skip = 1
490+
leaderboard1.version = statistic1version
491+
leaderboard1.getObjectResults(with: nil) { rankings, count, error in
492+
for item in rankings ?? [] {
493+
XCTAssertNotEqual(item.rank, 0)
494+
}
495+
XCTAssertEqual(count, 0)
496+
XCTAssertNil(error)
497+
exp.fulfill()
498+
}
499+
}
500+
}
501+
502+
func testGetEntityRankings() {
503+
let entityId = uuid
504+
505+
let statisticName0 = "test-entity-0"
506+
let statisticName1 = "test-entity-1"
507+
var statistic0version = -1
508+
var statistic1version = -1
509+
510+
useMasterKey()
511+
expecting { exp in
512+
LCLeaderboard.update(
513+
withIdentity: entityId,
514+
leaderboardPath: .entities,
515+
statistics: [
516+
statisticName0 : 100,
517+
statisticName1 : 100,
518+
])
519+
{ statistics, error in
520+
XCTAssertEqual(statistics?.count, 2)
521+
XCTAssertNil(error)
522+
XCTAssertNotEqual(statistics?.first?.name, statistics?.last?.name)
523+
for item in statistics ?? [] {
524+
XCTAssertTrue([statisticName0, statisticName1].contains(item.name ?? ""))
525+
XCTAssertEqual(item.value, 100)
526+
XCTAssertGreaterThanOrEqual(item.version, 0)
527+
if (item.name ?? "") == statisticName0 {
528+
statistic0version = item.version
529+
} else {
530+
statistic1version = item.version
531+
}
532+
}
533+
exp.fulfill()
534+
}
535+
}
536+
useCommonKey()
537+
538+
let leaderboard0 = LCLeaderboard(statisticName: statisticName0)
539+
let leaderboard1 = LCLeaderboard(statisticName: statisticName1)
540+
541+
expecting(count: 2) { exp in
542+
leaderboard0.limit = 1
543+
leaderboard0.includeStatistics = [statisticName1]
544+
leaderboard0.version = statistic0version
545+
leaderboard0.returnCount = true
546+
leaderboard0.getEntityResultsAroundEntity(entityId) { rankings, count, error in
547+
XCTAssertEqual(rankings?.count, 1)
548+
XCTAssertGreaterThanOrEqual(count, 1)
549+
XCTAssertNil(error)
550+
for item in rankings ?? [] {
551+
XCTAssertEqual(item.statisticName, leaderboard0.statisticName)
552+
XCTAssertGreaterThanOrEqual(item.rank, 0)
553+
XCTAssertEqual(item.value, 100)
554+
XCTAssertEqual(item.includedStatistics?.first?.name, statisticName1)
555+
XCTAssertEqual(item.includedStatistics?.first?.value, 100)
556+
XCTAssertEqual(item.entity, entityId)
557+
XCTAssertNil(item.user)
558+
XCTAssertNil(item.object)
559+
}
560+
exp.fulfill()
561+
}
562+
leaderboard1.skip = 1
563+
leaderboard1.version = statistic1version
564+
leaderboard1.getEntityResults { rankings, count, error in
565+
for item in rankings ?? [] {
566+
XCTAssertNotEqual(item.rank, 0)
567+
}
568+
XCTAssertEqual(count, 0)
569+
XCTAssertNil(error)
570+
exp.fulfill()
571+
}
572+
}
573+
}
249574
}

0 commit comments

Comments
 (0)