amplify-swift/AmplifyPlugins/Analytics/Tests/AWSPinpointAnalyticsPluginU.../EventRecorderTests.swift

60 lines
2.0 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import XCTest
import AWSPinpoint
@testable import Amplify
@testable import AWSPinpointAnalyticsPlugin
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)
}
}