55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
import Vue from 'vue';
|
|
import GraphFlag from '~/monitoring/components/graph/flag.vue';
|
|
|
|
const createComponent = (propsData) => {
|
|
const Component = Vue.extend(GraphFlag);
|
|
|
|
return new Component({
|
|
propsData,
|
|
}).$mount();
|
|
};
|
|
|
|
function getCoordinate(component, selector, coordinate) {
|
|
const coordinateVal = component.$el.querySelector(selector).getAttribute(coordinate);
|
|
return parseInt(coordinateVal, 10);
|
|
}
|
|
|
|
const defaultValuesComponent = {
|
|
currentXCoordinate: 200,
|
|
currentYCoordinate: 100,
|
|
currentFlagPosition: 100,
|
|
currentData: {
|
|
time: new Date('2017-06-04T18:17:33.501Z'),
|
|
value: '1.49609375',
|
|
},
|
|
graphHeight: 300,
|
|
graphHeightOffset: 120,
|
|
showFlagContent: true,
|
|
};
|
|
|
|
describe('GraphFlag', () => {
|
|
it('has a line and a circle located at the currentXCoordinate and currentYCoordinate', () => {
|
|
const component = createComponent(defaultValuesComponent);
|
|
|
|
expect(getCoordinate(component, '.selected-metric-line', 'x1'))
|
|
.toEqual(component.currentXCoordinate);
|
|
expect(getCoordinate(component, '.selected-metric-line', 'x2'))
|
|
.toEqual(component.currentXCoordinate);
|
|
});
|
|
|
|
it('has a SVG with the class rect-text-metric at the currentFlagPosition', () => {
|
|
const component = createComponent(defaultValuesComponent);
|
|
|
|
const svg = component.$el.querySelector('.rect-text-metric');
|
|
expect(svg.tagName).toEqual('svg');
|
|
expect(parseInt(svg.getAttribute('x'), 10)).toEqual(component.currentFlagPosition);
|
|
});
|
|
|
|
describe('Computed props', () => {
|
|
it('calculatedHeight', () => {
|
|
const component = createComponent(defaultValuesComponent);
|
|
|
|
expect(component.calculatedHeight).toEqual(180);
|
|
});
|
|
});
|
|
});
|