123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- import { FieldType, toDataFrame } from '@grafana/data';
- import { getAnnotationsFromData } from './standardAnnotationSupport';
- describe('DataFrame to annotations', () => {
- test('simple conversion', async () => {
- const frame = toDataFrame({
- fields: [
- { type: FieldType.time, values: [1, 2, 3, 4, 5] },
- { name: 'first string field', values: ['t1', 't2', 't3', null, undefined] },
- { name: 'tags', values: ['aaa,bbb', 'bbb,ccc', 'zyz', null, undefined] },
- ],
- });
- await expect(getAnnotationsFromData([frame])).toEmitValues([
- [
- {
- color: 'red',
- tags: ['aaa', 'bbb'],
- text: 't1',
- time: 1,
- type: 'default',
- },
- {
- color: 'red',
- tags: ['bbb', 'ccc'],
- text: 't2',
- time: 2,
- type: 'default',
- },
- {
- color: 'red',
- tags: ['zyz'],
- text: 't3',
- time: 3,
- type: 'default',
- },
- {
- color: 'red',
- time: 4,
- type: 'default',
- },
- {
- color: 'red',
- time: 5,
- type: 'default',
- },
- ],
- ]);
- });
- test('explicit mappings', async () => {
- const frame = toDataFrame({
- fields: [
- { name: 'time1', values: [111, 222, 333] },
- { name: 'time2', values: [100, 200, 300] },
- { name: 'aaaaa', values: ['a1', 'a2', 'a3'] },
- { name: 'bbbbb', values: ['b1', 'b2', 'b3'] },
- ],
- });
- const observable = getAnnotationsFromData([frame], {
- text: { value: 'bbbbb' },
- time: { value: 'time2' },
- timeEnd: { value: 'time1' },
- title: { value: 'aaaaa' },
- });
- await expect(observable).toEmitValues([
- [
- {
- color: 'red',
- text: 'b1',
- time: 100,
- timeEnd: 111,
- title: 'a1',
- type: 'default',
- },
- {
- color: 'red',
- text: 'b2',
- time: 200,
- timeEnd: 222,
- title: 'a2',
- type: 'default',
- },
- {
- color: 'red',
- text: 'b3',
- time: 300,
- timeEnd: 333,
- title: 'a3',
- type: 'default',
- },
- ],
- ]);
- });
- it('all valid key names should be included in the output result', async () => {
- const frame = toDataFrame({
- fields: [
- { name: 'time', values: [100] },
- { name: 'timeEnd', values: [200] },
- { name: 'title', values: ['title'] },
- { name: 'text', values: ['text'] },
- { name: 'tags', values: ['t1,t2,t3'] },
- { name: 'id', values: [1] },
- { name: 'userId', values: ['Admin'] },
- { name: 'login', values: ['admin'] },
- { name: 'email', values: ['admin@unknown.us'] },
- { name: 'prevState', values: ['normal'] },
- { name: 'newState', values: ['alerting'] },
- { name: 'data', values: [{ text: 'a', value: 'A' }] },
- { name: 'panelId', values: [4] },
- { name: 'alertId', values: [0] },
- ],
- });
- const observable = getAnnotationsFromData([frame]);
- await expect(observable).toEmitValues([
- [
- {
- color: 'red',
- data: { text: 'a', value: 'A' },
- email: 'admin@unknown.us',
- id: 1,
- login: 'admin',
- newState: 'alerting',
- panelId: 4,
- prevState: 'normal',
- tags: ['t1', 't2', 't3'],
- text: 'text',
- time: 100,
- timeEnd: 200,
- title: 'title',
- type: 'default',
- userId: 'Admin',
- alertId: 0,
- },
- ],
- ]);
- });
- it('key names that are not valid should be excluded in the output result', async () => {
- const frame = toDataFrame({
- fields: [
- { name: 'time', values: [100] },
- { name: 'text', values: ['text'] },
- { name: 'someData', values: [{ value: 'bar' }] },
- { name: 'panelSource', values: ['100'] },
- { name: 'timeStart', values: [100] },
- ],
- });
- const observable = getAnnotationsFromData([frame]);
- await expect(observable).toEmitValues([[{ color: 'red', text: 'text', time: 100, type: 'default' }]]);
- });
- });
|