Skip to content

Commit

Permalink
Add sorting with array as argument (#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcoSantarossa committed Sep 9, 2017
1 parent 58abcd1 commit b7043a8
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 20 deletions.
Expand Up @@ -116,11 +116,9 @@ extension RealmContext {
if let predicate = predicate {
objects = objects.filter(predicate: predicate)
}

if let sortDescriptors = sortDescriptors {
for sortDescriptor in sortDescriptors {
objects = objects.sorted(keyPath: sortDescriptor.key, ascending: sortDescriptor.ascending)
}
objects = objects.sorted(with: sortDescriptors)
}

completion(objects.toArray.flatMap { $0 as? T })
Expand Down
10 changes: 6 additions & 4 deletions Source/Storages/Realm/Extensions/Results+RealmResultType.swift
Expand Up @@ -34,8 +34,10 @@ extension Results: RealmResultType {
return filter(predicate)
}

func sorted(keyPath: String, ascending: Bool) -> RealmResultType {
return sorted(byKeyPath: keyPath, ascending: ascending)
}

func sorted(with sortDescriptors: [SortDescriptor]) -> RealmResultType {
let realmDescriptors = sortDescriptors.flatMap {
return RealmSwift.SortDescriptor(keyPath: $0.key, ascending: $0.ascending)
}
return sorted(by: realmDescriptors)
}
}
2 changes: 1 addition & 1 deletion Source/Storages/Realm/StackObjects/RealmResultType.swift
Expand Up @@ -29,5 +29,5 @@ protocol RealmResultType: class {
var toArray: [Object] { get }

func filter(predicate: NSPredicate) -> RealmResultType
func sorted(keyPath: String, ascending: Bool) -> RealmResultType
func sorted(with sortDescriptors: [SortDescriptor]) -> RealmResultType
}
10 changes: 5 additions & 5 deletions Tests/Storages/Realm/RealmContextTests.swift
Expand Up @@ -475,7 +475,7 @@ extension RealmContextTests {
try sut.fetch(predicate: nil, sortDescriptors: [sort, sort2]) { (_: [Object]?) in }
} catch {}

XCTAssertEqual(getSpyRealm().forcedResult.sortedCallsCount, 2)
XCTAssertEqual(getSpyRealm().forcedResult.sortedCallsCount, 1)
}

func test_Fetch_DescriptorsNotNil_CallsResultDescriptorsWithRightArguments() {
Expand All @@ -486,11 +486,11 @@ extension RealmContextTests {
try sut.fetch(predicate: nil, sortDescriptors: [sort, sort2]) { (_: [Object]?) in }
} catch {}

XCTAssertEqual(getSpyRealm().forcedResult.sortedKeyPathArguments.first, "a")
XCTAssertEqual(getSpyRealm().forcedResult.sortedAscendingArguments.first, true)
XCTAssertEqual(getSpyRealm().forcedResult.sortedDescriptorsArguments?.first?.key, "a")
XCTAssertEqual(getSpyRealm().forcedResult.sortedDescriptorsArguments?.first?.ascending, true)

XCTAssertEqual(getSpyRealm().forcedResult.sortedKeyPathArguments[1], "b")
XCTAssertEqual(getSpyRealm().forcedResult.sortedAscendingArguments[1], false)
XCTAssertEqual(getSpyRealm().forcedResult.sortedDescriptorsArguments?[1].key, "b")
XCTAssertEqual(getSpyRealm().forcedResult.sortedDescriptorsArguments?[1].ascending, false)
}

func test_Fetch_EntityObject_ReturnsRightEntities() {
Expand Down
10 changes: 4 additions & 6 deletions Tests/Storages/Realm/TestDoubles/SpyRealmResult.swift
Expand Up @@ -26,7 +26,7 @@
@testable import StorageKit

import Realm
import RealmSwift
import class RealmSwift.Object

final class SpyRealmResult {
var toArray = [Object]()
Expand All @@ -35,8 +35,7 @@ final class SpyRealmResult {
fileprivate(set) var filterPredicateArgument: NSPredicate?

fileprivate(set) var sortedCallsCount = 0
fileprivate(set) var sortedKeyPathArguments = [String]()
fileprivate(set) var sortedAscendingArguments = [Bool]()
fileprivate(set) var sortedDescriptorsArguments: [SortDescriptor]?
}

extension SpyRealmResult: RealmResultType {
Expand All @@ -47,10 +46,9 @@ extension SpyRealmResult: RealmResultType {
return self
}

func sorted(keyPath: String, ascending: Bool) -> RealmResultType {
func sorted(with sortDescriptors: [SortDescriptor]) -> RealmResultType {
sortedCallsCount += 1
sortedKeyPathArguments.append(keyPath)
sortedAscendingArguments.append(ascending)
sortedDescriptorsArguments = sortDescriptors

return self
}
Expand Down

0 comments on commit b7043a8

Please sign in to comment.