Skip to content

Commit ae01671

Browse files
mauritz-megaharryyan1238
authored andcommitted
CC-3240: Refactor UserAlbumRepository SetEntity size retrieval
1 parent 6ed67b4 commit ae01671

File tree

10 files changed

+26
-17
lines changed

10 files changed

+26
-17
lines changed

MEGAData/Repository/Album/UserAlbumRepository.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ struct UserAlbumRepository: UserAlbumRepositoryProtocol {
1818
var results: [SetEntity] = []
1919

2020
for megaSet in megaSets {
21-
let size = await albumContent(by: megaSet.handle).count
2221
var setEntity = megaSet.toSetEntity()
23-
setEntity.size = size
22+
setEntity.size = sdk.megaSetElementCount(megaSet.handle)
2423

2524
results.append(setEntity)
2625
}

MEGADataTests/Repos/UserAlbumRepositoryTests.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,19 @@ import MEGADomain
55
final class UserAlbumRepositoryTests: XCTestCase {
66
func testLoadingAlbums_onRetrieved_shouldReturnAlbums() async throws {
77
let megaSets = sampleSets()
8+
let megaSetCounts: [MEGAHandle: UInt] = Dictionary(uniqueKeysWithValues: megaSets.map {
9+
($0.handle, UInt.random(in: 0...100))
10+
})
811
let megaSetElements = sampleSetElements()
9-
let sdk = MockSdk(megaSets:megaSets,megaSetElements: megaSetElements)
12+
let sdk = MockSdk(megaSets:megaSets, megaSetElementCounts: megaSetCounts)
1013
let repo = UserAlbumRepository(sdk: sdk)
1114

1215
let sets = await repo.albums()
1316

1417
XCTAssertEqual(sets.count, megaSets.count)
1518

1619
for set in sets {
17-
XCTAssertEqual(set.size, megaSetElements.count)
20+
XCTAssertEqual(set.size, megaSetCounts[set.handle])
1821
}
1922
}
2023

MEGAUnitTests/Mocks/Sdk/MockMEGASet.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ final class MockMEGASet: MEGASet {
1010
private let setChangeType: MEGASetChangeType
1111

1212
private var setModificationTime: Date?
13-
13+
override var handle: UInt64 { setHandle }
1414
override var name: String? { setName }
1515
override var timestamp: Date { setModificationTime ?? Date() }
1616

MEGAUnitTests/Mocks/Sdk/MockSdk.swift

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ final class MockSdk: MEGASdk {
1111
private var statsEventType: Int?
1212
private var statsEventMessage: String?
1313
private let megaRootNode: MEGANode?
14+
private let megaSetElementCounts: [MEGAHandle: UInt]
1415

1516
let sets: [MEGASet]
1617
let setElements: [MEGASetElement]
@@ -24,7 +25,9 @@ final class MockSdk: MEGASdk {
2425
myEmail: String? = nil,
2526
megaSets: [MEGASet] = [],
2627
megaSetElements: [MEGASetElement] = [],
27-
megaRootNode: MEGANode? = nil) {
28+
megaRootNode: MEGANode? = nil,
29+
megaSetElementCounts: [MEGAHandle: UInt] = [:]
30+
) {
2831
self.nodes = nodes
2932
self.rubbishNodes = rubbishNodes
3033
self.myContacts = myContacts
@@ -33,7 +36,7 @@ final class MockSdk: MEGASdk {
3336
sets = megaSets
3437
setElements = megaSetElements
3538
self.megaRootNode = megaRootNode
36-
39+
self.megaSetElementCounts = megaSetElementCounts
3740
super.init()
3841
}
3942

@@ -89,4 +92,8 @@ final class MockSdk: MEGASdk {
8992
override func nodeListSearch(for node: MEGANode, search searchString: String?, cancelToken: MEGACancelToken, recursive: Bool, orderType: MEGASortOrderType, nodeFormatType: MEGANodeFormatType, folderTargetType: MEGAFolderTargetType) -> MEGANodeList {
9093
MockNodeList(nodes: nodes)
9194
}
95+
96+
override func megaSetElementCount(_ sid: MEGAHandle) -> UInt {
97+
megaSetElementCounts[sid] ?? 0
98+
}
9299
}

Modules/MEGADomain/Sources/MEGADomain/Entity/Album/AlbumEntity.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ public struct AlbumEntity: Identifiable, Hashable {
1111
public let id: HandleEntity
1212
public let name: String
1313
public let coverNode: NodeEntity?
14-
public let count: Int
14+
public let count: UInt
1515
public let type: AlbumEntityType
1616

17-
public init(id: HandleEntity, name: String, coverNode: NodeEntity?, count: Int, type: AlbumEntityType) {
17+
public init(id: HandleEntity, name: String, coverNode: NodeEntity?, count: UInt, type: AlbumEntityType) {
1818
self.id = id
1919
self.name = name
2020
self.coverNode = coverNode

Modules/MEGADomain/Sources/MEGADomain/Entity/Set/SetEntity.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public struct SetEntity {
66
public let coverId: HandleEntity
77
public let modificationTime: Date
88
public let name: String
9-
public var size: Int = 0
9+
public var size: UInt = 0
1010

1111
public init(handle: HandleEntity, userId: HandleEntity, coverId: HandleEntity, modificationTime: Date, name: String) {
1212
self.handle = handle

Modules/MEGADomain/Sources/MEGADomain/UseCase/Album/AlbumListUseCase.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ public final class AlbumListUseCase<T: AlbumRepositoryProtocol, U: FileSearchRep
7676
var coverOfFavouritePhoto: NodeEntity?
7777
var coverOfGifPhoto: NodeEntity?
7878
var coverOfRawPhoto: NodeEntity?
79-
var numOfFavouritePhotos = 0
80-
var numOfGifPhotos = 0
81-
var numOfRawPhotos = 0
79+
var numOfFavouritePhotos: UInt = 0
80+
var numOfGifPhotos: UInt = 0
81+
var numOfRawPhotos: UInt = 0
8282

8383
photos.forEach { photo in
8484
if photo.isFavourite {

Modules/MEGADomain/Tests/MEGADomainTests/AlbumListUseCaseTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ final class AlbumListUseCaseTests: XCTestCase {
7373
let albums = await sut.loadAlbums()
7474
XCTAssertTrue(albums.count == 2)
7575
XCTAssertEqual(albums.first, AlbumEntity(id: AlbumIdEntity.favourite.rawValue, name: "",
76-
coverNode: favouriteRawPhotos.last, count: favouriteRawPhotos.count, type: .favourite))
76+
coverNode: favouriteRawPhotos.last, count: UInt(favouriteRawPhotos.count), type: .favourite))
7777
XCTAssertEqual(albums.last?.type, AlbumEntityType.raw)
7878
}
7979

@@ -87,7 +87,7 @@ final class AlbumListUseCaseTests: XCTestCase {
8787
NodeEntity(name: "b.mp4", handle: 3, hasThumbnail: true, isFavourite: true, modificationTime: try "2022-08-19T20:01:04Z".date),
8888
expectedCoverNode
8989
]
90-
let expectedFavouritesCount = (favouritePhotos + favouriteVideos).filter { $0.hasThumbnail && $0.isFavourite }.count
90+
let expectedFavouritesCount = UInt((favouritePhotos + favouriteVideos).filter { $0.hasThumbnail && $0.isFavourite }.count)
9191
let sut = AlbumListUseCase(
9292
albumRepository: MockAlbumRepository.newRepo,
9393
userAlbumRepository: MockUserAlbumRepository.newRepo,

iMEGA/Media Consumption/Album Library/Cell/AlbumCellViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import MEGASwiftUI
44
import MEGADomain
55

66
final class AlbumCellViewModel: ObservableObject {
7-
@Published var numberOfNodes = 0
7+
@Published var numberOfNodes: UInt = 0
88
@Published var thumbnailContainer: any ImageContaining
99
@Published var isLoading: Bool = false
1010
@Published var title: String = ""

iMEGA/Vendor/SDK

Submodule SDK updated from bec2c9a to 2eefbc6

0 commit comments

Comments
 (0)