185 lines
5.5 KiB
JavaScript
185 lines
5.5 KiB
JavaScript
import Vue from 'vue';
|
|
import GraphDeployment from '~/monitoring/components/graph/deployment.vue';
|
|
import { deploymentData } from '../mock_data';
|
|
|
|
const createComponent = (propsData) => {
|
|
const Component = Vue.extend(GraphDeployment);
|
|
|
|
return new Component({
|
|
propsData,
|
|
}).$mount();
|
|
};
|
|
|
|
describe('MonitoringDeployment', () => {
|
|
const reducedDeploymentData = [deploymentData[0]];
|
|
reducedDeploymentData[0].ref = reducedDeploymentData[0].ref.name;
|
|
reducedDeploymentData[0].xPos = 10;
|
|
reducedDeploymentData[0].time = new Date(reducedDeploymentData[0].created_at);
|
|
describe('Methods', () => {
|
|
it('refText shows the ref when a tag is available', () => {
|
|
reducedDeploymentData[0].tag = '1.0';
|
|
const component = createComponent({
|
|
showDeployInfo: false,
|
|
deploymentData: reducedDeploymentData,
|
|
graphWidth: 440,
|
|
graphHeight: 300,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(
|
|
component.refText(reducedDeploymentData[0]),
|
|
).toEqual(reducedDeploymentData[0].ref);
|
|
});
|
|
|
|
it('refText shows the sha when no tag is available', () => {
|
|
reducedDeploymentData[0].tag = null;
|
|
const component = createComponent({
|
|
showDeployInfo: false,
|
|
deploymentData: reducedDeploymentData,
|
|
graphHeight: 300,
|
|
graphWidth: 440,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(
|
|
component.refText(reducedDeploymentData[0]),
|
|
).toContain('f5bcd1');
|
|
});
|
|
|
|
it('nameDeploymentClass creates a class with the prefix deploy-info-', () => {
|
|
const component = createComponent({
|
|
showDeployInfo: false,
|
|
deploymentData: reducedDeploymentData,
|
|
graphHeight: 300,
|
|
graphWidth: 440,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(
|
|
component.nameDeploymentClass(reducedDeploymentData[0]),
|
|
).toContain('deploy-info');
|
|
});
|
|
|
|
it('transformDeploymentGroup translates an available deployment', () => {
|
|
const component = createComponent({
|
|
showDeployInfo: false,
|
|
deploymentData: reducedDeploymentData,
|
|
graphHeight: 300,
|
|
graphWidth: 440,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(
|
|
component.transformDeploymentGroup(reducedDeploymentData[0]),
|
|
).toContain('translate(11, 20)');
|
|
});
|
|
|
|
it('hides the deployment flag', () => {
|
|
reducedDeploymentData[0].showDeploymentFlag = false;
|
|
const component = createComponent({
|
|
showDeployInfo: true,
|
|
deploymentData: reducedDeploymentData,
|
|
graphWidth: 440,
|
|
graphHeight: 300,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(component.$el.querySelector('.js-deploy-info-box')).toBeNull();
|
|
});
|
|
|
|
it('positions the flag to the left when the xPos is too far right', () => {
|
|
reducedDeploymentData[0].showDeploymentFlag = false;
|
|
reducedDeploymentData[0].xPos = 250;
|
|
const component = createComponent({
|
|
showDeployInfo: true,
|
|
deploymentData: reducedDeploymentData,
|
|
graphWidth: 440,
|
|
graphHeight: 300,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(
|
|
component.positionFlag(reducedDeploymentData[0]),
|
|
).toBeLessThan(0);
|
|
});
|
|
|
|
it('shows the deployment flag', () => {
|
|
reducedDeploymentData[0].showDeploymentFlag = true;
|
|
const component = createComponent({
|
|
showDeployInfo: true,
|
|
deploymentData: reducedDeploymentData,
|
|
graphHeight: 300,
|
|
graphWidth: 440,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(
|
|
component.$el.querySelector('.js-deploy-info-box').style.display,
|
|
).not.toEqual('display: none;');
|
|
});
|
|
|
|
it('contains date, refs and the "deployed" text', () => {
|
|
reducedDeploymentData[0].showDeploymentFlag = true;
|
|
const component = createComponent({
|
|
showDeployInfo: true,
|
|
deploymentData: reducedDeploymentData,
|
|
graphHeight: 300,
|
|
graphWidth: 440,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(
|
|
component.$el.querySelectorAll('.deploy-info-text'),
|
|
).toContainText('Deployed');
|
|
|
|
expect(
|
|
component.$el.querySelectorAll('.deploy-info-text'),
|
|
).toContainText('Wed, May 31');
|
|
|
|
expect(
|
|
component.$el.querySelectorAll('.deploy-info-text'),
|
|
).toContainText(component.refText(reducedDeploymentData[0]));
|
|
});
|
|
|
|
it('contains a link to the commit contents', () => {
|
|
reducedDeploymentData[0].showDeploymentFlag = true;
|
|
const component = createComponent({
|
|
showDeployInfo: true,
|
|
deploymentData: reducedDeploymentData,
|
|
graphHeight: 300,
|
|
graphWidth: 440,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(
|
|
component.$el.querySelectorAll('.deploy-info-text-link')[0].parentElement.getAttribute('xlink:href'),
|
|
).not.toEqual('');
|
|
});
|
|
|
|
it('should contain a hidden gradient', () => {
|
|
const component = createComponent({
|
|
showDeployInfo: true,
|
|
deploymentData: reducedDeploymentData,
|
|
graphHeight: 300,
|
|
graphWidth: 440,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(component.$el.querySelector('#shadow-gradient')).not.toBeNull();
|
|
});
|
|
|
|
describe('Computed props', () => {
|
|
it('calculatedHeight', () => {
|
|
const component = createComponent({
|
|
showDeployInfo: true,
|
|
deploymentData: reducedDeploymentData,
|
|
graphHeight: 300,
|
|
graphWidth: 440,
|
|
graphHeightOffset: 120,
|
|
});
|
|
|
|
expect(component.calculatedHeight).toEqual(180);
|
|
});
|
|
});
|
|
});
|
|
});
|