2017-09-26 08:26:21 +00:00
|
|
|
import './autocomplete.js';
|
|
|
|
|
|
|
|
describe('Component vnAutocomplete', () => {
|
|
|
|
let $componentController;
|
|
|
|
let $scope;
|
|
|
|
let $httpBackend;
|
|
|
|
let $timeout;
|
|
|
|
let $element;
|
|
|
|
|
|
|
|
beforeEach(() => {
|
|
|
|
angular.mock.module('client');
|
|
|
|
});
|
|
|
|
|
|
|
|
beforeEach(angular.mock.inject((_$componentController_, $rootScope, _$httpBackend_, _$timeout_) => {
|
|
|
|
$componentController = _$componentController_;
|
|
|
|
$scope = $rootScope.$new();
|
|
|
|
$httpBackend = _$httpBackend_;
|
|
|
|
$timeout = _$timeout_;
|
|
|
|
$element = angular.element('<div></div>');
|
|
|
|
}));
|
|
|
|
|
|
|
|
describe('showDropDown() setter', () => {
|
|
|
|
it(`should set _showDropDown value`, () => {
|
|
|
|
let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout});
|
|
|
|
controller._showDropDown = '';
|
|
|
|
controller.showDropDown = 'some value';
|
|
|
|
|
|
|
|
expect(controller._showDropDown).toEqual('some value');
|
|
|
|
});
|
2017-09-26 12:10:55 +00:00
|
|
|
|
|
|
|
it(`should set _showDropDown value`, () => {
|
|
|
|
let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout});
|
|
|
|
controller._showDropDown = '';
|
|
|
|
controller.showDropDown = 'some value';
|
|
|
|
|
|
|
|
expect(controller._showDropDown).toEqual('some value');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('displayValue() setter', () => {
|
|
|
|
it(`should display value in a formated way`, () => {
|
|
|
|
let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout});
|
|
|
|
let value = 'some value';
|
|
|
|
controller.displayValue = value;
|
|
|
|
|
|
|
|
expect(controller._value).toEqual(value);
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('when the autocomeplete is multiple', () => {
|
|
|
|
it(`should display values separated with commas`, () => {
|
|
|
|
let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout});
|
|
|
|
controller.multiple = true;
|
|
|
|
controller.displayValue = 'some value';
|
|
|
|
controller.displayValue = 'another value';
|
|
|
|
|
|
|
|
expect(controller._value).toEqual('some value, another value');
|
|
|
|
});
|
|
|
|
});
|
2017-09-26 08:26:21 +00:00
|
|
|
});
|
2017-09-26 16:21:11 +00:00
|
|
|
|
|
|
|
describe('field() setter', () => {
|
|
|
|
describe('when value is an object with valueField property', () => {
|
|
|
|
it(`should set _field and _multifield values and remove it from _multifield if called again`, () => {
|
|
|
|
let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout});
|
|
|
|
controller.valueField = 'name';
|
|
|
|
controller.field = {name: 'Bruce Wayne'};
|
|
|
|
|
|
|
|
expect(controller._field).toEqual('Bruce Wayne');
|
|
|
|
expect(controller._multiField[0]).toEqual('Bruce Wayne');
|
|
|
|
|
|
|
|
controller.field = {name: 'Bruce Wayne'};
|
|
|
|
|
|
|
|
expect(controller._multiField).toEqual([]);
|
|
|
|
expect(controller._field).toEqual('Bruce Wayne');
|
|
|
|
});
|
|
|
|
});
|
2017-09-27 06:09:10 +00:00
|
|
|
|
2017-09-27 09:51:25 +00:00
|
|
|
describe('when value is a number', () => {
|
|
|
|
it(`should set field find an existing item in the controller.items property`, () => {
|
2017-09-27 06:09:10 +00:00
|
|
|
let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout});
|
2017-09-27 07:42:59 +00:00
|
|
|
controller.items = [{id: 1, name: 'test1'}, {id: 2, name: 'Bruce Wayne'}];
|
|
|
|
controller.field = 2;
|
2017-09-27 06:09:10 +00:00
|
|
|
|
2017-09-27 07:42:59 +00:00
|
|
|
expect(controller._field).toEqual(2);
|
|
|
|
expect(controller._multiField).toEqual([]);
|
2017-09-27 06:09:10 +00:00
|
|
|
|
2017-09-27 07:42:59 +00:00
|
|
|
controller.field = {id: 3, name: 'The Joker'};
|
2017-09-27 06:09:10 +00:00
|
|
|
|
2017-09-27 07:42:59 +00:00
|
|
|
expect(controller._field).toEqual(3);
|
2017-09-27 06:09:10 +00:00
|
|
|
});
|
2017-09-27 09:51:25 +00:00
|
|
|
|
|
|
|
it(`should set field performing a query as the item id isn't present in the controller.items property`, () => {
|
|
|
|
let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'});
|
2017-09-27 09:58:35 +00:00
|
|
|
$httpBackend.whenGET('test.com?filter={"fields":{"id":true,"name":true},"where":{"id":3}}').respond();
|
2017-09-27 09:51:25 +00:00
|
|
|
$httpBackend.expectGET('test.com?filter={"fields":{"id":true,"name":true},"where":{"id":3}}');
|
|
|
|
controller.items = [{id: 1, name: 'test1'}, {id: 2, name: 'Bruce Wayne'}];
|
|
|
|
controller.field = 3;
|
|
|
|
$httpBackend.flush();
|
|
|
|
});
|
2017-09-27 06:09:10 +00:00
|
|
|
});
|
2017-09-26 16:21:11 +00:00
|
|
|
});
|
2017-09-26 08:26:21 +00:00
|
|
|
});
|