AmazonChimeSDK/AmazonChimeSDKTests/internal/ingestion/EventSQLiteDaoTests.swift (47 lines of code) (raw):
//
// EventSQLiteDaoTests.swift
// AmazonChimeSDK
//
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//
@testable import AmazonChimeSDK
import Mockingbird
import XCTest
class EventSQLiteDaoTests: XCTestCase {
private var eventDao: EventSQLiteDao!
private let tableName = "Events"
private var sqliteManagerMock: DatabaseManagerMock!
private let mockMap = [
"id": "6b1d60db-bfa3-41fd-8448-7737f961cf3d",
"data": "{\"name\":\"meetingEnded\",\"eventAttributes\":{\"meetingStatus\":\"ok\"}}"
]
private let uuid = UUID(uuidString: "6b1d60db-bfa3-41fd-8448-7737f961cf3d")?.uuidString
private let mockMeetingEventItem = MeetingEventItem(id: UUID(uuidString: "6b1d60db-bfa3-41fd-8448-7737f961cf3d")!.uuidString,
data: IngestionMeetingEvent(name: String(describing: EventName.meetingEnded),
eventAttributes: [:]))
override func setUp() {
sqliteManagerMock = mock(DatabaseManager.self)
let loggerMock = mock(Logger.self)
given(sqliteManagerMock.query(tableName: any(), size: any())).willReturn([mockMap])
given(sqliteManagerMock.insert(tableName: any(), contentValue: any())).willReturn(true)
given(sqliteManagerMock.insertMultiples(tableName: any(), contentValues: any())).willReturn(true)
given(sqliteManagerMock.delete(tableName: any(), ids: any())).willReturn(true)
eventDao = EventSQLiteDao(sqliteManager: sqliteManagerMock, logger: loggerMock)
}
func testQueryShouldCallDatabaseManagerQuery() {
eventDao.queryMeetingEventItems(size: 10)
verify(sqliteManagerMock.query(tableName: self.tableName, size: 10)).wasCalled(1)
}
func testQueryShouldReturnMeetingEventItem() {
let items = eventDao.queryMeetingEventItems(size: 10)
XCTAssertNotNil(items)
XCTAssertGreaterThan(items.count, 0)
XCTAssertEqual(String(describing: EventName.meetingEnded), items[0].data.name)
}
func testInsertShouldCallDatabaseManagerWrite() {
eventDao.insertMeetingEvent(event: mockMeetingEventItem)
verify(sqliteManagerMock.insert(tableName: self.tableName, contentValue: any())).wasCalled(1)
}
func testDeleteShouldCallDatabaseManagerWrite() {
eventDao.deleteMeetingEventsByIds(ids: [uuid!])
verify(sqliteManagerMock.delete(tableName: self.tableName, ids: any())).wasCalled(1)
}
func testConstructorShouldCallDatabaseManagerExecute() {
eventDao.deleteMeetingEventsByIds(ids: [uuid!])
verify(sqliteManagerMock.delete(tableName: self.tableName, ids: any())).wasCalled(1)
}
}