mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-26 17:24:56 +00:00
102 lines
3.4 KiB
TypeScript
102 lines
3.4 KiB
TypeScript
/*!
|
|
* @license
|
|
* Copyright 2016 Alfresco Software, Ltd.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import { Observable } from 'rxjs/Rx';
|
|
import { FormService } from '../../../services/form.service';
|
|
import { DropdownWidget } from './dropdown.widget';
|
|
import { FormModel } from './../core/form.model';
|
|
import { FormFieldModel } from './../core/form-field.model';
|
|
import { FormFieldOption } from './../core/form-field-option';
|
|
|
|
describe('DropdownWidget', () => {
|
|
|
|
let formService: FormService;
|
|
let widget: DropdownWidget;
|
|
|
|
beforeEach(() => {
|
|
formService = new FormService(null, null);
|
|
widget = new DropdownWidget(formService);
|
|
widget.field = new FormFieldModel(new FormModel());
|
|
});
|
|
|
|
it('should require field with restUrl', () => {
|
|
spyOn(formService, 'getRestFieldValues').and.stub();
|
|
|
|
widget.field = null;
|
|
widget.ngOnInit();
|
|
expect(formService.getRestFieldValues).not.toHaveBeenCalled();
|
|
|
|
widget.field = new FormFieldModel(null, { restUrl: null });
|
|
widget.ngOnInit();
|
|
expect(formService.getRestFieldValues).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('should request field values from service', () => {
|
|
const taskId = '<form-id>';
|
|
const fieldId = '<field-id>';
|
|
|
|
let form = new FormModel({
|
|
taskId: taskId
|
|
});
|
|
|
|
widget.field = new FormFieldModel(form, {
|
|
id: fieldId,
|
|
restUrl: '<url>'
|
|
});
|
|
|
|
spyOn(formService, 'getRestFieldValues').and.returnValue(
|
|
Observable.create(observer => {
|
|
observer.next(null);
|
|
observer.complete();
|
|
})
|
|
);
|
|
widget.ngOnInit();
|
|
expect(formService.getRestFieldValues).toHaveBeenCalledWith(taskId, fieldId);
|
|
});
|
|
|
|
it('should log error to console by default', () => {
|
|
spyOn(console, 'error').and.stub();
|
|
widget.handleError('Err');
|
|
expect(console.error).toHaveBeenCalledWith('Err');
|
|
});
|
|
|
|
it('should preserve empty option when loading fields', () => {
|
|
let restFieldValue: FormFieldOption = <FormFieldOption> { id: '1', name: 'Option1' };
|
|
spyOn(formService, 'getRestFieldValues').and.returnValue(
|
|
Observable.create(observer => {
|
|
observer.next([restFieldValue]);
|
|
observer.complete();
|
|
})
|
|
);
|
|
|
|
let form = new FormModel({ taskId: '<id>' });
|
|
let emptyOption: FormFieldOption = <FormFieldOption> { id: 'empty', name: 'Empty' };
|
|
widget.field = new FormFieldModel(form, {
|
|
id: '<id>',
|
|
restUrl: '/some/url/address',
|
|
hasEmptyValue: true,
|
|
options: [emptyOption]
|
|
});
|
|
widget.ngOnInit();
|
|
|
|
expect(formService.getRestFieldValues).toHaveBeenCalled();
|
|
expect(widget.field.options.length).toBe(2);
|
|
expect(widget.field.options[0]).toBe(emptyOption);
|
|
expect(widget.field.options[1]).toBe(restFieldValue);
|
|
});
|
|
});
|