ResultProcessor.test.ts 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. // jest.mock('@grafana/data/src/utils/moment_wrapper', () => ({
  2. // dateTime: (ts: any) => {
  3. // return {
  4. // valueOf: () => ts,
  5. // fromNow: () => 'fromNow() jest mocked',
  6. // format: (fmt: string) => 'format() jest mocked',
  7. // };
  8. // },
  9. // toUtc: (ts: any) => {
  10. // return {
  11. // format: (fmt: string) => 'format() jest mocked',
  12. // };
  13. // },
  14. // }));
  15. //
  16. // import { ResultProcessor } from './ResultProcessor';
  17. // import { ExploreItemState, ExploreMode } from 'app/types/explore';
  18. // import TableModel from 'app/core/table_model';
  19. // import { TimeSeries, LogRowModel, LogsMetaItem, GraphSeriesXY } from '@grafana/data';
  20. //
  21. // const testContext = (options: any = {}) => {
  22. // const response = [
  23. // {
  24. // target: 'A-series',
  25. // alias: 'A-series',
  26. // datapoints: [[39.91264531864214, 1559038518831], [40.35179822906545, 1559038519831]],
  27. // refId: 'A',
  28. // },
  29. // {
  30. // columns: [
  31. // {
  32. // text: 'Time',
  33. // },
  34. // {
  35. // text: 'Message',
  36. // },
  37. // {
  38. // text: 'Description',
  39. // },
  40. // {
  41. // text: 'Value',
  42. // },
  43. // ],
  44. // rows: [
  45. // [1559038518831, 'This is a message', 'Description', 23.1],
  46. // [1559038519831, 'This is a message', 'Description', 23.1],
  47. // ],
  48. // refId: 'B',
  49. // },
  50. // ];
  51. // const defaultOptions = {
  52. // mode: ExploreMode.Metrics,
  53. // replacePreviousResults: true,
  54. // result: { data: response },
  55. // graphResult: [] as TimeSeries[],
  56. // tableResult: new TableModel(),
  57. // logsResult: { hasUniqueLabels: false, rows: [] as LogRowModel[] },
  58. // };
  59. // const combinedOptions = { ...defaultOptions, ...options };
  60. // const state = ({
  61. // mode: combinedOptions.mode,
  62. // graphResult: combinedOptions.graphResult,
  63. // tableResult: combinedOptions.tableResult,
  64. // logsResult: combinedOptions.logsResult,
  65. // queryIntervals: { intervalMs: 10 },
  66. // } as any) as ExploreItemState;
  67. // const resultProcessor = new ResultProcessor(state, combinedOptions.replacePreviousResults, combinedOptions.result);
  68. //
  69. // return {
  70. // result: combinedOptions.result,
  71. // resultProcessor,
  72. // };
  73. // };
  74. //
  75. // describe('ResultProcessor', () => {
  76. // describe('constructed without result', () => {
  77. // describe('when calling getRawData', () => {
  78. // it('then it should return an empty array', () => {
  79. // const { resultProcessor } = testContext({ result: null });
  80. // const theResult = resultProcessor.getRawData();
  81. //
  82. // expect(theResult).toEqual([]);
  83. // });
  84. // });
  85. //
  86. // describe('when calling getGraphResult', () => {
  87. // it('then it should return an empty array', () => {
  88. // const { resultProcessor } = testContext({ result: null });
  89. // const theResult = resultProcessor.getGraphResult();
  90. //
  91. // expect(theResult).toEqual([]);
  92. // });
  93. // });
  94. //
  95. // describe('when calling getTableResult', () => {
  96. // it('then it should return an empty TableModel', () => {
  97. // const { resultProcessor } = testContext({ result: null });
  98. // const theResult = resultProcessor.getTableResult();
  99. //
  100. // expect(theResult).toEqual(new TableModel());
  101. // });
  102. // });
  103. //
  104. // describe('when calling getLogsResult', () => {
  105. // it('then it should return null', () => {
  106. // const { resultProcessor } = testContext({ result: null });
  107. // const theResult = resultProcessor.getLogsResult();
  108. //
  109. // expect(theResult).toBeNull();
  110. // });
  111. // });
  112. // });
  113. //
  114. // describe('constructed with a result that is a DataQueryResponse', () => {
  115. // describe('when calling getRawData', () => {
  116. // it('then it should return result.data', () => {
  117. // const { result, resultProcessor } = testContext();
  118. // const theResult = resultProcessor.getRawData();
  119. //
  120. // expect(theResult).toEqual(result.data);
  121. // });
  122. // });
  123. //
  124. // describe('when calling getGraphResult', () => {
  125. // it('then it should return correct graph result', () => {
  126. // const { resultProcessor } = testContext();
  127. // const theResult = resultProcessor.getGraphResult();
  128. //
  129. // expect(theResult).toEqual([
  130. // {
  131. // label: 'A-series',
  132. // color: '#7EB26D',
  133. // data: [[1559038518831, 39.91264531864214], [1559038519831, 40.35179822906545]],
  134. // info: undefined,
  135. // isVisible: true,
  136. // yAxis: {
  137. // index: 1,
  138. // },
  139. // },
  140. // ]);
  141. // });
  142. // });
  143. //
  144. // describe('when calling getTableResult', () => {
  145. // it('then it should return correct table result', () => {
  146. // const { resultProcessor } = testContext();
  147. // const theResult = resultProcessor.getTableResult();
  148. //
  149. // expect(theResult).toEqual({
  150. // columnMap: {},
  151. // columns: [{ text: 'Time' }, { text: 'Message' }, { text: 'Description' }, { text: 'Value' }],
  152. // rows: [
  153. // [1559038518831, 'This is a message', 'Description', 23.1],
  154. // [1559038519831, 'This is a message', 'Description', 23.1],
  155. // ],
  156. // type: 'table',
  157. // });
  158. // });
  159. // });
  160. //
  161. // describe('when calling getLogsResult', () => {
  162. // it('then it should return correct logs result', () => {
  163. // const { resultProcessor } = testContext({ mode: ExploreMode.Logs, observerResponse: null });
  164. // const theResult = resultProcessor.getLogsResult();
  165. //
  166. // console.log(JSON.stringify(theResult));
  167. //
  168. // expect(theResult).toEqual({
  169. // hasUniqueLabels: false,
  170. // meta: [],
  171. // rows: [
  172. // {
  173. // entry: 'This is a message',
  174. // hasAnsi: false,
  175. // labels: undefined,
  176. // logLevel: 'unknown',
  177. // raw: 'This is a message',
  178. // searchWords: [] as string[],
  179. // timeEpochMs: 1559038519831,
  180. // timeFromNow: 'fromNow() jest mocked',
  181. // timeLocal: 'format() jest mocked',
  182. // timeUtc: 'format() jest mocked',
  183. // timestamp: 1559038519831,
  184. // uniqueLabels: {},
  185. // },
  186. // {
  187. // entry: 'This is a message',
  188. // hasAnsi: false,
  189. // labels: undefined,
  190. // logLevel: 'unknown',
  191. // raw: 'This is a message',
  192. // searchWords: [] as string[],
  193. // timeEpochMs: 1559038518831,
  194. // timeFromNow: 'fromNow() jest mocked',
  195. // timeLocal: 'format() jest mocked',
  196. // timeUtc: 'format() jest mocked',
  197. // timestamp: 1559038518831,
  198. // uniqueLabels: {},
  199. // },
  200. // ],
  201. // series: [
  202. // {
  203. // label: 'A-series',
  204. // color: '#7EB26D',
  205. // data: [[1559038518831, 39.91264531864214], [1559038519831, 40.35179822906545]],
  206. // info: undefined,
  207. // isVisible: true,
  208. // yAxis: {
  209. // index: 1,
  210. // },
  211. // },
  212. // ],
  213. // });
  214. // });
  215. // });
  216. // });
  217. //
  218. // describe('constructed with result that is a DataQueryResponse and merging with previous results', () => {
  219. // describe('when calling getRawData', () => {
  220. // it('then it should return result.data', () => {
  221. // const { result, resultProcessor } = testContext();
  222. // const theResult = resultProcessor.getRawData();
  223. //
  224. // expect(theResult).toEqual(result.data);
  225. // });
  226. // });
  227. //
  228. // describe('when calling getGraphResult', () => {
  229. // it('then it should return correct graph result', () => {
  230. // const { resultProcessor } = testContext({
  231. // replacePreviousResults: false,
  232. // graphResult: [
  233. // {
  234. // label: 'A-series',
  235. // color: '#7EB26D',
  236. // data: [[1558038518831, 19.91264531864214], [1558038518831, 20.35179822906545]],
  237. // info: undefined,
  238. // isVisible: true,
  239. // yAxis: {
  240. // index: 1,
  241. // },
  242. // },
  243. // ],
  244. // });
  245. // const theResult = resultProcessor.getGraphResult();
  246. //
  247. // expect(theResult).toEqual([
  248. // {
  249. // label: 'A-series',
  250. // color: '#7EB26D',
  251. // data: [
  252. // [1558038518831, 19.91264531864214],
  253. // [1558038518831, 20.35179822906545],
  254. // [1559038518831, 39.91264531864214],
  255. // [1559038519831, 40.35179822906545],
  256. // ],
  257. // info: undefined,
  258. // isVisible: true,
  259. // yAxis: {
  260. // index: 1,
  261. // },
  262. // },
  263. // ]);
  264. // });
  265. // });
  266. //
  267. // describe('when calling getTableResult', () => {
  268. // it('then it should return correct table result', () => {
  269. // const { resultProcessor } = testContext({
  270. // replacePreviousResults: false,
  271. // tableResult: {
  272. // columnMap: {},
  273. // columns: [{ text: 'Time' }, { text: 'Message' }, { text: 'Description' }, { text: 'Value' }],
  274. // rows: [
  275. // [1558038518831, 'This is a previous message 1', 'Previous Description 1', 21.1],
  276. // [1558038519831, 'This is a previous message 2', 'Previous Description 2', 22.1],
  277. // ],
  278. // type: 'table',
  279. // },
  280. // });
  281. // const theResult = resultProcessor.getTableResult();
  282. //
  283. // expect(theResult).toEqual({
  284. // columnMap: {},
  285. // columns: [{ text: 'Time' }, { text: 'Message' }, { text: 'Description' }, { text: 'Value' }],
  286. // rows: [
  287. // [1558038518831, 'This is a previous message 1', 'Previous Description 1', 21.1],
  288. // [1558038519831, 'This is a previous message 2', 'Previous Description 2', 22.1],
  289. // [1559038518831, 'This is a message', 'Description', 23.1],
  290. // [1559038519831, 'This is a message', 'Description', 23.1],
  291. // ],
  292. // type: 'table',
  293. // });
  294. // });
  295. // });
  296. //
  297. // describe('when calling getLogsResult', () => {
  298. // it('then it should return correct logs result', () => {
  299. // const { resultProcessor } = testContext({
  300. // mode: ExploreMode.Logs,
  301. // replacePreviousResults: false,
  302. // logsResult: {
  303. // hasUniqueLabels: false,
  304. // meta: [],
  305. // rows: [
  306. // {
  307. // entry: 'This is a previous message 1',
  308. // fresh: true,
  309. // hasAnsi: false,
  310. // labels: { cluster: 'some-cluster' },
  311. // logLevel: 'unknown',
  312. // raw: 'This is a previous message 1',
  313. // searchWords: [] as string[],
  314. // timeEpochMs: 1558038519831,
  315. // timeFromNow: 'fromNow() jest mocked',
  316. // timeLocal: 'format() jest mocked',
  317. // timeUtc: 'format() jest mocked',
  318. // timestamp: 1558038519831,
  319. // uniqueLabels: {},
  320. // },
  321. // {
  322. // entry: 'This is a previous message 2',
  323. // fresh: true,
  324. // hasAnsi: false,
  325. // labels: { cluster: 'some-cluster' },
  326. // logLevel: 'unknown',
  327. // raw: 'This is a previous message 2',
  328. // searchWords: [] as string[],
  329. // timeEpochMs: 1558038518831,
  330. // timeFromNow: 'fromNow() jest mocked',
  331. // timeLocal: 'format() jest mocked',
  332. // timeUtc: 'format() jest mocked',
  333. // timestamp: 1558038518831,
  334. // uniqueLabels: {},
  335. // },
  336. // ],
  337. // series: [
  338. // {
  339. // label: 'A-series',
  340. // color: '#7EB26D',
  341. // data: [[1558038518831, 37.91264531864214], [1558038519831, 38.35179822906545]],
  342. // info: undefined,
  343. // isVisible: true,
  344. // yAxis: {
  345. // index: 1,
  346. // },
  347. // },
  348. // ],
  349. // },
  350. // });
  351. // const theResult = resultProcessor.getLogsResult();
  352. // const expected = {
  353. // hasUniqueLabels: false,
  354. // meta: [] as LogsMetaItem[],
  355. // rows: [
  356. // {
  357. // entry: 'This is a previous message 1',
  358. // fresh: false,
  359. // hasAnsi: false,
  360. // labels: { cluster: 'some-cluster' },
  361. // logLevel: 'unknown',
  362. // raw: 'This is a previous message 1',
  363. // searchWords: [] as string[],
  364. // timeEpochMs: 1558038519831,
  365. // timeFromNow: 'fromNow() jest mocked',
  366. // timeLocal: 'format() jest mocked',
  367. // timeUtc: 'format() jest mocked',
  368. // timestamp: 1558038519831,
  369. // uniqueLabels: {},
  370. // },
  371. // {
  372. // entry: 'This is a previous message 2',
  373. // fresh: false,
  374. // hasAnsi: false,
  375. // labels: { cluster: 'some-cluster' },
  376. // logLevel: 'unknown',
  377. // raw: 'This is a previous message 2',
  378. // searchWords: [] as string[],
  379. // timeEpochMs: 1558038518831,
  380. // timeFromNow: 'fromNow() jest mocked',
  381. // timeLocal: 'format() jest mocked',
  382. // timeUtc: 'format() jest mocked',
  383. // timestamp: 1558038518831,
  384. // uniqueLabels: {},
  385. // },
  386. // {
  387. // entry: 'This is a message',
  388. // fresh: true,
  389. // hasAnsi: false,
  390. // labels: undefined,
  391. // logLevel: 'unknown',
  392. // raw: 'This is a message',
  393. // searchWords: [] as string[],
  394. // timeEpochMs: 1559038519831,
  395. // timeFromNow: 'fromNow() jest mocked',
  396. // timeLocal: 'format() jest mocked',
  397. // timeUtc: 'format() jest mocked',
  398. // timestamp: 1559038519831,
  399. // uniqueLabels: {},
  400. // },
  401. // {
  402. // entry: 'This is a message',
  403. // fresh: true,
  404. // hasAnsi: false,
  405. // labels: undefined,
  406. // logLevel: 'unknown',
  407. // raw: 'This is a message',
  408. // searchWords: [] as string[],
  409. // timeEpochMs: 1559038518831,
  410. // timeFromNow: 'fromNow() jest mocked',
  411. // timeLocal: 'format() jest mocked',
  412. // timeUtc: 'format() jest mocked',
  413. // timestamp: 1559038518831,
  414. // uniqueLabels: {},
  415. // },
  416. // ],
  417. // series: [
  418. // {
  419. // label: 'A-series',
  420. // color: '#7EB26D',
  421. // data: [
  422. // [1558038518831, 37.91264531864214],
  423. // [1558038519831, 38.35179822906545],
  424. // [1559038518831, 39.91264531864214],
  425. // [1559038519831, 40.35179822906545],
  426. // ],
  427. // info: undefined,
  428. // isVisible: true,
  429. // yAxis: {
  430. // index: 1,
  431. // },
  432. // } as GraphSeriesXY,
  433. // ],
  434. // };
  435. //
  436. // expect(theResult).toEqual(expected);
  437. // });
  438. // });
  439. // });
  440. // });