added mock services to read local json

Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
Matt Bruce 2025-01-21 11:17:28 -06:00
parent e5175dd84e
commit 427e862b6b
2 changed files with 11047 additions and 0 deletions

View File

@ -0,0 +1,43 @@
//
// MockEmployeeService.swift
// EmployeeDirectory
//
// Created by Matt Bruce on 1/21/25.
//
import Foundation
public class MockEmployeeService: EmployeeServiceProtocol {
// MARK: - Properties
public static let shared = MockEmployeeService() // Default shared instance
private let employees: Employees
// MARK: - Initializer
public init() {
let jsonFileName = "localTest"
guard let url = Bundle.main.url(forResource: jsonFileName, withExtension: "json"),
let data = try? Data(contentsOf: url),
let localData = try? JSONDecoder().decode(Employees.self, from: data) else {
employees = .init(employees: [], total: 0, page: 0, perPage: 0)
return
}
employees = localData
}
public func getEmployees(_ serviceMode: EmployeeServiceMode) async throws -> Employees {
return employees
}
public func getEmployees(_ serviceMode: EmployeeServiceMode, page: Int, perPage: Int) async throws -> Employees {
let totalUsers = employees.employees.count
let startIndex = (page - 1) * perPage
let endIndex = min(startIndex + perPage, totalUsers)
guard startIndex < totalUsers else {
return .init(employees: [], total: totalUsers, page: page, perPage: perPage) // Return empty if out of bounds
}
let paginatedUsers = Array(employees.employees[startIndex..<endIndex])
return .init(employees: paginatedUsers, total: totalUsers, page: page, perPage: perPage)
}
}

File diff suppressed because it is too large Load Diff