Skip to content

Commit 577089b

Browse files
authored
Merge pull request #1346 from BranchMetrics/SDK-2163
[SDK-2163] Added new BranchLogger class
2 parents 6a43f49 + 1c4df07 commit 577089b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+553
-570
lines changed

Branch-TestBed/Branch-SDK-Tests/BNCLogTests.m

Lines changed: 0 additions & 43 deletions
This file was deleted.

Branch-TestBed/Branch-SDK-Tests/BNCTestCase.m

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
*/
1010

1111
#import "BNCTestCase.h"
12-
#import "BNCLog.h"
1312
#import "Branch.h"
1413
#import "BNCApplication+BNCTest.h"
1514

@@ -96,7 +95,6 @@ - (double) systemVersion {
9695

9796
+ (void) initialize {
9897
if (self != [BNCTestCase self]) return;
99-
BNCLogSetDisplayLevel(BNCLogLevelAll);
10098

10199
savedRandomizedBundleToken = [BNCPreferenceHelper sharedInstance].randomizedBundleToken;
102100
[Branch clearAll];

Branch-TestBed/Branch-SDK-Tests/BranchClassTests.m

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313
#import "BNCAppGroupsData.h"
1414
#import "BNCPartnerParameters.h"
1515

16+
@interface BNCPreferenceHelper(Test)
17+
// Expose internal private method to clear EEA data
18+
- (void)writeObjectToDefaults:(NSString *)key value:(NSObject *)value;
19+
@end
20+
1621
@interface BranchClassTests : XCTestCase
1722
@property (nonatomic, strong) Branch *branch;
1823
@end
@@ -221,14 +226,19 @@ - (void)testGetLongURLWithParamsAndChannelAndTagsAndFeatureAndStageAndAlias {
221226
}
222227

223228
- (void)testSetDMAParamsForEEA {
224-
225229
XCTAssertFalse([[BNCPreferenceHelper sharedInstance] eeaRegionInitialized]);
230+
226231
[Branch setDMAParamsForEEA:FALSE AdPersonalizationConsent:TRUE AdUserDataUsageConsent:TRUE];
227232
XCTAssertTrue([[BNCPreferenceHelper sharedInstance] eeaRegionInitialized]);
228233
XCTAssertFalse([BNCPreferenceHelper sharedInstance].eeaRegion);
229234
XCTAssertTrue([BNCPreferenceHelper sharedInstance].adPersonalizationConsent);
230235
XCTAssertTrue([BNCPreferenceHelper sharedInstance].adUserDataUsageConsent);
231236

237+
// Manually clear values after testing
238+
// By design, this API is meant to be set once and always set. However, in a test scenario it needs to be cleared.
239+
[[BNCPreferenceHelper sharedInstance] writeObjectToDefaults:@"bnc_dma_eea" value:nil];
240+
[[BNCPreferenceHelper sharedInstance] writeObjectToDefaults:@"bnc_dma_ad_personalization" value:nil];
241+
[[BNCPreferenceHelper sharedInstance] writeObjectToDefaults:@"bnc_dma_ad_user_data" value:nil];
232242
}
233243

234244
@end
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
//
2+
// BranchLoggerTests.m
3+
// Branch-SDK-Tests
4+
//
5+
// Created by Nipun Singh on 2/5/24.
6+
// Copyright © 2024 Branch, Inc. All rights reserved.
7+
//
8+
9+
#import <XCTest/XCTest.h>
10+
#import "BranchLogger.h"
11+
#import "Branch.h"
12+
13+
@interface BranchLoggerTests : XCTestCase
14+
@end
15+
16+
@implementation BranchLoggerTests
17+
18+
- (void)testEnableLoggingSetsCorrectDefaultLevel {
19+
[[Branch getInstance] enableLogging];
20+
XCTAssertEqual([BranchLogger shared].logLevelThreshold, BranchLogLevelDebug, "Default log level should be Debug.");
21+
}
22+
23+
- (void)testLogLevelThresholdBlocksLowerLevels {
24+
BranchLogger *logger = [BranchLogger new];
25+
logger.loggingEnabled = true;
26+
logger.logLevelThreshold = BranchLogLevelDebug;
27+
28+
XCTestExpectation *expectation = [self expectationWithDescription:@"Log callback expectation for message that should pass the threshold"];
29+
30+
logger.logCallback = ^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error) {
31+
if ([message isEqualToString:@"[BranchSDK][Debug][BranchLoggerTests testLogLevelThresholdBlocksLowerLevels] This message should trigger the log callback."] && logLevel >= BranchLogLevelDebug) {
32+
[expectation fulfill];
33+
} else if (logLevel == BranchLogLevelVerbose) {
34+
XCTFail();
35+
}
36+
};
37+
38+
[logger logVerbose:@"This verbose message should not trigger the log callback."];
39+
[logger logDebug:@"This message should trigger the log callback."];
40+
41+
[self waitForExpectationsWithTimeout:1 handler:nil];
42+
}
43+
44+
- (void)testLogCallbackExecutesWithCorrectParameters {
45+
XCTestExpectation *expectation = [self expectationWithDescription:@"Log callback expectation"];
46+
NSString *expectedMessage = @"[BranchSDK][Info][BranchLoggerTests testLogCallbackExecutesWithCorrectParameters] Test message";
47+
BranchLogLevel expectedLevel = BranchLogLevelInfo;
48+
49+
BranchLogger *logger = [BranchLogger new];
50+
51+
logger.logCallback = ^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error) {
52+
XCTAssertEqualObjects(message, expectedMessage, "Logged message does not match expected message.");
53+
XCTAssertEqual(logLevel, expectedLevel, "Logged level does not match expected level.");
54+
XCTAssertNil(error, "Error should be nil.");
55+
[expectation fulfill];
56+
};
57+
58+
logger.loggingEnabled = YES;
59+
logger.logLevelThreshold = BranchLogLevelInfo;
60+
[logger logInfo:@"Test message"];
61+
62+
[self waitForExpectationsWithTimeout:1 handler:nil];
63+
}
64+
65+
- (void)testLogLevelSpecificityFiltersLowerLevels {
66+
BranchLogger *logger = [BranchLogger new];
67+
logger.loggingEnabled = YES;
68+
logger.logLevelThreshold = BranchLogLevelWarning;
69+
70+
XCTestExpectation *verboseExpectation = [self expectationWithDescription:@"Verbose log callback"];
71+
verboseExpectation.inverted = YES;
72+
XCTestExpectation *errorExpectation = [self expectationWithDescription:@"Error log callback"];
73+
74+
__block NSUInteger callbackCount = 0;
75+
logger.logCallback = ^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error) {
76+
if (logLevel == BranchLogLevelVerbose) {
77+
[verboseExpectation fulfill];
78+
} else if (logLevel == BranchLogLevelError) {
79+
[errorExpectation fulfill];
80+
}
81+
callbackCount++;
82+
};
83+
84+
[logger logVerbose:@"This should not be logged due to log level threshold."];
85+
[logger logError:@"This should be logged" error:nil];
86+
87+
[self waitForExpectations:@[verboseExpectation, errorExpectation] timeout:2];
88+
XCTAssertEqual(callbackCount, 1, "Only one log callback should have been invoked.");
89+
}
90+
91+
- (void)testErrorLoggingIncludesErrorDetails {
92+
BranchLogger *logger = [BranchLogger new];
93+
logger.loggingEnabled = YES;
94+
95+
XCTestExpectation *expectation = [self expectationWithDescription:@"Error log includes error details"];
96+
97+
NSError *testError = [NSError errorWithDomain:@"TestDomain" code:42 userInfo:@{NSLocalizedDescriptionKey: @"Test error description"}];
98+
logger.logCallback = ^(NSString * _Nonnull message, BranchLogLevel logLevel, NSError * _Nullable error) {
99+
if ([message containsString:@"Test error description"] && error == testError) {
100+
[expectation fulfill];
101+
}
102+
};
103+
104+
[logger logError:@"Testing error logging" error:testError];
105+
106+
[self waitForExpectationsWithTimeout:1 handler:nil];
107+
}
108+
109+
@end

Branch-TestBed/Branch-SDK-Tests/BranchOpenRequestTests.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
#import "BNCTestCase.h"
1010
#import "Branch.h"
11-
#import "BNCLog.h"
1211
#import "BNCApplication+BNCTest.h"
1312
#import "BranchOpenRequest.h"
1413
#import "BranchConstants.h"

0 commit comments

Comments
 (0)