@@ -920,24 +920,24 @@ describe('DataService', () => {
920920 let MOCK_SUCCEEDED_RD ;
921921 let MOCK_FAILED_RD ;
922922
923- let invalidateByHrefSpy : jasmine . Spy ;
924- let buildFromRequestUUIDSpy : jasmine . Spy ;
923+ let buildFromRequestUUIDAndAwaitSpy : jasmine . Spy ;
925924 let getIDHrefObsSpy : jasmine . Spy ;
926925 let deleteByHrefSpy : jasmine . Spy ;
926+ let invalidateByHrefSpy : jasmine . Spy ;
927927
928928 beforeEach ( ( ) => {
929- invalidateByHrefSpy = spyOn ( service , 'invalidateByHref' ) . and . returnValue ( observableOf ( true ) ) ;
930- buildFromRequestUUIDSpy = spyOn ( rdbService , 'buildFromRequestUUID' ) . and . callThrough ( ) ;
929+ buildFromRequestUUIDAndAwaitSpy = spyOn ( rdbService , 'buildFromRequestUUIDAndAwait' ) . and . callThrough ( ) ;
931930 getIDHrefObsSpy = spyOn ( service , 'getIDHrefObs' ) . and . callThrough ( ) ;
932931 deleteByHrefSpy = spyOn ( service , 'deleteByHref' ) . and . callThrough ( ) ;
932+ invalidateByHrefSpy = spyOn ( service , 'invalidateByHref' ) . and . returnValue ( observableOf ( true ) ) ;
933933
934934 MOCK_SUCCEEDED_RD = createSuccessfulRemoteDataObject ( { } ) ;
935935 MOCK_FAILED_RD = createFailedRemoteDataObject ( 'something went wrong' ) ;
936936 } ) ;
937937
938938 it ( 'should retrieve href by ID and call deleteByHref' , ( ) => {
939939 getIDHrefObsSpy . and . returnValue ( observableOf ( 'some-href' ) ) ;
940- buildFromRequestUUIDSpy . and . returnValue ( createSuccessfulRemoteDataObject$ ( { } ) ) ;
940+ buildFromRequestUUIDAndAwaitSpy . and . returnValue ( createSuccessfulRemoteDataObject$ ( { } ) ) ;
941941
942942 service . delete ( 'some-id' , [ 'a' , 'b' , 'c' ] ) . subscribe ( rd => {
943943 expect ( getIDHrefObsSpy ) . toHaveBeenCalledWith ( 'some-id' ) ;
@@ -946,65 +946,27 @@ describe('DataService', () => {
946946 } ) ;
947947
948948 describe ( 'deleteByHref' , ( ) => {
949- it ( 'should call invalidateByHref if the DELETE request succeeds' , ( done ) => {
950- buildFromRequestUUIDSpy . and . returnValue ( observableOf ( MOCK_SUCCEEDED_RD ) ) ;
951-
952- service . deleteByHref ( 'some-href' ) . subscribe ( rd => {
953- expect ( rd ) . toBe ( MOCK_SUCCEEDED_RD ) ;
954- expect ( invalidateByHrefSpy ) . toHaveBeenCalled ( ) ;
955- done ( ) ;
956- } ) ;
949+ beforeEach ( ( ) => {
950+ buildFromRequestUUIDAndAwaitSpy . and . returnValue ( createSuccessfulRemoteDataObject$ ( { } ) ) ;
957951 } ) ;
958952
959- it ( 'should call invalidateByHref even if not subscribing to returned Observable' , fakeAsync ( ( ) => {
960- buildFromRequestUUIDSpy . and . returnValue ( observableOf ( MOCK_SUCCEEDED_RD ) ) ;
961-
962- service . deleteByHref ( 'some-href' ) ;
963- tick ( ) ;
964-
965- expect ( invalidateByHrefSpy ) . toHaveBeenCalled ( ) ;
966- } ) ) ;
967-
968- it ( 'should not call invalidateByHref if the DELETE request fails' , ( done ) => {
969- buildFromRequestUUIDSpy . and . returnValue ( observableOf ( MOCK_FAILED_RD ) ) ;
953+ it ( 'should send a DELETE request' , ( ) => {
954+ service . deleteByHref ( 'https://somewhere.org/something/123' , [ 'things' , 'stuff' ] ) ;
970955
971- service . deleteByHref ( 'some-href' ) . subscribe ( rd => {
972- expect ( rd ) . toBe ( MOCK_FAILED_RD ) ;
973- expect ( invalidateByHrefSpy ) . not . toHaveBeenCalled ( ) ;
974- done ( ) ;
975- } ) ;
956+ expect ( requestService . send ) . toHaveBeenCalledWith ( jasmine . objectContaining ( {
957+ method : 'DELETE' ,
958+ href : 'https://somewhere.org/something/123?copyVirtualMetadata=things©VirtualMetadata=stuff'
959+ } ) ) ;
976960 } ) ;
977961
978- it ( 'should wait for invalidateByHref before emitting' , ( ) => {
979- testScheduler . run ( ( { cold, expectObservable } ) => {
980- buildFromRequestUUIDSpy . and . returnValue (
981- cold ( '(r|)' , { r : MOCK_SUCCEEDED_RD } ) // RD emits right away
982- ) ;
983- invalidateByHrefSpy . and . returnValue (
984- cold ( '----(t|)' , BOOLEAN ) // but we pretend that setting requests to stale takes longer
985- ) ;
986-
987- const done$ = service . deleteByHref ( 'some-href' ) ;
988- expectObservable ( done$ ) . toBe (
989- '----(r|)' , { r : MOCK_SUCCEEDED_RD } // ...and expect the returned Observable to wait until that's done
990- ) ;
991- } ) ;
992- } ) ;
962+ it ( 'should retrieve response via buildFromRequestUUIDAndAwait & invalidate within the callback' , ( ) => {
963+ service . deleteByHref ( 'https://somewhere.org/something/123' ) ;
993964
994- it ( 'should wait for the DELETE request to resolve before emitting' , ( ) => {
995- testScheduler . run ( ( { cold, expectObservable } ) => {
996- buildFromRequestUUIDSpy . and . returnValue (
997- cold ( '----(r|)' , { r : MOCK_SUCCEEDED_RD } ) // the request takes a while
998- ) ;
999- invalidateByHrefSpy . and . returnValue (
1000- cold ( '(t|)' , BOOLEAN ) // but we pretend that setting to stale happens sooner
1001- ) ; // e.g.: maybe already stale before this call?
1002-
1003- const done$ = service . deleteByHref ( 'some-href' ) ;
1004- expectObservable ( done$ ) . toBe (
1005- '----(r|)' , { r : MOCK_SUCCEEDED_RD } // ...and expect the returned Observable to wait for the request
1006- ) ;
1007- } ) ;
965+ expect ( buildFromRequestUUIDAndAwaitSpy ) . toHaveBeenCalled ( ) ;
966+ expect ( buildFromRequestUUIDAndAwaitSpy . calls . argsFor ( 0 ) [ 0 ] ) . toBe ( requestService . generateRequestId ( ) ) ;
967+ const callback = buildFromRequestUUIDAndAwaitSpy . calls . argsFor ( 0 ) [ 1 ] ;
968+ callback ( ) ;
969+ expect ( invalidateByHrefSpy ) . toHaveBeenCalledWith ( 'https://somewhere.org/something/123' ) ;
1008970 } ) ;
1009971 } ) ;
1010972 } ) ;
0 commit comments