added mock services to read local json
Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
e5175dd84e
commit
427e862b6b
43
EmployeeDirectory/Services/MockEmployeeService.swift
Normal file
43
EmployeeDirectory/Services/MockEmployeeService.swift
Normal 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)
|
||||
}
|
||||
}
|
||||
11004
EmployeeDirectory/Supporting Files/localTest.json
Normal file
11004
EmployeeDirectory/Supporting Files/localTest.json
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user