Skip to content

Commit 32ace69

Browse files
PM-19260: Sorted folders in Add/Edit item view (#1441)
1 parent 2d4ff26 commit 32ace69

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

BitwardenShared/Core/Platform/Repositories/SettingsRepository.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,11 @@ extension DefaultSettingsRepository: SettingsRepository {
226226
func foldersListPublisher() async throws -> AsyncThrowingPublisher<AnyPublisher<[FolderView], Error>> {
227227
try await folderService.foldersPublisher()
228228
.asyncTryMap { folders in
229-
try await self.clientService.vault().folders().decryptList(folders: folders)
229+
try await self.clientService
230+
.vault()
231+
.folders()
232+
.decryptList(folders: folders)
233+
.sorted { $0.name.localizedStandardCompare($1.name) == .orderedAscending }
230234
}
231235
.eraseToAnyPublisher()
232236
.values

BitwardenShared/Core/Platform/Repositories/SettingsRepositoryTests.swift

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -186,25 +186,28 @@ class SettingsRepositoryTests: BitwardenTestCase {
186186
}
187187
}
188188

189-
/// `foldersListPublisher()` returns a decrypted flow of the user's folders.
189+
/// `foldersListPublisher()` returns a decrypted flow of the user's folders in ascending alphabetically order.
190190
func test_foldersListPublisher_emitsDecryptedList() async throws {
191191
// Prepare the publisher.
192192
var iterator = try await subject.foldersListPublisher().makeAsyncIterator()
193193
_ = try await iterator.next()
194194

195195
// Prepare the sample data.
196196
let date = Date(year: 2023, month: 12, day: 25)
197-
let folder = Folder.fixture(revisionDate: date)
198-
let folderView = FolderView.fixture(revisionDate: date)
197+
let folder = Folder.fixture(name: "ZZ", revisionDate: date)
198+
let folderView = FolderView.fixture(name: "ZZ", revisionDate: date)
199+
200+
let folder2 = Folder.fixture(name: "AA", revisionDate: date)
201+
let folderView2 = FolderView.fixture(name: "AA", revisionDate: date)
199202

200203
// Ensure the list of folders is updated as expected.
201-
folderService.foldersSubject.value = [folder]
204+
folderService.foldersSubject.value = [folder, folder2]
202205
let publisherValue = try await iterator.next()
203206
try XCTAssertNotNil(XCTUnwrap(publisherValue))
204-
try XCTAssertEqual(XCTUnwrap(publisherValue), [folderView])
207+
try XCTAssertEqual(XCTUnwrap(publisherValue), [folderView2, folderView])
205208

206209
// Ensure the folders were decrypted by the client vault.
207-
XCTAssertEqual(clientService.mockVault.clientFolders.decryptedFolders, [folder])
210+
XCTAssertEqual(clientService.mockVault.clientFolders.decryptedFolders, [folder, folder2])
208211
}
209212

210213
/// `lastSyncTimePublisher` returns a publisher of the user's last sync time.

0 commit comments

Comments
 (0)