Skip to content

Commit d4dc88e

Browse files
authored
Merge pull request #18 from roanutil/accidental-transaction-author-parameter-on-batch-read
Accidental transaction author parameter on batch read
2 parents 9fa4ae4 + d201954 commit d4dc88e

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

Sources/CoreDataRepository/CoreDataRepository+Batch.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,20 @@ extension CoreDataRepository {
8282
/// - urls: [URL]
8383
/// - Returns
8484
/// - (success: [Model, failed: [Model])
85+
@available(*, deprecated, message: "This method has an unused parameter for transactionAuthor.")
8586
public func read<Model: UnmanagedModel>(
8687
urls: [URL],
8788
transactionAuthor _: String? = nil
8889
) async -> (success: [Model], failed: [URL]) {
90+
await read(urls: urls)
91+
}
92+
93+
/// Batch update objects in CoreData
94+
/// - Parameters
95+
/// - urls: [URL]
96+
/// - Returns
97+
/// - (success: [Model, failed: [Model])
98+
public func read<Model: UnmanagedModel>(urls: [URL]) async -> (success: [Model], failed: [URL]) {
8999
var successes = [Model]()
90100
var failures = [URL]()
91101
await withTaskGroup(of: _Result<Model, URL>.self, body: { [weak self] group in

Tests/CoreDataRepositoryTests/BatchRepositoryTests.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,28 @@ final class BatchRepositoryTests: CoreDataXCTestCase {
142142
try verify(transactionAuthor: transactionAuthor, timeStamp: historyTimeStamp)
143143
}
144144

145+
func testDeprecatedReadSuccess() async throws {
146+
let fetchRequest = NSFetchRequest<RepoMovie>(entityName: "RepoMovie")
147+
var movies = [Movie]()
148+
try await repositoryContext().perform {
149+
let count = try self.repositoryContext().count(for: fetchRequest)
150+
XCTAssertEqual(count, 0, "Count of objects in CoreData should be zero at the start of each test.")
151+
152+
let repoMovies = try self.movies
153+
.map(self.mapDictToRepoMovie(_:))
154+
try self.repositoryContext().save()
155+
movies = repoMovies.map(\.asUnmanaged)
156+
}
157+
158+
let result: (success: [Movie], failed: [URL]) = try await repository()
159+
.read(urls: movies.compactMap(\.url), transactionAuthor: "Unused")
160+
161+
XCTAssertEqual(result.success.count, movies.count)
162+
XCTAssertEqual(result.failed.count, 0)
163+
164+
XCTAssertEqual(Set(movies), Set(result.success))
165+
}
166+
145167
func testReadSuccess() async throws {
146168
let fetchRequest = NSFetchRequest<RepoMovie>(entityName: "RepoMovie")
147169
var movies = [Movie]()

0 commit comments

Comments
 (0)