@@ -40,8 +40,32 @@ public void ChangeComparer()
40
40
// change the comparer
41
41
_comparerSubject . OnNext ( _descComparer ) ;
42
42
43
+ Aggregator . Messages . Cast < IChangeSet < Person , string , PageContext < Person > > > ( ) . LastOrDefault ( ) . Context . Comparer . Should ( ) . Be ( _descComparer ) ;
43
44
expectedResult = people . OrderBy ( p => p , _descComparer ) . Take ( 25 ) . ToList ( ) ;
44
- actualResult = Aggregator . Data . Items . OrderBy ( p => p , Comparer ) ;
45
+ actualResult = Aggregator . Data . Items . OrderBy ( p => p , _descComparer ) ;
46
+ actualResult . Should ( ) . BeEquivalentTo ( expectedResult ) ;
47
+ }
48
+
49
+ [ Fact ]
50
+ public void ChangeComparerWithOnlyOnePage ( )
51
+ {
52
+ PageRequests . OnNext ( new PageRequest ( page : 1 , size : 200 ) ) ;
53
+
54
+ var people = Enumerable . Range ( 1 , 100 ) . Select ( i => new Person ( $ "P{ i : 000} ", i ) ) . OrderBy ( p => Guid . NewGuid ( ) ) ;
55
+ Source . AddOrUpdate ( people ) ;
56
+
57
+ // for first batch, it should use the results of the _PageRequests subject (if a behaviour subject is used).
58
+ var expectedResult = people . OrderBy ( p => p , Comparer ) . ToList ( ) ;
59
+ var actualResult = Aggregator . Data . Items . OrderBy ( p => p , Comparer ) ;
60
+ actualResult . Should ( ) . BeEquivalentTo ( expectedResult ) ;
61
+ var changesetCount = Aggregator . Messages . Count ;
62
+
63
+ // change the comparer
64
+ _comparerSubject . OnNext ( _descComparer ) ;
65
+
66
+ Aggregator . Messages . Cast < IChangeSet < Person , string , PageContext < Person > > > ( ) . LastOrDefault ( ) . Context . Comparer . Should ( ) . Be ( _descComparer ) ;
67
+ expectedResult = people . OrderBy ( p => p , _descComparer ) . ToList ( ) ;
68
+ actualResult = Aggregator . Data . Items . OrderBy ( p => p , _descComparer ) ;
45
69
actualResult . Should ( ) . BeEquivalentTo ( expectedResult ) ;
46
70
}
47
71
}
0 commit comments