@@ -77,20 +77,20 @@ describe('ItemBitstreamsService', () => {
7777
7878 describe ( 'selectBitstreamEntry' , ( ) => {
7979 it ( 'should correctly make getSelectedBitstream$ emit' , fakeAsync ( ( ) => {
80- const emittedEntries = [ ] ;
80+ const emittedActions = [ ] ;
8181
82- service . getSelectedBitstream $( ) . subscribe ( selected => emittedEntries . push ( selected ) ) ;
82+ service . getSelectionAction $( ) . subscribe ( selected => emittedActions . push ( selected ) ) ;
8383
84- expect ( emittedEntries . length ) . toBe ( 1 ) ;
85- expect ( emittedEntries [ 0 ] ) . toBeNull ( ) ;
84+ expect ( emittedActions . length ) . toBe ( 1 ) ;
85+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
8686
8787 const entry = Object . assign ( { } , defaultEntry ) ;
8888
8989 service . selectBitstreamEntry ( entry ) ;
9090 tick ( ) ;
9191
92- expect ( emittedEntries . length ) . toBe ( 2 ) ;
93- expect ( emittedEntries [ 1 ] ) . toEqual ( entry ) ;
92+ expect ( emittedActions . length ) . toBe ( 2 ) ;
93+ expect ( emittedActions [ 1 ] ) . toEqual ( { action : 'Selected' , selectedEntry : entry } ) ;
9494 } ) ) ;
9595
9696 it ( 'should correctly make getSelectedBitstream return the bitstream' , ( ) => {
@@ -112,26 +112,26 @@ describe('ItemBitstreamsService', () => {
112112 } ) ;
113113
114114 it ( 'should do nothing if no entry was provided' , fakeAsync ( ( ) => {
115- const emittedEntries = [ ] ;
115+ const emittedActions = [ ] ;
116116
117- service . getSelectedBitstream $( ) . subscribe ( selected => emittedEntries . push ( selected ) ) ;
117+ service . getSelectionAction $( ) . subscribe ( selected => emittedActions . push ( selected ) ) ;
118118
119- expect ( emittedEntries . length ) . toBe ( 1 ) ;
120- expect ( emittedEntries [ 0 ] ) . toBeNull ( ) ;
119+ expect ( emittedActions . length ) . toBe ( 1 ) ;
120+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
121121
122122 const entry = Object . assign ( { } , defaultEntry ) ;
123123
124124 service . selectBitstreamEntry ( entry ) ;
125125 tick ( ) ;
126126
127- expect ( emittedEntries . length ) . toBe ( 2 ) ;
128- expect ( emittedEntries [ 1 ] ) . toEqual ( entry ) ;
127+ expect ( emittedActions . length ) . toBe ( 2 ) ;
128+ expect ( emittedActions [ 1 ] ) . toEqual ( { action : 'Selected' , selectedEntry : entry } ) ;
129129
130130 service . selectBitstreamEntry ( null ) ;
131131 tick ( ) ;
132132
133- expect ( emittedEntries . length ) . toBe ( 2 ) ;
134- expect ( emittedEntries [ 1 ] ) . toEqual ( entry ) ;
133+ expect ( emittedActions . length ) . toBe ( 2 ) ;
134+ expect ( emittedActions [ 1 ] ) . toEqual ( { action : 'Selected' , selectedEntry : entry } ) ;
135135 } ) ) ;
136136
137137 it ( 'should announce the selected bitstream' , ( ) => {
@@ -146,41 +146,41 @@ describe('ItemBitstreamsService', () => {
146146
147147 describe ( 'clearSelection' , ( ) => {
148148 it ( 'should clear the selected bitstream' , fakeAsync ( ( ) => {
149- const emittedEntries = [ ] ;
149+ const emittedActions = [ ] ;
150150
151- service . getSelectedBitstream $( ) . subscribe ( selected => emittedEntries . push ( selected ) ) ;
151+ service . getSelectionAction $( ) . subscribe ( selected => emittedActions . push ( selected ) ) ;
152152
153- expect ( emittedEntries . length ) . toBe ( 1 ) ;
154- expect ( emittedEntries [ 0 ] ) . toBeNull ( ) ;
153+ expect ( emittedActions . length ) . toBe ( 1 ) ;
154+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
155155
156156 const entry = Object . assign ( { } , defaultEntry ) ;
157157
158158 service . selectBitstreamEntry ( entry ) ;
159159 tick ( ) ;
160160
161- expect ( emittedEntries . length ) . toBe ( 2 ) ;
162- expect ( emittedEntries [ 1 ] ) . toEqual ( entry ) ;
161+ expect ( emittedActions . length ) . toBe ( 2 ) ;
162+ expect ( emittedActions [ 1 ] ) . toEqual ( { action : 'Selected' , selectedEntry : entry } ) ;
163163
164164 service . clearSelection ( ) ;
165165 tick ( ) ;
166166
167- expect ( emittedEntries . length ) . toBe ( 3 ) ;
168- expect ( emittedEntries [ 2 ] ) . toBeNull ( ) ;
167+ expect ( emittedActions . length ) . toBe ( 3 ) ;
168+ expect ( emittedActions [ 2 ] ) . toEqual ( { action : 'Cleared' , selectedEntry : entry } ) ;
169169 } ) ) ;
170170
171171 it ( 'should not do anything if there is no selected bitstream' , fakeAsync ( ( ) => {
172- const emittedEntries = [ ] ;
172+ const emittedActions = [ ] ;
173173
174- service . getSelectedBitstream $( ) . subscribe ( selected => emittedEntries . push ( selected ) ) ;
174+ service . getSelectionAction $( ) . subscribe ( selected => emittedActions . push ( selected ) ) ;
175175
176- expect ( emittedEntries . length ) . toBe ( 1 ) ;
177- expect ( emittedEntries [ 0 ] ) . toBeNull ( ) ;
176+ expect ( emittedActions . length ) . toBe ( 1 ) ;
177+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
178178
179179 service . clearSelection ( ) ;
180180 tick ( ) ;
181181
182- expect ( emittedEntries . length ) . toBe ( 1 ) ;
183- expect ( emittedEntries [ 0 ] ) . toBeNull ( ) ;
182+ expect ( emittedActions . length ) . toBe ( 1 ) ;
183+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
184184 } ) ) ;
185185
186186 it ( 'should announce the cleared bitstream' , ( ) => {
@@ -225,27 +225,53 @@ describe('ItemBitstreamsService', () => {
225225 } ) ;
226226
227227 describe ( 'cancelSelection' , ( ) => {
228- it ( 'should clear the selected bitstream' , fakeAsync ( ( ) => {
229- const emittedEntries = [ ] ;
228+ it ( 'should clear the selected bitstream if it has not moved ' , fakeAsync ( ( ) => {
229+ const emittedActions = [ ] ;
230230
231- service . getSelectedBitstream $( ) . subscribe ( selected => emittedEntries . push ( selected ) ) ;
231+ service . getSelectionAction $( ) . subscribe ( selected => emittedActions . push ( selected ) ) ;
232232
233- expect ( emittedEntries . length ) . toBe ( 1 ) ;
234- expect ( emittedEntries [ 0 ] ) . toBeNull ( ) ;
233+ expect ( emittedActions . length ) . toBe ( 1 ) ;
234+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
235235
236236 const entry = Object . assign ( { } , defaultEntry ) ;
237237
238238 service . selectBitstreamEntry ( entry ) ;
239239 tick ( ) ;
240240
241- expect ( emittedEntries . length ) . toBe ( 2 ) ;
242- expect ( emittedEntries [ 1 ] ) . toEqual ( entry ) ;
241+ expect ( emittedActions . length ) . toBe ( 2 ) ;
242+ expect ( emittedActions [ 1 ] ) . toEqual ( { action : 'Selected' , selectedEntry : entry } ) ;
243243
244244 service . cancelSelection ( ) ;
245245 tick ( ) ;
246246
247- expect ( emittedEntries . length ) . toBe ( 3 ) ;
248- expect ( emittedEntries [ 2 ] ) . toBeNull ( ) ;
247+ expect ( emittedActions . length ) . toBe ( 3 ) ;
248+ expect ( emittedActions [ 2 ] ) . toEqual ( { action : 'Cleared' , selectedEntry : entry } ) ;
249+ } ) ) ;
250+
251+ it ( 'should cancel the selected bitstream if it has moved' , fakeAsync ( ( ) => {
252+ const emittedActions = [ ] ;
253+
254+ service . getSelectionAction$ ( ) . subscribe ( selected => emittedActions . push ( selected ) ) ;
255+
256+ expect ( emittedActions . length ) . toBe ( 1 ) ;
257+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
258+
259+ const entry = Object . assign ( { } , defaultEntry , {
260+ originalPosition : 0 ,
261+ currentPosition : 3 ,
262+ } ) ;
263+
264+ service . selectBitstreamEntry ( entry ) ;
265+ tick ( ) ;
266+
267+ expect ( emittedActions . length ) . toBe ( 2 ) ;
268+ expect ( emittedActions [ 1 ] ) . toEqual ( { action : 'Selected' , selectedEntry : entry } ) ;
269+
270+ service . cancelSelection ( ) ;
271+ tick ( ) ;
272+
273+ expect ( emittedActions . length ) . toBe ( 3 ) ;
274+ expect ( emittedActions [ 2 ] ) . toEqual ( { action : 'Cancelled' , selectedEntry : entry } ) ;
249275 } ) ) ;
250276
251277 it ( 'should announce a clear if the bitstream has not moved' , ( ) => {
@@ -359,6 +385,44 @@ describe('ItemBitstreamsService', () => {
359385 expect ( service . getSelectedBitstream ( ) ) . toEqual ( movedEntry ) ;
360386 } ) ;
361387
388+ it ( 'should emit the move' , fakeAsync ( ( ) => {
389+ const emittedActions = [ ] ;
390+
391+ service . getSelectionAction$ ( ) . subscribe ( selected => emittedActions . push ( selected ) ) ;
392+
393+ expect ( emittedActions . length ) . toBe ( 1 ) ;
394+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
395+
396+ const startPosition = 7 ;
397+ const endPosition = startPosition - 1 ;
398+
399+ const entry = Object . assign ( { } , defaultEntry ,
400+ {
401+ originalPosition : 5 ,
402+ currentPosition : startPosition ,
403+ }
404+ ) ;
405+
406+ const movedEntry = Object . assign ( { } , defaultEntry ,
407+ {
408+ originalPosition : 5 ,
409+ currentPosition : endPosition ,
410+ }
411+ ) ;
412+
413+ service . selectBitstreamEntry ( entry ) ;
414+ tick ( ) ;
415+
416+ expect ( emittedActions . length ) . toBe ( 2 ) ;
417+ expect ( emittedActions [ 1 ] ) . toEqual ( { action : 'Selected' , selectedEntry : entry } ) ;
418+
419+ service . moveSelectedBitstreamUp ( ) ;
420+ tick ( ) ;
421+
422+ expect ( emittedActions . length ) . toBe ( 3 ) ;
423+ expect ( emittedActions [ 2 ] ) . toEqual ( { action : 'Moved' , selectedEntry : movedEntry } ) ;
424+ } ) ) ;
425+
362426 it ( 'should announce the move' , ( ) => {
363427 const startPosition = 7 ;
364428 const endPosition = startPosition - 1 ;
@@ -424,6 +488,44 @@ describe('ItemBitstreamsService', () => {
424488 expect ( service . getSelectedBitstream ( ) ) . toEqual ( movedEntry ) ;
425489 } ) ;
426490
491+ it ( 'should emit the move' , fakeAsync ( ( ) => {
492+ const emittedActions = [ ] ;
493+
494+ service . getSelectionAction$ ( ) . subscribe ( selected => emittedActions . push ( selected ) ) ;
495+
496+ expect ( emittedActions . length ) . toBe ( 1 ) ;
497+ expect ( emittedActions [ 0 ] ) . toBeNull ( ) ;
498+
499+ const startPosition = 7 ;
500+ const endPosition = startPosition + 1 ;
501+
502+ const entry = Object . assign ( { } , defaultEntry ,
503+ {
504+ originalPosition : 5 ,
505+ currentPosition : startPosition ,
506+ }
507+ ) ;
508+
509+ const movedEntry = Object . assign ( { } , defaultEntry ,
510+ {
511+ originalPosition : 5 ,
512+ currentPosition : endPosition ,
513+ }
514+ ) ;
515+
516+ service . selectBitstreamEntry ( entry ) ;
517+ tick ( ) ;
518+
519+ expect ( emittedActions . length ) . toBe ( 2 ) ;
520+ expect ( emittedActions [ 1 ] ) . toEqual ( { action : 'Selected' , selectedEntry : entry } ) ;
521+
522+ service . moveSelectedBitstreamDown ( ) ;
523+ tick ( ) ;
524+
525+ expect ( emittedActions . length ) . toBe ( 3 ) ;
526+ expect ( emittedActions [ 2 ] ) . toEqual ( { action : 'Moved' , selectedEntry : movedEntry } ) ;
527+ } ) ) ;
528+
427529 it ( 'should announce the move' , ( ) => {
428530 const startPosition = 7 ;
429531 const endPosition = startPosition + 1 ;
0 commit comments