@@ -71,18 +71,17 @@ describe('elements/content-sidebar/versions/VersionsSidebarContainer', () => {
7171 const wrapper = getWrapper ( { onVersionDelete : handleDelete , versionId : '123' } ) ;
7272 const instance = wrapper . instance ( ) ;
7373 const version = { id : '456' } ;
74+ const newVersion = { id : '456' , trash_at : '' } ;
7475
7576 instance . api . deleteVersion = jest . fn ( ) . mockResolvedValueOnce ( ) ;
76- instance . api . fetchData = jest . fn ( ) . mockResolvedValueOnce ( ) ;
77+ instance . api . fetchVersion = jest . fn ( ) . mockResolvedValueOnce ( newVersion ) ;
7778 instance . findVersion = jest . fn ( ( ) => version ) ;
78- instance . handleFetchSuccess = jest . fn ( ) ;
7979 instance . handleDeleteSuccess = jest . fn ( ) ;
8080
8181 instance . handleActionDelete ( version . id ) . then ( ( ) => {
8282 expect ( instance . api . deleteVersion ) . toHaveBeenCalledWith ( version ) ;
83- expect ( instance . api . fetchData ) . toHaveBeenCalled ( ) ;
84- expect ( instance . handleFetchSuccess ) . toHaveBeenCalled ( ) ;
85- expect ( instance . handleDeleteSuccess ) . toHaveBeenCalledWith ( version . id ) ;
83+ expect ( instance . api . fetchVersion ) . toHaveBeenCalled ( ) ;
84+ expect ( instance . handleDeleteSuccess ) . toHaveBeenCalledWith ( newVersion ) ;
8685 expect ( handleDelete ) . toHaveBeenCalledWith ( version . id ) ;
8786 } ) ;
8887 } ) ;
@@ -136,21 +135,54 @@ describe('elements/content-sidebar/versions/VersionsSidebarContainer', () => {
136135 const wrapper = getWrapper ( { onVersionRestore : handleRestore , versionId : '123' } ) ;
137136 const instance = wrapper . instance ( ) ;
138137 const version = { id : '456' } ;
138+ const newVersion = { id : '456' , restored_by : '' } ;
139139
140- instance . api . fetchData = jest . fn ( ) . mockResolvedValueOnce ( ) ;
141140 instance . api . restoreVersion = jest . fn ( ) . mockResolvedValueOnce ( ) ;
141+ instance . api . fetchVersion = jest . fn ( ) . mockResolvedValueOnce ( newVersion ) ;
142142 instance . findVersion = jest . fn ( ( ) => version ) ;
143- instance . handleFetchSuccess = jest . fn ( ) ;
143+ instance . handleRestoreSuccess = jest . fn ( ) ;
144144
145145 instance . handleActionRestore ( version . id ) . then ( ( ) => {
146146 expect ( instance . api . restoreVersion ) . toHaveBeenCalledWith ( version ) ;
147- expect ( instance . api . fetchData ) . toHaveBeenCalled ( ) ;
148- expect ( instance . handleFetchSuccess ) . toHaveBeenCalled ( ) ;
147+ expect ( instance . api . fetchVersion ) . toHaveBeenCalled ( ) ;
148+ expect ( instance . handleRestoreSuccess ) . toHaveBeenCalledWith ( newVersion ) ;
149149 expect ( handleRestore ) . toHaveBeenCalledWith ( version . id ) ;
150150 } ) ;
151151 } ) ;
152152 } ) ;
153153
154+ describe ( 'handleDeleteSuccess' , ( ) => {
155+ test ( 'should update version if the same id' , ( ) => {
156+ const wrapper = getWrapper ( {
157+ versionId : '123' ,
158+ } ) ;
159+ const instance = wrapper . instance ( ) ;
160+ const version = { id : '123' } ;
161+
162+ instance . updateVersionToCurrent = jest . fn ( ) ;
163+ instance . mergeResponse = jest . fn ( ) ;
164+
165+ instance . handleDeleteSuccess ( version ) ;
166+
167+ expect ( instance . updateVersionToCurrent ) . toHaveBeenCalled ( ) ;
168+ expect ( instance . mergeResponse ) . toHaveBeenCalledWith ( version ) ;
169+ } ) ;
170+ } ) ;
171+
172+ describe ( 'handleRestoreSuccess' , ( ) => {
173+ test ( 'should call mergeResponse' , ( ) => {
174+ const wrapper = getWrapper ( ) ;
175+ const instance = wrapper . instance ( ) ;
176+ const version = { id : '123' } ;
177+
178+ instance . mergeResponse = jest . fn ( ) ;
179+
180+ instance . handleRestoreSuccess ( version ) ;
181+
182+ expect ( instance . mergeResponse ) . toHaveBeenCalledWith ( version ) ;
183+ } ) ;
184+ } ) ;
185+
154186 describe ( 'handleFetchError' , ( ) => {
155187 test ( 'should set state to default values with error message' , ( ) => {
156188 const wrapper = getWrapper ( ) ;
@@ -228,6 +260,44 @@ describe('elements/content-sidebar/versions/VersionsSidebarContainer', () => {
228260 } ) ;
229261 } ) ;
230262
263+ describe ( 'mergeVersions' , ( ) => {
264+ test ( 'should update state' , ( ) => {
265+ const wrapper = getWrapper ( ) ;
266+ wrapper . setState ( {
267+ versions,
268+ } ) ;
269+ const instance = wrapper . instance ( ) ;
270+ const newVersion = { id : versions [ 1 ] . id , trashed_at : null } ;
271+
272+ const newVersions = instance . mergeVersions ( newVersion ) ;
273+
274+ expect ( newVersions [ 0 ] ) . toEqual ( versions [ 0 ] ) ;
275+ expect ( newVersions [ 1 ] ) . toEqual ( Object . assign ( versions [ 1 ] , newVersion ) ) ;
276+ } ) ;
277+ } ) ;
278+
279+ describe ( 'mergeResponse' , ( ) => {
280+ test ( 'should update state' , ( ) => {
281+ const wrapper = getWrapper ( ) ;
282+ wrapper . setState ( {
283+ error : 'error' ,
284+ isLoading : true ,
285+ versions,
286+ } ) ;
287+ const instance = wrapper . instance ( ) ;
288+ const response = { id : '000' , name : 'Version 0' } ;
289+ const newVersions = [ response ] ;
290+ instance . mergeVersions = jest . fn ( ) . mockReturnValue ( newVersions ) ;
291+
292+ instance . mergeResponse ( response ) ;
293+
294+ expect ( wrapper . state ( 'error' ) ) . toBe ( undefined ) ;
295+ expect ( wrapper . state ( 'isLoading' ) ) . toBe ( false ) ;
296+ expect ( wrapper . state ( 'versions' ) ) . toEqual ( newVersions ) ;
297+ expect ( instance . mergeVersions ) . toHaveBeenCalledWith ( response ) ;
298+ } ) ;
299+ } ) ;
300+
231301 describe ( 'refresh' , ( ) => {
232302 test ( 'should refetch data when refresh is called' , ( ) => {
233303 const instance = getWrapper ( ) . instance ( ) ;
0 commit comments