@@ -52,10 +52,55 @@ class RxQueryKitTests: XCTestCase {
52
52
53
53
disposable. dispose ( )
54
54
}
55
+
56
+ func testObjects( ) {
57
+ var objects : [ [ Person ] ] = [ ]
58
+
59
+ let disposable = try ! Person . queryset ( context)
60
+ . orderBy { $0. name. ascending ( ) }
61
+ . objects ( )
62
+ . subscribeNext {
63
+ objects. append ( $0)
64
+ }
65
+
66
+ // Initial value
67
+ XCTAssertEqual ( objects, [ [ ] ] )
68
+
69
+ // Created
70
+ let p1 = Person . create ( context, name: " kyle1 " )
71
+ let p2 = Person . create ( context, name: " kyle2 " )
72
+ let p3 = Person . create ( context, name: " kyle3 " )
73
+ try ! context. save ( )
74
+ XCTAssertEqual ( objects, [ [ ] , [ p1, p2, p3] ] )
75
+
76
+ // Deleted
77
+ context. deleteObject ( p1)
78
+ context. deleteObject ( p3)
79
+ try ! context. save ( )
80
+ XCTAssertEqual ( objects, [ [ ] , [ p1, p2, p3] , [ p2] ] )
81
+
82
+ // Modified Object
83
+ context. deleteObject ( p1)
84
+ context. deleteObject ( p3)
85
+ p2. name = " kyle updated "
86
+ try ! context. save ( )
87
+ XCTAssertEqual ( objects, [ [ ] , [ p1, p2, p3] , [ p2] , [ p2] ] )
88
+
89
+ // Doesn't update when nothing changes
90
+ Comment . create ( context, text: " Hello World " )
91
+ try ! context. save ( )
92
+ XCTAssertEqual ( objects, [ [ ] , [ p1, p2, p3] , [ p2] , [ p2] ] )
93
+
94
+ disposable. dispose ( )
95
+ }
55
96
}
56
97
57
98
58
99
@objc ( Person) class Person : NSManagedObject {
100
+ class var name : Attribute < String > {
101
+ return Attribute ( " name " )
102
+ }
103
+
59
104
class func createEntityDescription( ) -> NSEntityDescription {
60
105
let name = NSAttributeDescription ( )
61
106
name. name = " name "
0 commit comments