Implemented some more tests to the FetcherTests test cases.

This commit is contained in:
2023-04-18 01:05:13 +02:00
parent a96c762b85
commit 62a07ff873
2 changed files with 148 additions and 23 deletions
+9 -9
View File
@@ -24,7 +24,7 @@ public class Fetcher<Model: NSManagedObject>: NSObject, NSFetchedResultsControll
fetchedResultsController.sections?.count ?? 0
}
private var inProgressChanges: [Change] = []
private var changesToNotify: [Change] = []
// MARK: Initialisers
@@ -87,11 +87,11 @@ public class Fetcher<Model: NSManagedObject>: NSObject, NSFetchedResultsControll
// MARK: NSFetchedResultsControllerDelegate
public func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
inProgressChanges.removeAll()
changesToNotify.removeAll()
}
public func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
didChangePublisher.send(inProgressChanges)
didChangePublisher.send(changesToNotify)
}
public func controller(
@@ -101,9 +101,9 @@ public class Fetcher<Model: NSManagedObject>: NSObject, NSFetchedResultsControll
for type: NSFetchedResultsChangeType
) {
if type == .insert {
inProgressChanges.append(.section(.inserted(sectionIndex)))
changesToNotify.append(.section(.inserted(sectionIndex)))
} else if type == .delete {
inProgressChanges.append(.section(.deleted(sectionIndex)))
changesToNotify.append(.section(.deleted(sectionIndex)))
}
}
@@ -118,19 +118,19 @@ public class Fetcher<Model: NSManagedObject>: NSObject, NSFetchedResultsControll
case .insert:
guard let newIndexPath else { return }
inProgressChanges.append(.object(.inserted(at: newIndexPath)))
changesToNotify.append(.object(.inserted(at: newIndexPath)))
case .delete:
guard let indexPath else { return }
inProgressChanges.append(.object(.deleted(from: indexPath)))
changesToNotify.append(.object(.deleted(from: indexPath)))
case .move:
guard let indexPath, let newIndexPath else { return }
inProgressChanges.append(.object(.moved(from: indexPath, to: newIndexPath)))
changesToNotify.append(.object(.moved(from: indexPath, to: newIndexPath)))
case .update:
guard let indexPath else { return }
inProgressChanges.append(.object(.updated(at: indexPath)))
changesToNotify.append(.object(.updated(at: indexPath)))
default:
break
}