@@ -21,6 +21,11 @@ import { NotificationsService } from '../../shared/notifications/notifications.s
2121import objectContaining = jasmine . objectContaining ;
2222import { RemoteData } from './remote-data' ;
2323import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model' ;
24+ import { BundleDataService } from './bundle-data.service' ;
25+ import { ItemMock } from 'src/app/shared/mocks/item.mock' ;
26+ import { createFailedRemoteDataObject , createSuccessfulRemoteDataObject } from 'src/app/shared/remote-data.utils' ;
27+ import { Bundle } from '../shared/bundle.model' ;
28+ import { cold } from 'jasmine-marbles' ;
2429
2530describe ( 'BitstreamDataService' , ( ) => {
2631 let service : BitstreamDataService ;
@@ -29,6 +34,7 @@ describe('BitstreamDataService', () => {
2934 let halService : HALEndpointService ;
3035 let bitstreamFormatService : BitstreamFormatDataService ;
3136 let rdbService : RemoteDataBuildService ;
37+ let bundleDataService : BundleDataService ;
3238 const bitstreamFormatHref = 'rest-api/bitstreamformats' ;
3339
3440 const bitstream1 = Object . assign ( new Bitstream ( ) , {
@@ -62,6 +68,7 @@ describe('BitstreamDataService', () => {
6268 bitstreamFormatService = jasmine . createSpyObj ( 'bistreamFormatService' , {
6369 getBrowseEndpoint : observableOf ( bitstreamFormatHref )
6470 } ) ;
71+
6572 rdbService = getMockRemoteDataBuildService ( ) ;
6673
6774 TestBed . configureTestingModule ( {
@@ -76,6 +83,7 @@ describe('BitstreamDataService', () => {
7683 ] ,
7784 } ) ;
7885 service = TestBed . inject ( BitstreamDataService ) ;
86+ bundleDataService = TestBed . inject ( BundleDataService ) ;
7987 } ) ;
8088
8189 describe ( 'composition' , ( ) => {
@@ -118,6 +126,32 @@ describe('BitstreamDataService', () => {
118126 expect ( service . invalidateByHref ) . toHaveBeenCalledWith ( 'fake-bitstream1-self' ) ;
119127 } ) ;
120128
129+ describe ( 'findPrimaryBitstreamByItemAndName' , ( ) => {
130+ it ( 'should return primary bitstream' , ( ) => {
131+ const exprected$ = cold ( '(a|)' , { a : bitstream1 } ) ;
132+ const bundle = Object . assign ( new Bundle ( ) , {
133+ primaryBitstream : observableOf ( createSuccessfulRemoteDataObject ( bitstream1 ) ) ,
134+ } ) ;
135+ spyOn ( bundleDataService , 'findByItemAndName' ) . and . returnValue ( observableOf ( createSuccessfulRemoteDataObject ( bundle ) ) ) ;
136+ expect ( service . findPrimaryBitstreamByItemAndName ( ItemMock , 'ORIGINAL' ) ) . toBeObservable ( exprected$ ) ;
137+ } ) ;
138+
139+ it ( 'should return null if primary bitstream has not be succeeded ' , ( ) => {
140+ const exprected$ = cold ( '(a|)' , { a : null } ) ;
141+ const bundle = Object . assign ( new Bundle ( ) , {
142+ primaryBitstream : observableOf ( createFailedRemoteDataObject ( ) ) ,
143+ } ) ;
144+ spyOn ( bundleDataService , 'findByItemAndName' ) . and . returnValue ( observableOf ( createSuccessfulRemoteDataObject ( bundle ) ) ) ;
145+ expect ( service . findPrimaryBitstreamByItemAndName ( ItemMock , 'ORIGINAL' ) ) . toBeObservable ( exprected$ ) ;
146+ } ) ;
147+
148+ it ( 'should return EMPTY if nothing where found' , ( ) => {
149+ const exprected$ = cold ( '(|)' , { } ) ;
150+ spyOn ( bundleDataService , 'findByItemAndName' ) . and . returnValue ( observableOf ( createFailedRemoteDataObject < Bundle > ( ) ) ) ;
151+ expect ( service . findPrimaryBitstreamByItemAndName ( ItemMock , 'ORIGINAL' ) ) . toBeObservable ( exprected$ ) ;
152+ } ) ;
153+ } ) ;
154+
121155 it ( 'should be able to delete multiple bitstreams' , ( ) => {
122156 service . removeMultiple ( [ bitstream1 , bitstream2 ] ) ;
123157
0 commit comments