* feat: full amd -> es6 conversion * fix: move MCT to ES6 class * fix: default drop, correct imports * fix: correct all imports * fix: property typo * fix: avoid anonymous functions * fix: correct typo scarily small - can see why this e2e coverage issue is high priority * fix: use proper uuid format * style: fmt * fix: import vue correctly, get correct layout * fix: createApp without JSON fixes template issues * fix: don't use default on InspectorDataVisualization * fix: remove more .default calls * Update src/api/api.js Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com> * Update src/plugins/plugins.js Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com> * Update src/plugins/plugins.js Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com> * fix: suggestions * fix: drop unnecessary this.annotation initialization * fix: move all initialization calls to constructor * refactor: move vue dist import to webpack alias --------- Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
168 lines
5.3 KiB
JavaScript
168 lines
5.3 KiB
JavaScript
import TestDataItem from '../src/TestDataItem';
|
|
|
|
describe('A summary widget test data item', function () {
|
|
let testDataItem;
|
|
let mockConfig;
|
|
let mockConditionManager;
|
|
let mockContainer;
|
|
let mockEvaluator;
|
|
let changeSpy;
|
|
let duplicateSpy;
|
|
let removeSpy;
|
|
let generateValueSpy;
|
|
|
|
beforeEach(function () {
|
|
mockContainer = document.createElement('div');
|
|
|
|
mockConfig = {
|
|
object: 'object1',
|
|
key: 'property1',
|
|
value: 1
|
|
};
|
|
|
|
mockEvaluator = {};
|
|
mockEvaluator.getInputTypeById = jasmine.createSpy('inputType');
|
|
|
|
mockConditionManager = jasmine.createSpyObj('mockConditionManager', [
|
|
'on',
|
|
'getComposition',
|
|
'loadCompleted',
|
|
'getEvaluator',
|
|
'getTelemetryMetadata',
|
|
'metadataLoadCompleted',
|
|
'getObjectName',
|
|
'getTelemetryPropertyName',
|
|
'getTelemetryPropertyType'
|
|
]);
|
|
mockConditionManager.loadCompleted.and.returnValue(false);
|
|
mockConditionManager.metadataLoadCompleted.and.returnValue(false);
|
|
mockConditionManager.getEvaluator.and.returnValue(mockEvaluator);
|
|
mockConditionManager.getComposition.and.returnValue({});
|
|
mockConditionManager.getTelemetryMetadata.and.returnValue({});
|
|
mockConditionManager.getObjectName.and.returnValue('Object Name');
|
|
mockConditionManager.getTelemetryPropertyName.and.returnValue('Property Name');
|
|
mockConditionManager.getTelemetryPropertyType.and.returnValue('');
|
|
|
|
duplicateSpy = jasmine.createSpy('duplicate');
|
|
removeSpy = jasmine.createSpy('remove');
|
|
changeSpy = jasmine.createSpy('change');
|
|
generateValueSpy = jasmine.createSpy('generateValueInput');
|
|
|
|
testDataItem = new TestDataItem(mockConfig, 54, mockConditionManager);
|
|
|
|
testDataItem.on('duplicate', duplicateSpy);
|
|
testDataItem.on('remove', removeSpy);
|
|
testDataItem.on('change', changeSpy);
|
|
});
|
|
|
|
it('exposes a DOM element to represent itself in the view', function () {
|
|
mockContainer.append(testDataItem.getDOM());
|
|
expect(mockContainer.querySelectorAll('.t-test-data-item').length).toEqual(1);
|
|
});
|
|
|
|
it('responds to a change in its object select', function () {
|
|
testDataItem.selects.object.setSelected('');
|
|
expect(changeSpy).toHaveBeenCalledWith({
|
|
value: '',
|
|
property: 'object',
|
|
index: 54
|
|
});
|
|
});
|
|
|
|
it('responds to a change in its key select', function () {
|
|
testDataItem.generateValueInput = generateValueSpy;
|
|
testDataItem.selects.key.setSelected('');
|
|
expect(changeSpy).toHaveBeenCalledWith({
|
|
value: '',
|
|
property: 'key',
|
|
index: 54
|
|
});
|
|
expect(generateValueSpy).toHaveBeenCalledWith('');
|
|
});
|
|
|
|
it('generates a value input of the appropriate type', function () {
|
|
let inputs;
|
|
|
|
mockContainer.append(testDataItem.getDOM());
|
|
mockEvaluator.getInputTypeById.and.returnValue('number');
|
|
testDataItem.generateValueInput('');
|
|
|
|
inputs = mockContainer.querySelectorAll('input');
|
|
const numberInputs = Array.from(inputs).filter((input) => input.type === 'number');
|
|
|
|
expect(numberInputs.length).toEqual(1);
|
|
expect(inputs[0].valueAsNumber).toEqual(1);
|
|
|
|
mockEvaluator.getInputTypeById.and.returnValue('text');
|
|
testDataItem.config.value = 'Text I Am';
|
|
testDataItem.generateValueInput('');
|
|
|
|
inputs = mockContainer.querySelectorAll('input');
|
|
const textInputs = Array.from(inputs).filter((input) => input.type === 'text');
|
|
|
|
expect(textInputs.length).toEqual(1);
|
|
expect(inputs[0].value).toEqual('Text I Am');
|
|
});
|
|
|
|
it('ensures reasonable defaults on values if none are provided', function () {
|
|
let inputs;
|
|
|
|
mockContainer.append(testDataItem.getDOM());
|
|
|
|
mockEvaluator.getInputTypeById.and.returnValue('number');
|
|
testDataItem.config.value = undefined;
|
|
testDataItem.generateValueInput('');
|
|
|
|
inputs = mockContainer.querySelectorAll('input');
|
|
const numberInputs = Array.from(inputs).filter((input) => input.type === 'number');
|
|
|
|
expect(numberInputs.length).toEqual(1);
|
|
expect(inputs[0].valueAsNumber).toEqual(0);
|
|
expect(testDataItem.config.value).toEqual(0);
|
|
|
|
mockEvaluator.getInputTypeById.and.returnValue('text');
|
|
testDataItem.config.value = undefined;
|
|
testDataItem.generateValueInput('');
|
|
|
|
inputs = mockContainer.querySelectorAll('input');
|
|
const textInputs = Array.from(inputs).filter((input) => input.type === 'text');
|
|
|
|
expect(textInputs.length).toEqual(1);
|
|
expect(inputs[0].value).toEqual('');
|
|
expect(testDataItem.config.value).toEqual('');
|
|
});
|
|
|
|
it('responds to a change in its value inputs', function () {
|
|
mockContainer.append(testDataItem.getDOM());
|
|
mockEvaluator.getInputTypeById.and.returnValue('number');
|
|
testDataItem.generateValueInput('');
|
|
|
|
const event = new Event('input', {
|
|
bubbles: true,
|
|
cancelable: true
|
|
});
|
|
|
|
mockContainer.querySelector('input').value = 9001;
|
|
mockContainer.querySelector('input').dispatchEvent(event);
|
|
|
|
expect(changeSpy).toHaveBeenCalledWith({
|
|
value: 9001,
|
|
property: 'value',
|
|
index: 54
|
|
});
|
|
});
|
|
|
|
it('can remove itself from the configuration', function () {
|
|
testDataItem.remove();
|
|
expect(removeSpy).toHaveBeenCalledWith(54);
|
|
});
|
|
|
|
it('can duplicate itself', function () {
|
|
testDataItem.duplicate();
|
|
expect(duplicateSpy).toHaveBeenCalledWith({
|
|
sourceItem: mockConfig,
|
|
index: 54
|
|
});
|
|
});
|
|
});
|