Skip to content

Commit ccb7cab

Browse files
committed
Merge pull request #699 from ParsePlatform/nlutsenko.generics.analytics
Add nullability annotations and generic types to AnalyticsController.
2 parents c7e8645 + b18c55b commit ccb7cab

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

Parse/Internal/Analytics/Controller/PFAnalyticsController.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@
1212
#import <Parse/PFConstants.h>
1313

1414
#import "PFDataProvider.h"
15+
#import "PFMacros.h"
1516

1617
@class BFTask PF_GENERIC(__covariant BFGenericType);
1718

19+
NS_ASSUME_NONNULL_BEGIN
20+
1821
@interface PFAnalyticsController : NSObject
1922

2023
@property (nonatomic, weak, readonly) id<PFEventuallyQueueProvider> dataSource;
@@ -42,8 +45,8 @@
4245
4346
@return `BFTask` with result set to `@YES`.
4447
*/
45-
- (BFTask *)trackAppOpenedEventAsyncWithRemoteNotificationPayload:(NSDictionary *)payload
46-
sessionToken:(NSString *)sessionToken;
48+
- (BFTask PF_GENERIC(PFVoid)*)trackAppOpenedEventAsyncWithRemoteNotificationPayload:(nullable NSDictionary *)payload
49+
sessionToken:(nullable NSString *)sessionToken;
4750

4851
/**
4952
Tracks the occurrence of a custom event with additional dimensions.
@@ -54,8 +57,10 @@
5457
5558
@return `BFTask` with result set to `@YES`.
5659
*/
57-
- (BFTask *)trackEventAsyncWithName:(NSString *)name
58-
dimensions:(NSDictionary *)dimensions
59-
sessionToken:(NSString *)sessionToken;
60+
- (BFTask PF_GENERIC(PFVoid)*)trackEventAsyncWithName:(NSString *)name
61+
dimensions:(nullable NSDictionary PF_GENERIC(NSString *, NSString *)*)dimensions
62+
sessionToken:(nullable NSString *)sessionToken;
6063

6164
@end
65+
66+
NS_ASSUME_NONNULL_END

Parse/Internal/Analytics/Controller/PFAnalyticsController.m

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ + (instancetype)controllerWithDataSource:(id<PFEventuallyQueueProvider>)dataSour
4848
#pragma mark - Track Event
4949
///--------------------------------------
5050

51-
- (BFTask *)trackAppOpenedEventAsyncWithRemoteNotificationPayload:(NSDictionary *)payload
52-
sessionToken:(NSString *)sessionToken {
51+
- (BFTask PF_GENERIC(PFVoid)*)trackAppOpenedEventAsyncWithRemoteNotificationPayload:(nullable NSDictionary *)payload
52+
sessionToken:(nullable NSString *)sessionToken {
5353
@weakify(self);
5454
return [[BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id{
5555
@strongify(self);
@@ -62,12 +62,12 @@ - (BFTask *)trackAppOpenedEventAsyncWithRemoteNotificationPayload:(NSDictionary
6262
PFRESTCommand *command = [PFRESTAnalyticsCommand trackAppOpenedEventCommandWithPushHash:pushDigest
6363
sessionToken:sessionToken];
6464
return [self.eventuallyQueue enqueueCommandInBackground:command];
65-
}] continueWithSuccessResult:@YES];
65+
}] continueWithSuccessResult:nil];
6666
}
6767

68-
- (BFTask *)trackEventAsyncWithName:(NSString *)name
69-
dimensions:(NSDictionary *)dimensions
70-
sessionToken:(NSString *)sessionToken {
68+
- (BFTask PF_GENERIC(PFVoid)*)trackEventAsyncWithName:(NSString *)name
69+
dimensions:(nullable NSDictionary PF_GENERIC(NSString *, NSString *)*)dimensions
70+
sessionToken:(nullable NSString *)sessionToken {
7171
PFParameterAssert([[name stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length],
7272
@"A name for the custom event must be provided.");
7373

@@ -86,7 +86,7 @@ - (BFTask *)trackEventAsyncWithName:(NSString *)name
8686
dimensions:encodedDimensions
8787
sessionToken:sessionToken];
8888
return [self.eventuallyQueue enqueueCommandInBackground:command];
89-
}] continueWithSuccessResult:@YES];
89+
}] continueWithSuccessResult:nil];
9090
}
9191

9292
///--------------------------------------

Tests/Unit/AnalyticsControllerTests.m

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,23 @@ - (void)testTrackEventWithInvalidParameters {
6060
id dataSource = [self dataSourceMockWithCommandResult:nil];
6161
PFAnalyticsController *controller = [PFAnalyticsController controllerWithDataSource:dataSource];
6262

63+
#pragma clang diagnostic push
64+
#pragma clang diagnostic ignored "-Wnonnull"
6365
PFAssertThrowsInvalidArgumentException([controller trackEventAsyncWithName:nil dimensions:nil sessionToken:nil]);
66+
#pragma clang diagnostic pop
67+
6468
PFAssertThrowsInvalidArgumentException([controller trackEventAsyncWithName:@" " dimensions:nil sessionToken:nil]);
6569
PFAssertThrowsInvalidArgumentException([controller trackEventAsyncWithName:@"\n" dimensions:nil sessionToken:nil]);
70+
71+
#pragma clang diagnostic push
72+
#pragma clang diagnostic ignored "-Wobjc-literal-conversion"
6673
PFAssertThrowsInvalidArgumentException([controller trackEventAsyncWithName:@"f"
6774
dimensions:@{ @2 : @"five" }
6875
sessionToken:nil]);
6976
PFAssertThrowsInvalidArgumentException([controller trackEventAsyncWithName:@"f"
7077
dimensions:@{ @"num" : @5 }
7178
sessionToken:nil]);
79+
#pragma clang diagnostic pop
7280
}
7381

7482
- (void)testTrackEventParameters {
@@ -103,7 +111,7 @@ - (void)testTrackEventResult {
103111
[[controller trackEventAsyncWithName:@"a"
104112
dimensions:nil
105113
sessionToken:nil] continueWithSuccessBlock:^id(BFTask *task) {
106-
XCTAssertEqualObjects(task.result, @YES);
114+
XCTAssertNil(task.result);
107115
[expectation fulfill];
108116
return nil;
109117
}];
@@ -140,7 +148,7 @@ - (void)testTrackAppOpenedResult {
140148
XCTestExpectation *expectation = [self currentSelectorTestExpectation];
141149
[[controller trackAppOpenedEventAsyncWithRemoteNotificationPayload:nil
142150
sessionToken:nil] continueWithSuccessBlock:^id(BFTask *task) {
143-
XCTAssertEqualObjects(task.result, @YES);
151+
XCTAssertNil(task.result);
144152
[expectation fulfill];
145153
return nil;
146154
}];

0 commit comments

Comments
 (0)