mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Karma to Jest: value_select_dropdown (#12435)
* Begin Karma 2 Jest: value_select_dropdown * Add return for Promise * Remove Karma test
This commit is contained in:
committed by
Torkel Ödegaard
parent
3056d9a80e
commit
443ff5deb4
@@ -93,7 +93,7 @@ export class ValueSelectDropdownCtrl {
|
|||||||
tagValuesPromise = this.$q.when(tag.values);
|
tagValuesPromise = this.$q.when(tag.values);
|
||||||
}
|
}
|
||||||
|
|
||||||
tagValuesPromise.then(values => {
|
return tagValuesPromise.then(values => {
|
||||||
tag.values = values;
|
tag.values = values;
|
||||||
tag.valuesText = values.join(' + ');
|
tag.valuesText = values.join(' + ');
|
||||||
_.each(this.options, option => {
|
_.each(this.options, option => {
|
||||||
@@ -132,7 +132,7 @@ export class ValueSelectDropdownCtrl {
|
|||||||
this.highlightIndex = (this.highlightIndex + direction) % this.search.options.length;
|
this.highlightIndex = (this.highlightIndex + direction) % this.search.options.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
selectValue(option, event, commitChange, excludeOthers) {
|
selectValue(option, event, commitChange?, excludeOthers?) {
|
||||||
if (!option) {
|
if (!option) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
159
public/app/core/specs/value_select_dropdown.jest.ts
Normal file
159
public/app/core/specs/value_select_dropdown.jest.ts
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
import 'app/core/directives/value_select_dropdown';
|
||||||
|
import { ValueSelectDropdownCtrl } from '../directives/value_select_dropdown';
|
||||||
|
import q from 'q';
|
||||||
|
|
||||||
|
describe('SelectDropdownCtrl', () => {
|
||||||
|
let tagValuesMap: any = {};
|
||||||
|
|
||||||
|
ValueSelectDropdownCtrl.prototype.onUpdated = jest.fn();
|
||||||
|
let ctrl;
|
||||||
|
|
||||||
|
describe('Given simple variable', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctrl = new ValueSelectDropdownCtrl(q);
|
||||||
|
ctrl.variable = {
|
||||||
|
current: { text: 'hej', value: 'hej' },
|
||||||
|
getValuesForTag: key => {
|
||||||
|
return Promise.resolve(tagValuesMap[key]);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
ctrl.init();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should init labelText and linkText', () => {
|
||||||
|
expect(ctrl.linkText).toBe('hej');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Given variable with tags and dropdown is opened', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctrl = new ValueSelectDropdownCtrl(q);
|
||||||
|
ctrl.variable = {
|
||||||
|
current: { text: 'server-1', value: 'server-1' },
|
||||||
|
options: [
|
||||||
|
{ text: 'server-1', value: 'server-1', selected: true },
|
||||||
|
{ text: 'server-2', value: 'server-2' },
|
||||||
|
{ text: 'server-3', value: 'server-3' },
|
||||||
|
],
|
||||||
|
tags: ['key1', 'key2', 'key3'],
|
||||||
|
getValuesForTag: key => {
|
||||||
|
return Promise.resolve(tagValuesMap[key]);
|
||||||
|
},
|
||||||
|
multi: true,
|
||||||
|
};
|
||||||
|
tagValuesMap.key1 = ['server-1', 'server-3'];
|
||||||
|
tagValuesMap.key2 = ['server-2', 'server-3'];
|
||||||
|
tagValuesMap.key3 = ['server-1', 'server-2', 'server-3'];
|
||||||
|
ctrl.init();
|
||||||
|
ctrl.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init tags model', () => {
|
||||||
|
expect(ctrl.tags.length).toBe(3);
|
||||||
|
expect(ctrl.tags[0].text).toBe('key1');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init options model', () => {
|
||||||
|
expect(ctrl.options.length).toBe(3);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init selected values array', () => {
|
||||||
|
expect(ctrl.selectedValues.length).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should set linkText', () => {
|
||||||
|
expect(ctrl.linkText).toBe('server-1');
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('after adititional value is selected', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctrl.selectValue(ctrl.options[2], {});
|
||||||
|
ctrl.commitChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should update link text', () => {
|
||||||
|
expect(ctrl.linkText).toBe('server-1 + server-3');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('When tag is selected', () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await ctrl.selectTag(ctrl.tags[0]);
|
||||||
|
ctrl.commitChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should select tag', () => {
|
||||||
|
expect(ctrl.selectedTags.length).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should select values', () => {
|
||||||
|
expect(ctrl.options[0].selected).toBe(true);
|
||||||
|
expect(ctrl.options[2].selected).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('link text should not include tag values', () => {
|
||||||
|
expect(ctrl.linkText).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('and then dropdown is opened and closed without changes', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctrl.show();
|
||||||
|
ctrl.commitChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should still have selected tag', () => {
|
||||||
|
expect(ctrl.selectedTags.length).toBe(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('and then unselected', () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await ctrl.selectTag(ctrl.tags[0]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should deselect tag', () => {
|
||||||
|
expect(ctrl.selectedTags.length).toBe(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('and then value is unselected', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctrl.selectValue(ctrl.options[0], {});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should deselect tag', () => {
|
||||||
|
expect(ctrl.selectedTags.length).toBe(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Given variable with selected tags', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ctrl = new ValueSelectDropdownCtrl(q);
|
||||||
|
ctrl.variable = {
|
||||||
|
current: {
|
||||||
|
text: 'server-1',
|
||||||
|
value: 'server-1',
|
||||||
|
tags: [{ text: 'key1', selected: true }],
|
||||||
|
},
|
||||||
|
options: [
|
||||||
|
{ text: 'server-1', value: 'server-1' },
|
||||||
|
{ text: 'server-2', value: 'server-2' },
|
||||||
|
{ text: 'server-3', value: 'server-3' },
|
||||||
|
],
|
||||||
|
tags: ['key1', 'key2', 'key3'],
|
||||||
|
getValuesForTag: key => {
|
||||||
|
return Promise.resolve(tagValuesMap[key]);
|
||||||
|
},
|
||||||
|
multi: true,
|
||||||
|
};
|
||||||
|
ctrl.init();
|
||||||
|
ctrl.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should set tag as selected', () => {
|
||||||
|
expect(ctrl.tags[0].selected).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,171 +0,0 @@
|
|||||||
import { describe, beforeEach, it, expect, angularMocks, sinon } from 'test/lib/common';
|
|
||||||
import 'app/core/directives/value_select_dropdown';
|
|
||||||
|
|
||||||
describe('SelectDropdownCtrl', function() {
|
|
||||||
var scope;
|
|
||||||
var ctrl;
|
|
||||||
var tagValuesMap: any = {};
|
|
||||||
var rootScope;
|
|
||||||
var q;
|
|
||||||
|
|
||||||
beforeEach(angularMocks.module('grafana.core'));
|
|
||||||
beforeEach(
|
|
||||||
angularMocks.inject(function($controller, $rootScope, $q, $httpBackend) {
|
|
||||||
rootScope = $rootScope;
|
|
||||||
q = $q;
|
|
||||||
scope = $rootScope.$new();
|
|
||||||
ctrl = $controller('ValueSelectDropdownCtrl', { $scope: scope });
|
|
||||||
ctrl.onUpdated = sinon.spy();
|
|
||||||
$httpBackend.when('GET', /\.html$/).respond('');
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
describe('Given simple variable', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
ctrl.variable = {
|
|
||||||
current: { text: 'hej', value: 'hej' },
|
|
||||||
getValuesForTag: function(key) {
|
|
||||||
return q.when(tagValuesMap[key]);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
ctrl.init();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Should init labelText and linkText', function() {
|
|
||||||
expect(ctrl.linkText).to.be('hej');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Given variable with tags and dropdown is opened', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
ctrl.variable = {
|
|
||||||
current: { text: 'server-1', value: 'server-1' },
|
|
||||||
options: [
|
|
||||||
{ text: 'server-1', value: 'server-1', selected: true },
|
|
||||||
{ text: 'server-2', value: 'server-2' },
|
|
||||||
{ text: 'server-3', value: 'server-3' },
|
|
||||||
],
|
|
||||||
tags: ['key1', 'key2', 'key3'],
|
|
||||||
getValuesForTag: function(key) {
|
|
||||||
return q.when(tagValuesMap[key]);
|
|
||||||
},
|
|
||||||
multi: true,
|
|
||||||
};
|
|
||||||
tagValuesMap.key1 = ['server-1', 'server-3'];
|
|
||||||
tagValuesMap.key2 = ['server-2', 'server-3'];
|
|
||||||
tagValuesMap.key3 = ['server-1', 'server-2', 'server-3'];
|
|
||||||
ctrl.init();
|
|
||||||
ctrl.show();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should init tags model', function() {
|
|
||||||
expect(ctrl.tags.length).to.be(3);
|
|
||||||
expect(ctrl.tags[0].text).to.be('key1');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should init options model', function() {
|
|
||||||
expect(ctrl.options.length).to.be(3);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should init selected values array', function() {
|
|
||||||
expect(ctrl.selectedValues.length).to.be(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should set linkText', function() {
|
|
||||||
expect(ctrl.linkText).to.be('server-1');
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('after adititional value is selected', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
ctrl.selectValue(ctrl.options[2], {});
|
|
||||||
ctrl.commitChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should update link text', function() {
|
|
||||||
expect(ctrl.linkText).to.be('server-1 + server-3');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('When tag is selected', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
ctrl.selectTag(ctrl.tags[0]);
|
|
||||||
rootScope.$digest();
|
|
||||||
ctrl.commitChanges();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should select tag', function() {
|
|
||||||
expect(ctrl.selectedTags.length).to.be(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should select values', function() {
|
|
||||||
expect(ctrl.options[0].selected).to.be(true);
|
|
||||||
expect(ctrl.options[2].selected).to.be(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('link text should not include tag values', function() {
|
|
||||||
expect(ctrl.linkText).to.be('');
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('and then dropdown is opened and closed without changes', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
ctrl.show();
|
|
||||||
ctrl.commitChanges();
|
|
||||||
rootScope.$digest();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should still have selected tag', function() {
|
|
||||||
expect(ctrl.selectedTags.length).to.be(1);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('and then unselected', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
ctrl.selectTag(ctrl.tags[0]);
|
|
||||||
rootScope.$digest();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should deselect tag', function() {
|
|
||||||
expect(ctrl.selectedTags.length).to.be(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('and then value is unselected', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
ctrl.selectValue(ctrl.options[0], {});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should deselect tag', function() {
|
|
||||||
expect(ctrl.selectedTags.length).to.be(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Given variable with selected tags', function() {
|
|
||||||
beforeEach(function() {
|
|
||||||
ctrl.variable = {
|
|
||||||
current: {
|
|
||||||
text: 'server-1',
|
|
||||||
value: 'server-1',
|
|
||||||
tags: [{ text: 'key1', selected: true }],
|
|
||||||
},
|
|
||||||
options: [
|
|
||||||
{ text: 'server-1', value: 'server-1' },
|
|
||||||
{ text: 'server-2', value: 'server-2' },
|
|
||||||
{ text: 'server-3', value: 'server-3' },
|
|
||||||
],
|
|
||||||
tags: ['key1', 'key2', 'key3'],
|
|
||||||
getValuesForTag: function(key) {
|
|
||||||
return q.when(tagValuesMap[key]);
|
|
||||||
},
|
|
||||||
multi: true,
|
|
||||||
};
|
|
||||||
ctrl.init();
|
|
||||||
ctrl.show();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should set tag as selected', function() {
|
|
||||||
expect(ctrl.tags[0].selected).to.be(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user