mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			118 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Objective-C
		
	
| //
 | |
| //  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | |
| //
 | |
| 
 | |
| #import "OWSDevice.h"
 | |
| #import "OWSPrimaryStorage.h"
 | |
| #import "TSAttachmentStream.h"
 | |
| #import "TSContactThread.h"
 | |
| #import "TSIncomingMessage.h"
 | |
| #import "TSOutgoingMessage.h"
 | |
| #import <XCTest/XCTest.h>
 | |
| 
 | |
| @interface TSThreadTest : XCTestCase
 | |
| 
 | |
| @end
 | |
| 
 | |
| @implementation TSThreadTest
 | |
| 
 | |
| - (void)setUp
 | |
| {
 | |
|     [super setUp];
 | |
| 
 | |
|     // Register views, etc.
 | |
|     [[OWSPrimaryStorage sharedManager] setupDatabaseWithSafeBlockingMigrations:^{
 | |
|     }];
 | |
| }
 | |
| 
 | |
| - (void)tearDown
 | |
| {
 | |
|     // Put teardown code here. This method is called after the invocation of each test method in the class.
 | |
|     [super tearDown];
 | |
| }
 | |
| 
 | |
| - (void)testDeletingThreadDeletesInteractions
 | |
| {
 | |
|     TSContactThread *thread = [[TSContactThread alloc] initWithUniqueId:@"fake-test-thread"];
 | |
|     [thread save];
 | |
| 
 | |
|     [TSInteraction removeAllObjectsInCollection];
 | |
|     XCTAssertEqual(0, [thread numberOfInteractions]);
 | |
| 
 | |
|     TSIncomingMessage *incomingMessage = [[TSIncomingMessage alloc] initWithTimestamp:10000
 | |
|                                                                              inThread:thread
 | |
|                                                                              authorId:@"fake-author-id"
 | |
|                                                                        sourceDeviceId:OWSDevicePrimaryDeviceId
 | |
|                                                                           messageBody:@"Incoming message body"];
 | |
|     [incomingMessage save];
 | |
| 
 | |
|     TSOutgoingMessage *outgoingMessage =
 | |
|         [[TSOutgoingMessage alloc] initWithTimestamp:20000 inThread:thread messageBody:@"outgoing message body"];
 | |
|     [outgoingMessage save];
 | |
| 
 | |
|     XCTAssertEqual(2, [thread numberOfInteractions]);
 | |
| 
 | |
|     [thread remove];
 | |
|     XCTAssertEqual(0, [thread numberOfInteractions]);
 | |
|     XCTAssertEqual(0, [TSInteraction numberOfKeysInCollection]);
 | |
| }
 | |
| 
 | |
| - (void)testDeletingThreadDeletesAttachmentFiles
 | |
| {
 | |
|     TSContactThread *thread = [[TSContactThread alloc] initWithUniqueId:@"fake-test-thread"];
 | |
|     [thread save];
 | |
| 
 | |
|     // Sanity check
 | |
|     [TSInteraction removeAllObjectsInCollection];
 | |
|     XCTAssertEqual(0, [thread numberOfInteractions]);
 | |
| 
 | |
|     NSError *error;
 | |
|     TSAttachmentStream *incomingAttachment = [[TSAttachmentStream alloc] initWithContentType:@"image/jpeg"
 | |
|                                                                               sourceFilename:nil];
 | |
|     [incomingAttachment writeData:[NSData new] error:&error];
 | |
|     [incomingAttachment save];
 | |
| 
 | |
|     // Sanity check
 | |
|     BOOL incomingFileWasCreated = [[NSFileManager defaultManager] fileExistsAtPath:[incomingAttachment filePath]];
 | |
|     XCTAssert(incomingFileWasCreated);
 | |
| 
 | |
|     TSIncomingMessage *incomingMessage = [[TSIncomingMessage alloc] initWithTimestamp:10000
 | |
|                                                                              inThread:thread
 | |
|                                                                              authorId:@"fake-author-id"
 | |
|                                                                        sourceDeviceId:OWSDevicePrimaryDeviceId
 | |
|                                                                           messageBody:@"incoming message body"
 | |
|                                                                         attachmentIds:@[ incomingAttachment.uniqueId ]
 | |
|                                                                      expiresInSeconds:0];
 | |
|     [incomingMessage save];
 | |
| 
 | |
|     TSAttachmentStream *outgoingAttachment = [[TSAttachmentStream alloc] initWithContentType:@"image/jpeg"
 | |
|                                                                               sourceFilename:nil];
 | |
|     [outgoingAttachment writeData:[NSData new] error:&error];
 | |
|     [outgoingAttachment save];
 | |
| 
 | |
|     // Sanity check
 | |
|     BOOL outgoingFileWasCreated = [[NSFileManager defaultManager] fileExistsAtPath:[outgoingAttachment filePath]];
 | |
|     XCTAssert(outgoingFileWasCreated);
 | |
| 
 | |
|     TSOutgoingMessage *outgoingMessage = [[TSOutgoingMessage alloc] initWithTimestamp:10000
 | |
|                                                                              inThread:thread
 | |
|                                                                           messageBody:@"outgoing message body"
 | |
|                                                                         attachmentIds:[@[ outgoingAttachment.uniqueId ] mutableCopy]];
 | |
|     [outgoingMessage save];
 | |
| 
 | |
|     // Sanity check
 | |
|     XCTAssertEqual(2, [thread numberOfInteractions]);
 | |
| 
 | |
|     // Actual Test Follows
 | |
|     [thread remove];
 | |
|     XCTAssertEqual(0, [thread numberOfInteractions]);
 | |
| 
 | |
|     BOOL incomingFileStillExists = [[NSFileManager defaultManager] fileExistsAtPath:[incomingAttachment filePath]];
 | |
|     XCTAssertFalse(incomingFileStillExists);
 | |
| 
 | |
|     BOOL outgoingFileStillExists = [[NSFileManager defaultManager] fileExistsAtPath:[outgoingAttachment filePath]];
 | |
|     XCTAssertFalse(outgoingFileStillExists);
 | |
| }
 | |
| 
 | |
| @end
 |