Skip to content

Commit 6795d60

Browse files
committed
chore(selection): test reset class and selected item function
1 parent 68ec1a0 commit 6795d60

1 file changed

Lines changed: 41 additions & 17 deletions

File tree

projects/ng-sortgrid/src/lib/mutliselect/ngsg-selection.service.spec.ts

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
import createSpyObj = jasmine.createSpyObj;
22
import createSpy = jasmine.createSpy;
33

4-
import {NgsgSelectionService} from './ngsg-selection.service';
5-
import {NgsgClassService} from '../helpers/class/ngsg-class.service';
6-
import {NgsgStoreService} from '../store/ngsg-store.service';
7-
import {NgsgElementsHelper} from '../helpers/element/ngsg-elements.helper';
4+
import { NgsgSelectionService } from './ngsg-selection.service';
5+
import { NgsgClassService } from '../helpers/class/ngsg-class.service';
6+
import { NgsgStoreService } from '../store/ngsg-store.service';
7+
import { NgsgElementsHelper } from '../helpers/element/ngsg-elements.helper';
88

99
describe('NgsgSelectionService', () => {
10-
11-
const ngsgClassService = createSpyObj<NgsgClassService>('classService',
12-
['addSelectedClass', 'addSelectedClass', 'removeSelectedClass']);
13-
const ngsgStore = createSpyObj<NgsgStoreService>('ngsgStore',
14-
['addSelectedItem', 'hasSelectedItems', 'removeSelectedItem']);
10+
const ngsgClassService = createSpyObj<NgsgClassService>('classService', [
11+
'addSelectedClass',
12+
'addSelectedClass',
13+
'removeSelectedClass'
14+
]);
15+
const ngsgStore = createSpyObj<NgsgStoreService>('ngsgStore', [
16+
'addSelectedItem',
17+
'getSelectedItems',
18+
'hasSelectedItems',
19+
'removeSelectedItem',
20+
'resetSelectedItems'
21+
]);
1522
let sut: NgsgSelectionService;
1623

1724
beforeEach(() => {
@@ -24,7 +31,6 @@ describe('NgsgSelectionService', () => {
2431
});
2532

2633
describe('selectElementIfNoSelection', () => {
27-
2834
it('should call hasSelectedItems with the group', () => {
2935
ngsgStore.hasSelectedItems.and.returnValue(true);
3036
const dragedElement = 'Cool element' as any;
@@ -57,14 +63,13 @@ describe('NgsgSelectionService', () => {
5763

5864
expect(findIndexSpy).toHaveBeenCalledWith(dragedElement);
5965
expect(ngsgStore.addSelectedItem).toHaveBeenCalledWith(group, {
60-
node: dragedElement, originalIndex
66+
node: dragedElement,
67+
originalIndex
6168
});
6269
});
6370

6471
describe('Selection change', () => {
65-
6672
it('should add the selectedItem if the Meta key is pressed and the item is clicked', () => {
67-
6873
const event = new KeyboardEvent('keydown', {
6974
key: 'Meta'
7075
});
@@ -77,11 +82,10 @@ describe('NgsgSelectionService', () => {
7782
window.dispatchEvent(event);
7883
sut.updateSelectedDragItem(group, item, selected);
7984

80-
expect(ngsgStore.addSelectedItem).toHaveBeenCalledWith(group, {node: item, originalIndex: index});
85+
expect(ngsgStore.addSelectedItem).toHaveBeenCalledWith(group, { node: item, originalIndex: index });
8186
});
8287

8388
it('should remove the selectedItem if the Meta key is pressed and the selected item is clicked', () => {
84-
8589
const event = new KeyboardEvent('keydown', {
8690
key: 'Meta'
8791
});
@@ -99,7 +103,6 @@ describe('NgsgSelectionService', () => {
99103

100104
it(`should remove the selected class from the selected item if the Meta key is pressed
101105
and the selected item is clicked`, () => {
102-
103106
const event = new KeyboardEvent('keydown', {
104107
key: 'Meta'
105108
});
@@ -114,7 +117,28 @@ describe('NgsgSelectionService', () => {
114117

115118
expect(ngsgClassService.removeSelectedClass).toHaveBeenCalledWith(item);
116119
});
117-
});
118120

121+
it(`should reset the selected items if we click on an item without holding the shift key`, () => {
122+
const event = new KeyboardEvent('keyup', {
123+
key: 'Meta'
124+
});
125+
const itemOne = { node: 'Foo' };
126+
const itemTwo = { node: 'Bar' };
127+
const items = [itemOne, itemTwo];
128+
const group = 'groupOne';
129+
const item = 'Some element' as any;
130+
const selected = false;
131+
const index = 2;
132+
133+
NgsgElementsHelper.findIndex = () => index;
134+
ngsgStore.getSelectedItems.and.returnValue(items);
135+
window.dispatchEvent(event);
136+
sut.updateSelectedDragItem(group, item, selected);
137+
138+
expect(ngsgClassService.removeSelectedClass).toHaveBeenCalledWith(itemOne.node);
139+
expect(ngsgClassService.removeSelectedClass).toHaveBeenCalledWith(itemTwo.node);
140+
expect(ngsgStore.resetSelectedItems).toHaveBeenCalledWith(group);
141+
});
142+
});
119143
});
120144
});

0 commit comments

Comments
 (0)