Skip to content

Commit 3679f66

Browse files
authored
Merge pull request #657 from zapcannon87/master
feat: leaderboard
2 parents d20b3d7 + 1416d15 commit 3679f66

25 files changed

+1453
-198
lines changed

AVOS/AVOS.xcodeproj/project.pbxproj

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@
7373
D30B6A6E24A09D7B006ABE09 /* LCRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C841A6C1A5A79FF00C5C6C4 /* LCRequestOperation.h */; };
7474
D30B6A6F24A09D7B006ABE09 /* LCRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C841A6D1A5A79FF00C5C6C4 /* LCRequestOperation.m */; };
7575
D30B6A7024A09D7B006ABE09 /* LCPaasClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C841A6E1A5A79FF00C5C6C4 /* LCPaasClient.h */; };
76-
D30B6A7124A09D7B006ABE09 /* LCPaasClient_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 83A2BD2E1CF33CDA0047B230 /* LCPaasClient_internal.h */; };
7776
D30B6A7224A09D7B006ABE09 /* LCPaasClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C841A6F1A5A79FF00C5C6C4 /* LCPaasClient.m */; };
7877
D30B6A7324A09D87006ABE09 /* LCRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 83F9A2C51CE014430002E21B /* LCRouter.h */; };
7978
D30B6A7424A09D87006ABE09 /* LCRouter_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D34EBDCC211C20FF0092A538 /* LCRouter_Internal.h */; };
@@ -302,6 +301,11 @@
302301
D313718026BBDAC200123756 /* LCQueryTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D313717F26BBDAC200123756 /* LCQueryTestCase.swift */; };
303302
D32AA480263BF2F30044E74E /* Foundation.h in Headers */ = {isa = PBXBuildFile; fileRef = D32AA47F263BF2F30044E74E /* Foundation.h */; settings = {ATTRIBUTES = (Public, ); }; };
304303
D32AA482263BF39C0044E74E /* Realtime.h in Headers */ = {isa = PBXBuildFile; fileRef = D32AA481263BF39C0044E74E /* Realtime.h */; settings = {ATTRIBUTES = (Public, ); }; };
304+
D33127D326CBAD6D00BBDE09 /* LCFileTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D33127D226CBAD6D00BBDE09 /* LCFileTestCase.swift */; };
305+
D33127D526CE391500BBDE09 /* LCLeaderboardTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D33127D426CE391500BBDE09 /* LCLeaderboardTestCase.swift */; };
306+
D33127D726CFAC5100BBDE09 /* LCLeaderboard_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D33127D626CFAC5100BBDE09 /* LCLeaderboard_Internal.h */; };
307+
D365E42426C3D29F00148DE8 /* LCLeaderboard.h in Headers */ = {isa = PBXBuildFile; fileRef = D365E42226C3D29F00148DE8 /* LCLeaderboard.h */; settings = {ATTRIBUTES = (Public, ); }; };
308+
D365E42526C3D29F00148DE8 /* LCLeaderboard.m in Sources */ = {isa = PBXBuildFile; fileRef = D365E42326C3D29F00148DE8 /* LCLeaderboard.m */; };
305309
D36A095A25BEA75000A4F312 /* IMMessageTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D36A095925BEA75000A4F312 /* IMMessageTestCase.swift */; };
306310
D39724C424A5CD3C0099A518 /* RTMBaseTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D39724C324A5CD3C0099A518 /* RTMBaseTestCase.swift */; };
307311
D39724C624A852400099A518 /* IMClientTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D39724C524A852400099A518 /* IMClientTestCase.swift */; };
@@ -382,7 +386,6 @@
382386
838DD79E1B3D3FB600C95897 /* LCKeyValueStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCKeyValueStore.h; sourceTree = "<group>"; };
383387
838DD79F1B3D3FB600C95897 /* LCKeyValueStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCKeyValueStore.m; sourceTree = "<group>"; };
384388
838DD7A21B3D3FD100C95897 /* LCKeyValueSQL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCKeyValueSQL.h; sourceTree = "<group>"; };
385-
83A2BD2E1CF33CDA0047B230 /* LCPaasClient_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCPaasClient_internal.h; sourceTree = "<group>"; };
386389
83CFCB5E1B2A5D2700F97C92 /* LCIMKeyedConversation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCIMKeyedConversation.h; sourceTree = "<group>"; };
387390
83CFCB5F1B2A5D2700F97C92 /* LCIMKeyedConversation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LCIMKeyedConversation.m; sourceTree = "<group>"; };
388391
83DF02A51AF86032000E289C /* LCDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LCDatabase.h; sourceTree = "<group>"; };
@@ -548,10 +551,15 @@
548551
D328B8E720FEE2200039091A /* LCIMClientInternalConversationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LCIMClientInternalConversationManager.m; sourceTree = "<group>"; };
549552
D32AA47F263BF2F30044E74E /* Foundation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Foundation.h; sourceTree = "<group>"; };
550553
D32AA481263BF39C0044E74E /* Realtime.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Realtime.h; sourceTree = "<group>"; };
554+
D33127D226CBAD6D00BBDE09 /* LCFileTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LCFileTestCase.swift; sourceTree = "<group>"; };
555+
D33127D426CE391500BBDE09 /* LCLeaderboardTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LCLeaderboardTestCase.swift; sourceTree = "<group>"; };
556+
D33127D626CFAC5100BBDE09 /* LCLeaderboard_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCLeaderboard_Internal.h; sourceTree = "<group>"; };
551557
D34C417D2483C3FD00CD2459 /* LCRTMConnection_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCRTMConnection_Internal.h; sourceTree = "<group>"; };
552558
D34EBDCC211C20FF0092A538 /* LCRouter_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCRouter_Internal.h; sourceTree = "<group>"; };
553559
D34FD72B2068CFE900B7C11B /* LCLiveQuery_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCLiveQuery_Internal.h; sourceTree = "<group>"; };
554560
D3596DAC2480EEED002D2D22 /* LCApplication_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCApplication_Internal.h; sourceTree = "<group>"; };
561+
D365E42226C3D29F00148DE8 /* LCLeaderboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCLeaderboard.h; sourceTree = "<group>"; };
562+
D365E42326C3D29F00148DE8 /* LCLeaderboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LCLeaderboard.m; sourceTree = "<group>"; };
555563
D36A095925BEA75000A4F312 /* IMMessageTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMMessageTestCase.swift; sourceTree = "<group>"; };
556564
D3700B722475244E00678B2B /* LCRTMConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LCRTMConnection.h; sourceTree = "<group>"; };
557565
D3700B732475244E00678B2B /* LCRTMConnection.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LCRTMConnection.m; sourceTree = "<group>"; };
@@ -839,6 +847,7 @@
839847
8C841AA11A5A7A0000C5C6C4 /* Utils */,
840848
83331D421EB9A24D00CADC9C /* Captcha */,
841849
835091FA1EB1BD90000DA884 /* SMS */,
850+
D365E42126C3D23900148DE8 /* Leaderboard */,
842851
);
843852
path = Foundation;
844853
sourceTree = "<group>";
@@ -980,7 +989,6 @@
980989
8C841A6C1A5A79FF00C5C6C4 /* LCRequestOperation.h */,
981990
8C841A6D1A5A79FF00C5C6C4 /* LCRequestOperation.m */,
982991
8C841A6E1A5A79FF00C5C6C4 /* LCPaasClient.h */,
983-
83A2BD2E1CF33CDA0047B230 /* LCPaasClient_internal.h */,
984992
8C841A6F1A5A79FF00C5C6C4 /* LCPaasClient.m */,
985993
);
986994
path = Request;
@@ -1231,6 +1239,8 @@
12311239
D30B6B6124A0A933006ABE09 /* BaseTestCase.swift */,
12321240
D3AD74AA24BC216200D1BBEE /* LCUserTestCase.swift */,
12331241
D313717F26BBDAC200123756 /* LCQueryTestCase.swift */,
1242+
D33127D226CBAD6D00BBDE09 /* LCFileTestCase.swift */,
1243+
D33127D426CE391500BBDE09 /* LCLeaderboardTestCase.swift */,
12341244
D39724C324A5CD3C0099A518 /* RTMBaseTestCase.swift */,
12351245
D3A397F024A5A4670087D6F8 /* RTMConnectionTestCase.swift */,
12361246
D39724C524A852400099A518 /* IMClientTestCase.swift */,
@@ -1279,6 +1289,16 @@
12791289
name = Frameworks;
12801290
sourceTree = "<group>";
12811291
};
1292+
D365E42126C3D23900148DE8 /* Leaderboard */ = {
1293+
isa = PBXGroup;
1294+
children = (
1295+
D365E42226C3D29F00148DE8 /* LCLeaderboard.h */,
1296+
D33127D626CFAC5100BBDE09 /* LCLeaderboard_Internal.h */,
1297+
D365E42326C3D29F00148DE8 /* LCLeaderboard.m */,
1298+
);
1299+
path = Leaderboard;
1300+
sourceTree = "<group>";
1301+
};
12821302
D3700B7124750CB300678B2B /* Connection */ = {
12831303
isa = PBXGroup;
12841304
children = (
@@ -1357,6 +1377,7 @@
13571377
D30B6ADD24A09F1E006ABE09 /* LCGPBArray_PackagePrivate.h in Headers */,
13581378
D32AA482263BF39C0044E74E /* Realtime.h in Headers */,
13591379
D30B6AFB24A09F1F006ABE09 /* LCGPBProtocolBuffers.h in Headers */,
1380+
D33127D726CFAC5100BBDE09 /* LCLeaderboard_Internal.h in Headers */,
13601381
D30B6B2A24A09F66006ABE09 /* LCIMDynamicObject.h in Headers */,
13611382
D30B6AA824A09E35006ABE09 /* LCDatabaseMigrator.h in Headers */,
13621383
D30B6A9424A09DDF006ABE09 /* LCDatabaseQueue.h in Headers */,
@@ -1434,7 +1455,6 @@
14341455
D30B6ABF24A09EBC006ABE09 /* LCIMClientProtocol.h in Headers */,
14351456
D30B6A4424A09CF1006ABE09 /* LCCloud.h in Headers */,
14361457
D30B6B4D24A09F85006ABE09 /* LCIMFileMessage.h in Headers */,
1437-
D30B6A7124A09D7B006ABE09 /* LCPaasClient_internal.h in Headers */,
14381458
D30B6ADE24A09F1E006ABE09 /* LCGPBArray.h in Headers */,
14391459
D30B6A7024A09D7B006ABE09 /* LCPaasClient.h in Headers */,
14401460
D30B6ADB24A09F1E006ABE09 /* LCGPBApi.pbobjc.h in Headers */,
@@ -1491,6 +1511,7 @@
14911511
D30B6AA524A09E35006ABE09 /* LCDatabaseCommon.h in Headers */,
14921512
D30B6B2124A09F59006ABE09 /* MessagesProtoOrig.pbobjc.h in Headers */,
14931513
D30B6B3A24A09F79006ABE09 /* LCIMMessageCacheStoreSQL.h in Headers */,
1514+
D365E42426C3D29F00148DE8 /* LCLeaderboard.h in Headers */,
14941515
D30B6A6624A09D62006ABE09 /* LCCloudQueryResult.h in Headers */,
14951516
D30B6A8124A09DCA006ABE09 /* LCNetworking.h in Headers */,
14961517
D30B6B3B24A09F79006ABE09 /* LCIMConversationCacheStore.h in Headers */,
@@ -1688,6 +1709,7 @@
16881709
D30B6B5924A09FB6006ABE09 /* LCRTMWebSocket.m in Sources */,
16891710
D30B6A8F24A09DDF006ABE09 /* LCDatabase.m in Sources */,
16901711
D30B6A7724A09DA3006ABE09 /* LCSearchQuery.m in Sources */,
1712+
D365E42526C3D29F00148DE8 /* LCLeaderboard.m in Sources */,
16911713
D30B6AA424A09E35006ABE09 /* LCUtils.m in Sources */,
16921714
D30B6AB924A09E6F006ABE09 /* LCSMS.m in Sources */,
16931715
D30B6AD124A09ED2006ABE09 /* LCIMKeyedConversation.m in Sources */,
@@ -1778,6 +1800,8 @@
17781800
D313718026BBDAC200123756 /* LCQueryTestCase.swift in Sources */,
17791801
D36A095A25BEA75000A4F312 /* IMMessageTestCase.swift in Sources */,
17801802
D3AD74AB24BC216200D1BBEE /* LCUserTestCase.swift in Sources */,
1803+
D33127D526CE391500BBDE09 /* LCLeaderboardTestCase.swift in Sources */,
1804+
D33127D326CBAD6D00BBDE09 /* LCFileTestCase.swift in Sources */,
17811805
D3A397F124A5A4670087D6F8 /* RTMConnectionTestCase.swift in Sources */,
17821806
D39724C624A852400099A518 /* IMClientTestCase.swift in Sources */,
17831807
D39724C424A5CD3C0099A518 /* RTMBaseTestCase.swift in Sources */,

AVOS/LeanCloudObjc/Foundation.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,6 @@
5959
// SMS & Captcha
6060
#import "LCCaptcha.h"
6161
#import "LCSMS.h"
62+
63+
// Leaderboard
64+
#import "LCLeaderboard.h"

AVOS/LeanCloudObjcTests/BaseTestCase.swift

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,32 @@ class BaseTestCase: XCTestCase {
2525
let id: String
2626
let key: String
2727
let serverURL: String
28+
let masterKey: String
2829
}
2930

3031
static let cnApp = AppInfo(
3132
id: "S5vDI3IeCk1NLLiM1aFg3262-gzGzoHsz",
3233
key: "7g5pPsI55piz2PRLPWK5MPz0",
33-
serverURL: "https://s5vdi3ie.lc-cn-n1-shared.com")
34+
serverURL: "https://s5vdi3ie.lc-cn-n1-shared.com",
35+
masterKey: "Q26gTodbyi1Ki7lM9vtncF6U,master")
3436

3537
static let ceApp = AppInfo(
3638
id: "skhiVsqIk7NLVdtHaUiWn0No-9Nh9j0Va",
3739
key: "T3TEAIcL8Ls5XGPsGz41B1bz",
38-
serverURL: "https://skhivsqi.lc-cn-e1-shared.com")
40+
serverURL: "https://skhivsqi.lc-cn-e1-shared.com",
41+
masterKey: "FTPdEcG7vLKxNqKxYhTFdK4g,master")
3942

