| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- //
- // DeviceLogEntryTests.swift
- // LoopKitTests
- //
- // Created by Darin Krauss on 8/26/20.
- // Copyright © 2020 LoopKit Authors. All rights reserved.
- //
- import XCTest
- import CoreData
- @testable import LoopKit
- class DeviceLogEntryEncodableTests: XCTestCase {
- private var persistentContainer: NSPersistentContainer!
- private var managedObjectContext: NSManagedObjectContext!
- override func setUp() {
- super.setUp()
- let persistentStoreDescription = NSPersistentStoreDescription()
- persistentStoreDescription.type = NSInMemoryStoreType
- persistentContainer = PersistentContainer(name: "DeviceLog")
- persistentContainer.persistentStoreDescriptions = [persistentStoreDescription]
- persistentContainer.loadPersistentStores { (_, _) in }
- managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
- managedObjectContext.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy
- managedObjectContext.automaticallyMergesChangesFromParent = true
- managedObjectContext.persistentStoreCoordinator = persistentContainer.persistentStoreCoordinator
- }
- override func tearDown() {
- managedObjectContext = nil
- persistentContainer = nil
- super.tearDown()
- }
- func testEncodable() throws {
- managedObjectContext.performAndWait {
- let deviceLogEntry = DeviceLogEntry(context: managedObjectContext)
- deviceLogEntry.type = .connection
- deviceLogEntry.managerIdentifier = "238E41EA-9576-4981-A1A4-51E10228584F"
- deviceLogEntry.deviceIdentifier = "7723A0EE-F6D5-46E0-BBFE-1DEEBF8ED6F2"
- deviceLogEntry.message = "This is the message"
- deviceLogEntry.timestamp = dateFormatter.date(from: "2020-05-14T22:38:14Z")!
- deviceLogEntry.modificationCounter = 123
- try! assertDeviceLogEntryEncodable(deviceLogEntry, encodesJSON: """
- {
- "deviceIdentifier" : "7723A0EE-F6D5-46E0-BBFE-1DEEBF8ED6F2",
- "managerIdentifier" : "238E41EA-9576-4981-A1A4-51E10228584F",
- "message" : "This is the message",
- "modificationCounter" : 123,
- "timestamp" : "2020-05-14T22:38:14Z",
- "type" : "connection"
- }
- """
- )
- }
- }
- func testEncodableOptional() throws {
- managedObjectContext.performAndWait {
- let deviceLogEntry = DeviceLogEntry(context: managedObjectContext)
- deviceLogEntry.modificationCounter = 234
- try! assertDeviceLogEntryEncodable(deviceLogEntry, encodesJSON: """
- {
- "modificationCounter" : 234
- }
- """
- )
- }
- }
- private func assertDeviceLogEntryEncodable(_ original: DeviceLogEntry, encodesJSON string: String) throws {
- let data = try encoder.encode(original)
- XCTAssertEqual(String(data: data, encoding: .utf8), string)
- }
- private let dateFormatter = ISO8601DateFormatter()
- private let encoder: JSONEncoder = {
- let encoder = JSONEncoder()
- encoder.outputFormatting = [.prettyPrinted, .sortedKeys, .withoutEscapingSlashes]
- encoder.dateEncodingStrategy = .iso8601
- return encoder
- }()
- private let decoder: JSONDecoder = {
- let decoder = JSONDecoder()
- decoder.dateDecodingStrategy = .iso8601
- return decoder
- }()
- }
|