import './index.js'; import crudModel from 'core/mocks/crud-model'; describe('Order', () => { describe('Component vnOrderCatalog', () => { let $scope; let controller; beforeEach(ngModule('order')); beforeEach(angular.mock.inject(($componentController, $rootScope) => { $scope = $rootScope.$new(); $scope.model = crudModel; $scope.field = {}; controller = $componentController('vnOrderCatalog', {$scope: $scope}); })); describe('onDataChange()', () => { it(`should return an object with order params`, () => { let expectedList = [ {field: 'relevancy DESC, name', name: 'Name'}, {field: 'price', name: 'Price'}, {field: 4, name: 'Length', isTag: true} ]; $scope.model.data = [{id: 1, name: 'My Item', tags: [ {tagFk: 4, name: 'Length'} ]}]; controller.onDataChange(); expect(controller.fieldList).toEqual(expectedList); }); }); describe('getOrderBy()', () => { it(`should return an object with order params`, () => { controller.field = 'relevancy DESC, name'; controller.way = 'DESC'; let expectedResult = {field: 'relevancy DESC, name', way: 'DESC'}; let result = controller.getOrderBy(); expect(result).toEqual(expectedResult); }); }); describe('applyOrder()', () => { it(`should apply order param to model calling getOrderBy()`, () => { controller.field = 'relevancy DESC, name'; controller.way = 'ASC'; let expectedOrder = {orderBy: controller.getOrderBy()}; spyOn(controller, 'getOrderBy').and.callThrough(); spyOn(controller.$scope.model, 'addFilter'); controller.applyOrder(); expect(controller.getOrderBy).toHaveBeenCalledWith(); expect(controller.$scope.model.addFilter).toHaveBeenCalledWith(null, expectedOrder); }); }); }); });