4043
static let usApp = AppInfo(
4144
id: "jenSt9nvWtuJtmurdE28eg5M-MdYXbMMI",
4245
key: "8VLPsDlskJi8KsKppED4xKS0",
43-
serverURL: "")
46+
serverURL: "",
47+
masterKey: "fasiJXz8jvSwn3G2B2QeraRe,master")
48+
49+
static let appInfoTable = [
50+
cnApp.id : cnApp,
51+
ceApp.id : ceApp,
52+
usApp.id : usApp,
53+
]
4454

4555
override class func setUp() {
4656
super.setUp()
@@ -103,3 +113,22 @@ extension BaseTestCase {
103113
wait(for: [exp], timeout: seconds)
104114
}
105115
}
116+
117+
extension BaseTestCase {
118+
119+
func useMasterKey(_ application: LCApplication = .default()) {
120+
guard let appInfo = BaseTestCase.appInfoTable[application.identifier],
121+
!appInfo.masterKey.isEmpty else {
122+
return
123+
}
124+
application.setWithIdentifier(appInfo.id, key: appInfo.masterKey)
125+
}
126+
127+
func useCommonKey(_ application: LCApplication = .default()) {
128+
guard let appInfo = BaseTestCase.appInfoTable[application.identifier],
129+
!appInfo.masterKey.isEmpty else {
130+
return
131+
}
132+
application.setWithIdentifier(appInfo.id, key: appInfo.key)
133+
}
134+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// LCFileTestCase.swift
3+
// LeanCloudObjcTests
4+
//
5+
// Created by pzheng on 2021/08/17.
6+
// Copyright © 2021 LeanCloud Inc. All rights reserved.
7+
//
8+
9+
import XCTest
10+
@testable import LeanCloudObjc
11+
12+
class LCFileTestCase: BaseTestCase {
13+
14+
func testObjectAssociation() {
15+
let data = uuid.data(using: .utf8)!
16+
let file = LCFile(data: data)
17+
expecting { exp in
18+
file.saveInBackground { succeeded, error in
19+
XCTAssertTrue(succeeded)
20+
XCTAssertNil(error)
21+
exp.fulfill()
22+
}
23+
}
24+
25+
let fileFieldKey = "fileField"
26+
let object = LCObject()
27+
object[fileFieldKey] = file;
28+
XCTAssertTrue(object.save())
29+
30+
guard let objectId = object.objectId else {
31+
XCTFail()
32+
return
33+
}
34+
35+
let object0 = LCObject(objectId: objectId)
36+
XCTAssertTrue(object0.fetch())
37+
XCTAssertTrue(object0[fileFieldKey] is LCFile)
38+
}
39+
}

0 commit comments

Comments
 (0)