// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import XCTest import AWSPinpoint @testable import Amplify @_spi(InternalAWSPinpoint) @testable import InternalAWSPinpoint class EventRecorderTests: XCTestCase { var recorder: AnalyticsEventRecording! var storage: MockAnalyticsEventStorage! var pinpointClient: MockPinpointClient! var endpointClient: MockEndpointClient! override func setUp() { pinpointClient = MockPinpointClient() endpointClient = MockEndpointClient() storage = MockAnalyticsEventStorage() do { recorder = try EventRecorder(appId: "appId", storage: storage, pinpointClient: pinpointClient, endpointClient: endpointClient) } catch { XCTFail("Failed to setup EventRecorderTests") } } /// - Given: a event recorder /// - When: instance is constructed /// - Then: storage initializatin is called followed by disk size check and dirty event removal func testRecorderInitilization() { XCTAssertEqual(storage.initializeStorageCallCount, 1) XCTAssertEqual(storage.deleteDirtyEventCallCount, 1) XCTAssertEqual(storage.checkDiskSizeCallCount, 1) } /// - Given: a event recorder /// - When: a new pinpoint event is aved /// - Then: the event is saved to storage followed by a disk size check func testSaveEvent() { let session = PinpointSession(sessionId: "1", startTime: Date(), stopTime: nil) let event = PinpointEvent(id: "1", eventType: "eventType", eventDate: Date(), session: session) XCTAssertEqual(storage.events.count, 0) XCTAssertEqual(storage.checkDiskSizeCallCount, 1) do { try recorder.save(event) } catch { XCTFail("Failed to save events") } XCTAssertEqual(storage.events.count, 1) XCTAssertEqual(event, storage.events[0]) XCTAssertEqual(storage.checkDiskSizeCallCount, 2) } }