Skip to content

Commit 2b1b9d8

Browse files
committed
118223: Include selection action with selection
1 parent 7fb4755 commit 2b1b9d8

5 files changed

Lines changed: 233 additions & 102 deletions

File tree

src/app/item-page/edit-item-page/item-bitstreams/item-bitstreams.service.spec.ts

Lines changed: 139 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

src/app/item-page/edit-item-page/item-bitstreams/item-bitstreams.service.stub.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export function getItemBitstreamsServiceStub(): ItemBitstreamsServiceStub {
99
}
1010

1111
export class ItemBitstreamsServiceStub {
12-
getSelectedBitstream$ = jasmine.createSpy('getSelectedBitstream$').and
12+
getSelectionAction$ = jasmine.createSpy('getSelectedBitstream$').and
1313
.returnValue(of(null));
1414

1515
getSelectedBitstream = jasmine.createSpy('getSelectedBitstream').and

0 commit comments

Comments
 (0)