@@ -48,7 +48,7 @@ final class RNSentryReplayOptions: XCTestCase {
4848 }
4949
5050 func assertAllDefaultReplayOptionsAreNotNil( replayOptions: [ String : Any ] ) {
51- XCTAssertEqual ( replayOptions. count, 9 )
51+ XCTAssertEqual ( replayOptions. count, 11 )
5252 XCTAssertNotNil ( replayOptions [ " sessionSampleRate " ] )
5353 XCTAssertNotNil ( replayOptions [ " errorSampleRate " ] )
5454 XCTAssertNotNil ( replayOptions [ " maskAllImages " ] )
@@ -58,6 +58,8 @@ final class RNSentryReplayOptions: XCTestCase {
5858 XCTAssertNotNil ( replayOptions [ " enableViewRendererV2 " ] )
5959 XCTAssertNotNil ( replayOptions [ " enableFastViewRendering " ] )
6060 XCTAssertNotNil ( replayOptions [ " quality " ] )
61+ XCTAssertNotNil ( replayOptions [ " includedViewClasses " ] )
62+ XCTAssertNotNil ( replayOptions [ " excludedViewClasses " ] )
6163 }
6264
6365 func testSessionSampleRate( ) {
@@ -318,4 +320,64 @@ final class RNSentryReplayOptions: XCTestCase {
318320
319321 XCTAssertEqual ( actualOptions. sessionReplay. quality, SentryReplayOptions . SentryReplayQuality. medium)
320322 }
323+
324+ func testIncludedViewClasses( ) {
325+ let optionsDict = ( [
326+ " dsn " : " https://abc@def.ingest.sentry.io/1234567 " ,
327+ " replaysOnErrorSampleRate " : 0.75 ,
328+ " mobileReplayOptions " : [ " includedViewClasses " : [ " UILabel " , " UIView " , " UITextView " ] ]
329+ ] as NSDictionary ) . mutableCopy ( ) as! NSMutableDictionary
330+
331+ RNSentryReplay . updateOptions ( optionsDict)
332+
333+ let actualOptions = try ! SentryOptionsInternal . initWithDict ( optionsDict as! [ String : Any ] )
334+
335+ let includedViewClasses = actualOptions. sessionReplay. includedViewClasses
336+ XCTAssertEqual ( includedViewClasses. count, 3 )
337+ XCTAssertTrue ( includedViewClasses. contains ( " UILabel " ) )
338+ XCTAssertTrue ( includedViewClasses. contains ( " UIView " ) )
339+ XCTAssertTrue ( includedViewClasses. contains ( " UITextView " ) )
340+ }
341+
342+ func testExcludedViewClasses( ) {
343+ let optionsDict = ( [
344+ " dsn " : " https://abc@def.ingest.sentry.io/1234567 " ,
345+ " replaysOnErrorSampleRate " : 0.75 ,
346+ " mobileReplayOptions " : [ " excludedViewClasses " : [ " UICollectionView " , " UITableView " , " UIScrollView " ] ]
347+ ] as NSDictionary ) . mutableCopy ( ) as! NSMutableDictionary
348+
349+ RNSentryReplay . updateOptions ( optionsDict)
350+
351+ let actualOptions = try ! SentryOptionsInternal . initWithDict ( optionsDict as! [ String : Any ] )
352+
353+ let excludedViewClasses = actualOptions. sessionReplay. excludedViewClasses
354+ XCTAssertEqual ( excludedViewClasses. count, 3 )
355+ XCTAssertTrue ( excludedViewClasses. contains ( " UICollectionView " ) )
356+ XCTAssertTrue ( excludedViewClasses. contains ( " UITableView " ) )
357+ XCTAssertTrue ( excludedViewClasses. contains ( " UIScrollView " ) )
358+ }
359+
360+ func testIncludedAndExcludedViewClasses( ) {
361+ let optionsDict = ( [
362+ " dsn " : " https://abc@def.ingest.sentry.io/1234567 " ,
363+ " replaysOnErrorSampleRate " : 0.75 ,
364+ " mobileReplayOptions " : [
365+ " includedViewClasses " : [ " UILabel " , " UIView " ] ,
366+ " excludedViewClasses " : [ " UICollectionView " ]
367+ ]
368+ ] as NSDictionary ) . mutableCopy ( ) as! NSMutableDictionary
369+
370+ RNSentryReplay . updateOptions ( optionsDict)
371+
372+ let actualOptions = try ! SentryOptionsInternal . initWithDict ( optionsDict as! [ String : Any ] )
373+
374+ let includedViewClasses = actualOptions. sessionReplay. includedViewClasses
375+ XCTAssertEqual ( includedViewClasses. count, 2 )
376+ XCTAssertTrue ( includedViewClasses. contains ( " UILabel " ) )
377+ XCTAssertTrue ( includedViewClasses. contains ( " UIView " ) )
378+
379+ let excludedViewClasses = actualOptions. sessionReplay. excludedViewClasses
380+ XCTAssertEqual ( excludedViewClasses. count, 1 )
381+ XCTAssertTrue ( excludedViewClasses. contains ( " UICollectionView " ) )
382+ }
321383}
0 commit comments