mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
Added test for SidebarFilterService
This commit is contained in:
109
src/app/shared/sidebar/filter/sidebar-filter.service.spec.ts
Normal file
109
src/app/shared/sidebar/filter/sidebar-filter.service.spec.ts
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
import { async, TestBed } from '@angular/core/testing';
|
||||||
|
import * as ngrx from '@ngrx/store';
|
||||||
|
import { Store, StoreModule } from '@ngrx/store';
|
||||||
|
import { provideMockStore } from '@ngrx/store/testing';
|
||||||
|
import { cold } from 'jasmine-marbles';
|
||||||
|
|
||||||
|
import { sidebarFilterReducer } from './sidebar-filter.reducer';
|
||||||
|
import { SidebarFilterService } from './sidebar-filter.service';
|
||||||
|
import {
|
||||||
|
FilterCollapseAction,
|
||||||
|
FilterExpandAction,
|
||||||
|
FilterInitializeAction,
|
||||||
|
FilterToggleAction
|
||||||
|
} from './sidebar-filter.actions';
|
||||||
|
|
||||||
|
describe('SidebarFilterService', () => {
|
||||||
|
let service: SidebarFilterService;
|
||||||
|
let selectSpy;
|
||||||
|
let store: any;
|
||||||
|
let initialState;
|
||||||
|
|
||||||
|
function init() {
|
||||||
|
|
||||||
|
initialState = {
|
||||||
|
sidebarFilter: {
|
||||||
|
filter_1 : {
|
||||||
|
filterCollapsed: true
|
||||||
|
},
|
||||||
|
filter_2 : {
|
||||||
|
filterCollapsed: false
|
||||||
|
},
|
||||||
|
filter_3 : {
|
||||||
|
filterCollapsed: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
init();
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [
|
||||||
|
StoreModule.forRoot({ sidebarFilter: sidebarFilterReducer })
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
provideMockStore({ initialState }),
|
||||||
|
{ provide: SidebarFilterService, useValue: service }
|
||||||
|
]
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
store = TestBed.get(Store);
|
||||||
|
service = new SidebarFilterService(store);
|
||||||
|
selectSpy = spyOnProperty(ngrx, 'select').and.callThrough();
|
||||||
|
spyOn(store, 'dispatch');
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('initializeFilter', () => {
|
||||||
|
it('should dispatch an FilterInitializeAction with the correct arguments', () => {
|
||||||
|
service.initializeFilter('fakeFilter', true);
|
||||||
|
expect(store.dispatch).toHaveBeenCalledWith(new FilterInitializeAction('fakeFilter', true));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('collapse', () => {
|
||||||
|
it('should dispatch an FilterInitializeAction with the correct arguments', () => {
|
||||||
|
service.collapse('fakeFilter');
|
||||||
|
expect(store.dispatch).toHaveBeenCalledWith(new FilterCollapseAction('fakeFilter'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('expand', () => {
|
||||||
|
it('should dispatch an FilterInitializeAction with the correct arguments', () => {
|
||||||
|
service.expand('fakeFilter');
|
||||||
|
expect(store.dispatch).toHaveBeenCalledWith(new FilterExpandAction('fakeFilter'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('toggle', () => {
|
||||||
|
it('should dispatch an FilterInitializeAction with the correct arguments', () => {
|
||||||
|
service.toggle('fakeFilter');
|
||||||
|
expect(store.dispatch).toHaveBeenCalledWith(new FilterToggleAction('fakeFilter'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('isCollapsed', () => {
|
||||||
|
it('should return true', () => {
|
||||||
|
|
||||||
|
const result = service.isCollapsed('filter_1');
|
||||||
|
const expected = cold('b', {
|
||||||
|
b: true
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result).toBeObservable(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return false', () => {
|
||||||
|
|
||||||
|
const result = service.isCollapsed('filter_2');
|
||||||
|
const expected = cold('b', {
|
||||||
|
b: false
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result).toBeObservable(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Reference in New Issue
Block a user