// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import "OWSDisappearingMessagesConfiguration.h" #import "SSKBaseTestObjC.h" NS_ASSUME_NONNULL_BEGIN @interface OWSDisappearingMessagesConfigurationTest : SSKBaseTestObjC @end @implementation OWSDisappearingMessagesConfigurationTest - (void)testDictionaryValueDidChange { OWSDisappearingMessagesConfiguration *configuration = [[OWSDisappearingMessagesConfiguration alloc] initWithThreadId:@"fake-thread-id" enabled:YES durationSeconds:10]; XCTAssertTrue(configuration.dictionaryValueDidChange); [configuration save]; XCTAssertFalse(configuration.dictionaryValueDidChange); configuration.enabled = NO; XCTAssertTrue(configuration.dictionaryValueDidChange); configuration.enabled = YES; XCTAssertFalse(configuration.dictionaryValueDidChange); OWSDisappearingMessagesConfiguration *reloadedConfiguration = [OWSDisappearingMessagesConfiguration fetchObjectWithUniqueID:@"fake-thread-id"]; XCTAssertNotNil(reloadedConfiguration); // Sanity Check. XCTAssertFalse(reloadedConfiguration.dictionaryValueDidChange); reloadedConfiguration.durationSeconds = 30; XCTAssertTrue(reloadedConfiguration.dictionaryValueDidChange); reloadedConfiguration.durationSeconds = 10; XCTAssertFalse(reloadedConfiguration.dictionaryValueDidChange); } - (void)testDontStoreEphemeralProperties { OWSDisappearingMessagesConfiguration *configuration = [[OWSDisappearingMessagesConfiguration alloc] initWithThreadId:@"fake-thread-id" enabled:YES durationSeconds:10]; // Unfortunately this test will break every time you add, remove, or rename a property, but on the // plus side it has a chance of catching when you indadvertently remove our ephemeral properties // from our Mantle storage blacklist. NSArray *expected = @[ @"enabled", @"durationSeconds", @"uniqueId" ]; XCTAssertEqualObjects(expected, [configuration.dictionaryValue allKeys]); } @end NS_ASSUME_NONNULL_END