Best Swift-snapshot-testing code snippet using PropertyListEncoder
SettingsModel.swift
Source:SettingsModel.swift
...93 func setAndSaveAuth(id: String?, auth: String?) {94 togglCredential.auth = auth95 togglCredential.id = id96 let cred = credential(id: id, auth: auth)97 let propertyListEncoder = PropertyListEncoder()98 let encodedCrednetial = try? propertyListEncoder.encode(cred)99 try? encodedCrednetial?.write(to: settingsDirectory.credentialArchieveURL)100 101 if let id = id, let auth = auth {102 print("[Save] id: \(id)")103 print("[Save] auth: \(auth)")104 }105 else {106 print("[Save] id: nil")107 print("[Save] auth: nil")108 }109 }110 111 func setAndSaveProjectList(projects: [[String: Any]]) {112 projectList = []113 for project in projects {114 if project["server_deleted_at"] == nil, let pid = project["id"] as? Int, let name = project["name"] as? String {115 projectList.append(projectInfo(pid: pid, name: name))116 }117 }118 119 let propertyListEncoder = PropertyListEncoder()120 let encodedProjects = try? propertyListEncoder.encode(projectList)121 try? encodedProjects?.write(to: settingsDirectory.projectsArchieveURL)122 123 print("[Save] Projects saved")124 for project in projectList {125 print("[Save] \(project.pid): \(project.name)")126 }127 }128 129 func saveTimerList() {130 let propertyListEncoder = PropertyListEncoder()131 let encodedtimers = try? propertyListEncoder.encode(self.timerList)132 try? encodedtimers?.write(to: settingsDirectory.timersArchieveURL)133 134 print("[Save] Timers saved")135 for timer in self.timerList {136 print("[Save] \(timer.timerName) w pos: \(timer.startTime[.positive]!), neg: \(timer.startTime[.negative]!)")137 }138 GlobalVar.settings.syncTimerList()139 }140 141 func saveMiscs() {142 let propertyListEncoder = PropertyListEncoder()143 let miscs = miscInfo(currTimerID: currTimerID, dontSleep: dontSleep, tickingSound: tickingSound)144 let encodedMiscs = try? propertyListEncoder.encode(miscs)145 try? encodedMiscs?.write(to: settingsDirectory.miscsArchieveURL)146 147 print("[Save] Miscs saved")148 }149 150 func sendTogglInfo(replyHandler: (([String : Any]) -> Void)?) {151 print("Sending Toggl Credentials")152 let propertyListEncoder = PropertyListEncoder()153 154 let currCredential = togglCredential155 let currProjectList = projectList156 let currTogglInfo = togglInfo(credential: currCredential, projectList: currProjectList)157 158 if let encodedTogglInfo = try? propertyListEncoder.encode(currTogglInfo) {159 if let handler = replyHandler {160 let replyMessage = [WCSessionMessageType.togglInfo: encodedTogglInfo]161 handler(replyMessage)162 }163 else {164 let message = [WCSessionMessageType.togglInfo: encodedTogglInfo]165 WCSession.default.sendMessage(message, replyHandler: nil, errorHandler: nil)166 }167 }168 }169 170 func deleteTimer(index: Int) {171 let timer = timerList[index]172 timerList.remove(at: index)173 deletedTimerList.append(timer)174 GlobalVar.settings.saveTimerList()175 176 for deletedTimer in deletedTimerList {177 print("[Deleted] \(deletedTimer.timerName) w created: \(deletedTimer.createdDate) modified: \(deletedTimer.modifiedDate)")178 }179 //TODO: impelement ability to save deleted timer list as well180 }181 182 func syncTimerList() {183 print("Sending TimerList to other device")184 let sendSyncListInfo = syncListInfo(timerList: timerList, deletedTimerList: deletedTimerList)185 let propertyListEncoder = PropertyListEncoder()186 if let encodedTimers = try? propertyListEncoder.encode(sendSyncListInfo) {187 let message = [WCSessionMessageType.timerList: encodedTimers]188 WCSession.default.sendMessage(message, replyHandler: { (receivedMessage) in189 print("Received TimerList from other device")190 191 let propertyListDecoder = PropertyListDecoder()192 if let data = receivedMessage[WCSessionMessageType.timerList] as? Data,193 let receivedTimerList = try? propertyListDecoder.decode([TimerModel].self, from: data) {194 195 self.timerList = receivedTimerList196 for timer in receivedTimerList {197 print("[Resulting] \(timer.timerName) w created: \(timer.createdDate) modified: \(timer.modifiedDate)")198 }199 self.deletedTimerList = []200 }201 }, errorHandler: nil)202 }203 }204 205 func receiveTogglInfo(receivedTogglInfo: togglInfo) {206 togglCredential = receivedTogglInfo.credential207 if let id = togglCredential.id, let auth = togglCredential.auth {208 print("[Received] id: \(id)")209 print("[Received] auth: \(auth)")210 }211 projectList = receivedTogglInfo.projectList212 for project in projectList {213 print("[Received] \(project.pid): \(project.name)")214 }215 }216 217 func receiveTimerList(receivedSyncListInfo: syncListInfo, replyHandler: (([String : Any]) -> Void)?) {218 let receivedTimerList = receivedSyncListInfo.timerList219 let receivedDeletedTimerList = receivedSyncListInfo.deletedTimerList220 221 for timer in receivedTimerList {222 print("[Received] \(timer.timerName) w created: \(timer.createdDate) modified: \(timer.modifiedDate)")223 }224 for timer in timerList {225 print("[Existing] \(timer.timerName) w created: \(timer.createdDate) modified: \(timer.modifiedDate)")226 }227 228 229 for receivedDeletedTimer in receivedDeletedTimerList {230 for (existingIndex, existingTimer) in timerList.enumerated() {231 let comparison = existingTimer.compare(timerModel: receivedDeletedTimer)232 switch(comparison) {233 case .different:234 continue235 default:236 timerList.remove(at: existingIndex)237 break238 }239 }240 }241 242 for (receivedIndex, receivedTimer) in receivedTimerList.enumerated() {243 var newTimer = true244 for (existingIndex, existingTimer) in timerList.enumerated() {245 let comparison = existingTimer.compare(timerModel: receivedTimer)246 switch(comparison) {247 case .same:248 print("Received: \(receivedIndex) is same as existing: \(existingIndex)")249 newTimer = false250 break251 case .older:252 print("Received: \(receivedIndex) is older than existing: \(existingIndex)")253 newTimer = false254 break255 case .newer:256 print("Received: \(receivedIndex) is newer than existing: \(existingIndex)")257 print("Updating existing: \(existingIndex)")258 timerList[existingIndex] = receivedTimer259 newTimer = false260 break261 case .different:262 continue263 }264 }265 if newTimer {266 print("Adding received: \(receivedIndex) to timer list")267 timerList.append(receivedTimer)268 }269 }270 for timer in timerList {271 print("[Resulting] \(timer.timerName) w created: \(timer.createdDate) modified: \(timer.modifiedDate)")272 }273 274 if let handler = replyHandler {275 let propertyListEncoder = PropertyListEncoder()276 if let encodedTimers = try? propertyListEncoder.encode(self.timerList) {277 let message = [WCSessionMessageType.timerList : encodedTimers]278 handler(message)279 }280 }281 }282}283struct directories {284 let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!285 var credentialArchieveURL: URL {286 return documentsDirectory.appendingPathComponent("credential").appendingPathExtension("plist")287 }288 var projectsArchieveURL: URL {289 return documentsDirectory.appendingPathComponent("projects").appendingPathExtension("plist")...
Inventory.swift
Source:Inventory.swift
...41 }42}43extension Inventory {44 func writeInventoryToUserData() {45 let propertyListEncoder = PropertyListEncoder()46 do {47 let inventoryData: [Product] = self.productArray48 let data = try propertyListEncoder.encode(inventoryData)49 UserDefaults.standard.set(data, forKey: "data")50 }51 catch {52 print(error)53 }54 }55 func removeProductFromInventoryMaster(product: Product) {56 guard let indexOfProduct = self.productArray.firstIndex(of: product) else { return }57 self.productArray.remove(at: indexOfProduct)58 let propertyListEncoder = PropertyListEncoder()59 do {60// let inventory: Inventory = self61 let products: [Product] = self.productArray62 let data = try propertyListEncoder.encode(products)63 UserDefaults.standard.set(data, forKey: "data")64 }65 catch {66 print(error)67 }68 }69 func addProductToInventoryMaster(product: Product) {70 self.productArray.append(product)71 let propertyListEncoder = PropertyListEncoder()72 do {73 let inventoryData: [Product] = self.productArray74 let data = try propertyListEncoder.encode(inventoryData)75 UserDefaults.standard.set(data, forKey: "data")76 }77 catch {78 print(error)79 }80 }81}82extension Inventory {83 func saveInventoryToCloud() {84 let database = CKContainer.default().privateCloudDatabase85 let encoder = PropertyListEncoder()86 do {87 let inventoryData = self.productArray88 let dataEncodedForCloud = try encoder.encode(inventoryData)89 let newInventoryForCloud = CKRecord(recordType: "Inventory", recordID: CKRecord.ID(recordName: "InventoryData"))90 newInventoryForCloud.setValue(dataEncodedForCloud, forKey: "inventoryData")91 database.save(newInventoryForCloud) { (record, error) in92 guard record != nil else { return }93 print("saved inventory to cloud \(record.debugDescription)", error?.localizedDescription ?? "No errors in saving inventory to cloud. This method should not be in use")94 }95 }96 catch {97 print(error)98 }99 }...
JSONManager.swift
Source:JSONManager.swift
...12 let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!13 14 let archiveURL = documentsDirectory.appendingPathComponent("workouts").appendingPathExtension("plist")15 16 let propertyListEncoder = PropertyListEncoder()17 18 let encodedWorkouts = try? propertyListEncoder.encode(workout)19 20 try? encodedWorkouts?.write(to: archiveURL, options: .noFileProtection)21 22 }23 24 func readWorkoutsFromDisk() -> JSONWorkouts? {25 26 let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!27 28 let archiveURL = documentsDirectory.appendingPathComponent("workouts").appendingPathExtension("plist")29 30 let propertyListDecoder = PropertyListDecoder()31 32 if let retrievedWorkoutsData = try? Data(contentsOf: archiveURL), let decodedWorkouts = try? propertyListDecoder.decode(JSONWorkouts.self, from: retrievedWorkoutsData) {33 return decodedWorkouts34 }35 return nil36 }37 38 func writeExercisesToDisk(exercises: [Exercise]) {39 40 let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!41 42 let archiveURL = documentsDirectory.appendingPathComponent("exercises").appendingPathExtension("plist")43 44 let propertyListEncoder = PropertyListEncoder()45 46 let encodedExercises = try? propertyListEncoder.encode(exercises)47 48 try? encodedExercises?.write(to: archiveURL, options: .noFileProtection)49 50 }51 52 func readExercisesFromDisk() -> [Exercise]? {53 54 let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!55 56 let archiveURL = documentsDirectory.appendingPathComponent("exercises").appendingPathExtension("plist")57 58 let propertyListDecoder = PropertyListDecoder()...
PropertyListEncoder
Using AI Code Generation
1import Foundation2import SnapshotTesting3let encoder = PropertyListEncoder()4let data = try! encoder.encode(["name": "John"])5let xml = String(data: data, encoding: .utf8)!6assertSnapshot(matching: xml, as: .lines)7import Foundation8import SnapshotTesting9let decoder = PropertyListDecoder()10let data = xml.data(using: .utf8)!11let dict = try! decoder.decode([String: String].self, from: data)12assertSnapshot(matching: dict, as: .dump)13import Foundation14import SnapshotTesting15let encoder = JSONEncoder()16let data = try! encoder.encode(["name": "John"])17let json = String(data: data, encoding: .utf8)!18assertSnapshot(matching: json, as: .lines)19import Foundation20import SnapshotTesting21let decoder = JSONDecoder()22 {23 }24let data = json.data(using: .utf8)!25let dict = try! decoder.decode([String: String].self, from: data)26assertSnapshot(matching: dict, as: .dump)27import Foundation28import SnapshotTesting29let decoder = JSONDecoder()30 {31 }32let data = json.data(using: .utf8)!33let dict = try! decoder.decode([String: String].self, from: data)34assertSnapshot(matching: dict, as: .dump)35import Foundation36import SnapshotTesting37let decoder = JSONDecoder()38 {39 }40let data = json.data(using: .utf8)!
PropertyListEncoder
Using AI Code Generation
1import SnapshotTesting2import XCTest3final class SnapshotTest: XCTestCase {4 func testExample() {5 let encoder = PropertyListEncoder()6 let data = try! encoder.encode(["key1": "value1", "key2": "value2"])7 assertSnapshot(matching: data, as: .binary)8 }9}10import SnapshotTesting11import XCTest12final class SnapshotTest: XCTestCase {13 func testExample() {14 let encoder = PropertyListEncoder()15 let data = try! encoder.encode(["key1": "value1", "key2": "value2"])16 assertSnapshot(matching: data, as: .data)17 }18}
PropertyListEncoder
Using AI Code Generation
1import XCTest2import SnapshotTesting3@testable import PropertyListEncoder4class PropertyListEncoderTests: XCTestCase {5 func testPropertyListEncoder() {6 let encoder = PropertyListEncoder()7 let encoderData = try! encoder.encode(["a": "b"])8 assertSnapshot(matching: encoderData, as: .binary)9 }10}11import XCTest12import SnapshotTesting13@testable import PropertyListEncoder14class PropertyListEncoderTests: XCTestCase {15 func testPropertyListEncoder() {16 let encoder = Foundation.PropertyListEncoder()17 let encoderData = try! encoder.encode(["a": "b"])18 assertSnapshot(matching: encoderData, as: .binary)19 }20}
PropertyListEncoder
Using AI Code Generation
1import Foundation2import XCTest3import SnapshotTesting4class PropertyListEncoderTests: XCTestCase {5 func testPropertyListEncoder() throws {6 let encoder = PropertyListEncoder()7 let data = try encoder.encode(["foo": "bar"])8 assertSnapshot(matching: data, as: .propertyList)9 }10}11class PropertyListDecoderTests: XCTestCase {12 func testPropertyListDecoder() throws {13 let decoder = PropertyListDecoder()14 let data = try decoder.decode([String: String].self, from: Data())15 assertSnapshot(matching: data, as: .propertyList)16 }17}18import Foundation19import XCTest20import SnapshotTesting21class PropertyListEncoderTests: XCTestCase {22 func testPropertyListEncoder() throws {23 let encoder = PropertyListEncoder()24 let data = try encoder.encode(["foo": "bar"])25 assertSnapshot(matching: data, as: .propertyList)26 }27}28class PropertyListDecoderTests: XCTestCase {29 func testPropertyListDecoder() throws {30 let decoder = PropertyListDecoder()
PropertyListEncoder
Using AI Code Generation
1import Foundation2struct Person: Codable {3}4var person = Person(name: "John", age: 25)5let encoder = PropertyListEncoder()6let data = try! encoder.encode(person)7let plist = NSString(data: data, encoding: String.Encoding.utf8.rawValue)8print(plist!)9import Foundation10struct Person: Codable {11}12let decoder = PropertyListDecoder()13let data = try! Data(contentsOf: URL(fileURLWithPath: "1.plist"))14let person = try! decoder.decode(Person.self, from: data)15print(person)16import Foundation17struct Person: Codable {18}19var person = Person(name: "John", age: 25)20let encoder = JSONEncoder()21let data = try! encoder.encode(person)22let json = NSString(data: data, encoding: String.Encoding.utf8.rawValue)23print(json!)24import Foundation25struct Person: Codable {26}27let decoder = JSONDecoder()28let data = try! Data(contentsOf: URL(fileURLWithPath: "3.json"))29let person = try! decoder.decode(Person.self, from: data)30print(person)31import Foundation32struct Person: Codable {33}34let data = try! Data(contentsOf: URL(fileURLWithPath: "1.plist"))35let plist = try! PropertyListSerialization.propertyList(from: data, options: [], format: nil)36print(plist)
PropertyListEncoder
Using AI Code Generation
1import Foundation2let encoder = PropertyListEncoder()3let data = try! encoder.encode(["Hello": "World"])4let string = String(data: data, encoding: .utf8)!5print(string)6import Foundation7let data = try! PropertyListSerialization.data(fromPropertyList: dictionary,8let string = String(data: data, encoding: .utf8)!9print(string)10import Foundation11let data = try! PropertyListSerialization.data(fromPropertyList: dictionary,12let string = String(data: data, encoding: .utf8)!13print(string)14import Foundation15let data = try! PropertyListSerialization.data(from
PropertyListEncoder
Using AI Code Generation
1import Foundation2import SnapshotTesting3struct Person: Codable {4}5 Person(name: "John", age: 55),6 Person(name: "Jane", age: 42),7 Person(name: "Bob", age: 33)8let encoder = PropertyListEncoder()9let data = try! encoder.encode(people)10try! data.write(to: URL(fileURLWithPath: "people.plist"))11assertSnapshot(matching: data, as: .propertyList)12import Foundation13import SnapshotTesting14let decoder = PropertyListDecoder()15let people = try! decoder.decode([Person].self, from: Data(contentsOf: URL(fileURLWithPath: "people.plist")))16assertSnapshot(matching: people, as: .dump)17import Foundation18import SnapshotTesting19struct Person: Codable {20}21 "John": Person(name: "John", age: 55),22 "Jane": Person(name: "Jane", age: 42),23 "Bob": Person(name: "Bob", age: 33)24let encoder = PropertyListEncoder()25let data = try! encoder.encode(people)26try! data.write(to: URL(fileURLWithPath: "people.plist"))27assertSnapshot(matching: data, as: .propertyList)
PropertyListEncoder
Using AI Code Generation
1import XCTest2import SnapshotTesting3@testable import SnapshotTesting4class SnapshotTesting: XCTestCase {5 func testEncoding() throws {6 let encoder = PropertyListEncoder()7 let encodedData = try encoder.encode(data)8 assertSnapshot(matching: encodedData, as: .binary)9 }10}11import XCTest12import SnapshotTesting13@testable import SnapshotTesting14class SnapshotTesting: XCTestCase {15 func testDecoding() throws {16 let encoder = PropertyListEncoder()17 let encodedData = try encoder.encode(data)18 let decoder = PropertyListDecoder()19 let decodedData = try decoder.decode([Int].self, from: encodedData)20 XCTAssertEqual(data, decodedData)21 }22}23import XCTest24import SnapshotTesting25@testable import SnapshotTesting26class SnapshotTesting: XCTestCase {27 func testDecoding() throws {28 let encoder = PropertyListEncoder()29 let encodedData = try encoder.encode(data)30 let decoder = PropertyListDecoder()31 let decodedData = try decoder.decode([Int].self, from: encodedData)32 XCTAssertEqual(data, decodedData)33 }34}35import XCTest36import SnapshotTesting
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!