@@ -83,9 +83,7 @@ public function testNoConflictWhenVersionInfoMatches(): void {
8383 $ document = $ this ->createDocument ('etag1 ' , 1000 , 'content ' );
8484 $ file = $ this ->mockFile ('etag1 ' , 1000 , 'content ' );
8585
86- $ this ->documentMapper ->expects (self ::never ())->method ('find ' );
8786 $ this ->documentMapper ->expects (self ::never ())->method ('update ' );
88-
8987 $ this ->documentService ->assertNoOutsideConflict ($ document , $ file );
9088 }
9189
@@ -103,33 +101,9 @@ public function testRefreshesVersionInfoWhenContentMatches(): void {
103101 self ::assertSame (2000 , $ document ->getLastSavedVersionTime ());
104102 }
105103
106- public function testNoConflictWhenOwnSaveFinishedInTheMeantime (): void {
107- // Loaded at the start of the request - stale by now.
108- $ document = $ this ->createDocument ('etag1 ' , 1000 , 'old content ' );
109- // A save request updated the file in the meantime ...
110- $ file = $ this ->mockFile ('etag2 ' , 2000 , 'new content ' );
111- // ... and stored the new version info in the document.
112- $ freshDocument = $ this ->createDocument ('etag2 ' , 2000 , 'new content ' );
113-
114- $ this ->documentMapper ->expects (self ::once ())
115- ->method ('find ' )
116- ->with (123 )
117- ->willReturn ($ freshDocument );
118- $ this ->documentMapper ->expects (self ::never ())->method ('update ' );
119-
120- $ this ->documentService ->assertNoOutsideConflict ($ document , $ file );
121- }
122-
123104 public function testConflictWhenFileChangedFromOutside (): void {
124105 $ document = $ this ->createDocument ('etag1 ' , 1000 , 'old content ' );
125106 $ file = $ this ->mockFile ('etag2 ' , 2000 , 'outside content ' );
126- // The latest saved state does not match the file either.
127- $ freshDocument = $ this ->createDocument ('etag1 ' , 1000 , 'old content ' );
128-
129- $ this ->documentMapper ->expects (self ::once ())
130- ->method ('find ' )
131- ->with (123 )
132- ->willReturn ($ freshDocument );
133107
134108 $ this ->expectException (DocumentSaveConflictException::class);
135109 $ this ->documentService ->assertNoOutsideConflict ($ document , $ file );
@@ -147,4 +121,17 @@ public function testNoConflictWhileSaveLockIsHeld(): void {
147121
148122 $ this ->documentService ->assertNoOutsideConflict ($ document , $ file );
149123 }
124+
125+ public function testNoAutosavingWhileSaveIsUnderWay (): void {
126+ $ document = $ this ->createDocument ('etag1 ' , 1000 , 'new content ' );
127+ $ file = $ this ->mockFile ('etag1 ' , 1000 , 'old content ' );
128+ $ this ->cache ->method ('get ' )
129+ ->with ('document-save-lock-123 ' )
130+ ->willReturn (true );
131+ $ this ->documentMapper ->expects (self ::never ())->method ('update ' );
132+
133+ $ result = $ this ->documentService ->autosave ($ document , $ file , 1234 , 'new content ' , 'doc state ' );
134+ self ::assertSame ($ result , $ document );
135+ }
136+
150137}
0 commit comments