@@ -37,60 +37,84 @@ test('can create a new log from a new model with right starting logical clock',
37
37
expect ( log . end . clock . time > 10 ) . toBe ( true ) ;
38
38
} ) ;
39
39
40
- test ( 'can replay to specific patch' , ( ) => {
41
- const { log} = setup ( { foo : 'bar' } ) ;
42
- const model = log . end . clone ( ) ;
43
- model . api . obj ( [ ] ) . set ( { x : 1 } ) ;
44
- const patch1 = model . api . flush ( ) ;
45
- model . api . obj ( [ ] ) . set ( { y : 2 } ) ;
46
- const patch2 = model . api . flush ( ) ;
47
- log . end . applyPatch ( patch1 ) ;
48
- log . end . applyPatch ( patch2 ) ;
49
- const model2 = log . replayToEnd ( ) ;
50
- const model3 = log . replayTo ( patch1 . getId ( ) ! ) ;
51
- const model4 = log . replayTo ( patch2 . getId ( ) ! ) ;
52
- expect ( model . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
53
- expect ( log . end . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
54
- expect ( log . start ( ) . view ( ) ) . toEqual ( undefined ) ;
55
- expect ( model2 . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
56
- expect ( model3 . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 } ) ;
57
- expect ( model4 . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
58
- } ) ;
40
+ describe ( '.replayTo()' , ( ) => {
41
+ test ( 'can replay to specific patch' , ( ) => {
42
+ const { log} = setup ( { foo : 'bar' } ) ;
43
+ const model = log . end . clone ( ) ;
44
+ model . api . obj ( [ ] ) . set ( { x : 1 } ) ;
45
+ const patch1 = model . api . flush ( ) ;
46
+ model . api . obj ( [ ] ) . set ( { y : 2 } ) ;
47
+ const patch2 = model . api . flush ( ) ;
48
+ log . end . applyPatch ( patch1 ) ;
49
+ log . end . applyPatch ( patch2 ) ;
50
+ const model2 = log . replayToEnd ( ) ;
51
+ const model3 = log . replayTo ( patch1 . getId ( ) ! ) ;
52
+ const model4 = log . replayTo ( patch2 . getId ( ) ! ) ;
53
+ expect ( model . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
54
+ expect ( log . end . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
55
+ expect ( log . start ( ) . view ( ) ) . toEqual ( undefined ) ;
56
+ expect ( model2 . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
57
+ expect ( model3 . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 } ) ;
58
+ expect ( model4 . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
59
+ } ) ;
59
60
60
- test ( 'can advance the log from start' , ( ) => {
61
- const { log} = setup ( { foo : 'bar' } ) ;
62
- log . end . api . obj ( [ ] ) . set ( { x : 1 } ) ;
63
- const patch1 = log . end . api . flush ( ) ;
64
- log . end . api . obj ( [ ] ) . set ( { y : 2 } ) ;
65
- const patch2 = log . end . api . flush ( ) ;
66
- log . end . api . obj ( [ ] ) . set ( { foo : 'baz' } ) ;
67
- const patch3 = log . end . api . flush ( ) ;
68
- expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
69
- expect ( log . start ( ) . view ( ) ) . toEqual ( undefined ) ;
70
- log . advanceTo ( patch1 . getId ( ) ! ) ;
71
- expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
72
- expect ( log . start ( ) . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 } ) ;
73
- log . advanceTo ( patch2 . getId ( ) ! ) ;
74
- expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
75
- expect ( log . start ( ) . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
76
- expect ( log . patches . size ( ) ) . toBe ( 1 ) ;
77
- log . advanceTo ( patch3 . getId ( ) ! ) ;
78
- expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
79
- expect ( log . start ( ) . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
80
- expect ( log . patches . size ( ) ) . toBe ( 0 ) ;
61
+ test ( 'can replay to just before a specific patch' , ( ) => {
62
+ const { log} = setup ( { foo : 'bar' } ) ;
63
+ const model = log . end . clone ( ) ;
64
+ model . api . obj ( [ ] ) . set ( { x : 1 } ) ;
65
+ const patch1 = model . api . flush ( ) ;
66
+ model . api . obj ( [ ] ) . set ( { y : 2 } ) ;
67
+ const patch2 = model . api . flush ( ) ;
68
+ log . end . applyPatch ( patch1 ) ;
69
+ log . end . applyPatch ( patch2 ) ;
70
+ const model2 = log . replayToEnd ( ) ;
71
+ const model3 = log . replayTo ( patch1 . getId ( ) ! , false ) ;
72
+ const model4 = log . replayTo ( patch2 . getId ( ) ! , false ) ;
73
+ expect ( model . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
74
+ expect ( log . end . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
75
+ expect ( log . start ( ) . view ( ) ) . toEqual ( undefined ) ;
76
+ expect ( model2 . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
77
+ expect ( model3 . view ( ) ) . toEqual ( { foo : 'bar' } ) ;
78
+ expect ( model4 . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 } ) ;
79
+ } ) ;
81
80
} ) ;
82
81
83
- test ( 'can advance multiple patches at once' , ( ) => {
84
- const { log} = setup ( { foo : 'bar' } ) ;
85
- log . end . api . obj ( [ ] ) . set ( { x : 1 } ) ;
86
- log . end . api . flush ( ) ;
87
- log . end . api . obj ( [ ] ) . set ( { y : 2 } ) ;
88
- const patch2 = log . end . api . flush ( ) ;
89
- log . end . api . obj ( [ ] ) . set ( { foo : 'baz' } ) ;
90
- log . end . api . flush ( ) ;
91
- expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
92
- expect ( log . start ( ) . view ( ) ) . toEqual ( undefined ) ;
93
- log . advanceTo ( patch2 . getId ( ) ! ) ;
94
- expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
95
- expect ( log . start ( ) . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
82
+ describe ( '.advanceTo()' , ( ) => {
83
+ test ( 'can advance the log from start' , ( ) => {
84
+ const { log} = setup ( { foo : 'bar' } ) ;
85
+ log . end . api . obj ( [ ] ) . set ( { x : 1 } ) ;
86
+ const patch1 = log . end . api . flush ( ) ;
87
+ log . end . api . obj ( [ ] ) . set ( { y : 2 } ) ;
88
+ const patch2 = log . end . api . flush ( ) ;
89
+ log . end . api . obj ( [ ] ) . set ( { foo : 'baz' } ) ;
90
+ const patch3 = log . end . api . flush ( ) ;
91
+ expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
92
+ expect ( log . start ( ) . view ( ) ) . toEqual ( undefined ) ;
93
+ log . advanceTo ( patch1 . getId ( ) ! ) ;
94
+ expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
95
+ expect ( log . start ( ) . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 } ) ;
96
+ log . advanceTo ( patch2 . getId ( ) ! ) ;
97
+ expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
98
+ expect ( log . start ( ) . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
99
+ expect ( log . patches . size ( ) ) . toBe ( 1 ) ;
100
+ log . advanceTo ( patch3 . getId ( ) ! ) ;
101
+ expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
102
+ expect ( log . start ( ) . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
103
+ expect ( log . patches . size ( ) ) . toBe ( 0 ) ;
104
+ } ) ;
105
+
106
+ test ( 'can advance multiple patches at once' , ( ) => {
107
+ const { log} = setup ( { foo : 'bar' } ) ;
108
+ log . end . api . obj ( [ ] ) . set ( { x : 1 } ) ;
109
+ log . end . api . flush ( ) ;
110
+ log . end . api . obj ( [ ] ) . set ( { y : 2 } ) ;
111
+ const patch2 = log . end . api . flush ( ) ;
112
+ log . end . api . obj ( [ ] ) . set ( { foo : 'baz' } ) ;
113
+ log . end . api . flush ( ) ;
114
+ expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
115
+ expect ( log . start ( ) . view ( ) ) . toEqual ( undefined ) ;
116
+ log . advanceTo ( patch2 . getId ( ) ! ) ;
117
+ expect ( log . end . view ( ) ) . toEqual ( { foo : 'baz' , x : 1 , y : 2 } ) ;
118
+ expect ( log . start ( ) . view ( ) ) . toEqual ( { foo : 'bar' , x : 1 , y : 2 } ) ;
119
+ } ) ;
96
120
} ) ;
0 commit comments