datasource_srv.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {
  2. DataSourceApi,
  3. DataQueryRequest,
  4. DataQueryResponse,
  5. DataSourceInstanceSettings,
  6. DataSourcePluginMeta,
  7. } from '@grafana/ui';
  8. export class DatasourceSrvMock {
  9. constructor(private defaultDS: DataSourceApi, private datasources: { [name: string]: DataSourceApi }) {
  10. //
  11. }
  12. get(name?: string): Promise<DataSourceApi> {
  13. if (!name) {
  14. return Promise.resolve(this.defaultDS);
  15. }
  16. const ds = this.datasources[name];
  17. if (ds) {
  18. return Promise.resolve(ds);
  19. }
  20. return Promise.reject('Unknown Datasource: ' + name);
  21. }
  22. }
  23. export class MockDataSourceApi extends DataSourceApi {
  24. result: DataQueryResponse = { data: [] };
  25. queryResolver: Promise<DataQueryResponse>;
  26. constructor(name?: string, result?: DataQueryResponse) {
  27. super({ name: name ? name : 'MockDataSourceApi' } as DataSourceInstanceSettings);
  28. if (result) {
  29. this.result = result;
  30. }
  31. this.meta = {} as DataSourcePluginMeta;
  32. }
  33. query(request: DataQueryRequest): Promise<DataQueryResponse> {
  34. if (this.queryResolver) {
  35. return this.queryResolver;
  36. }
  37. return Promise.resolve(this.result);
  38. }
  39. testDatasource() {
  40. return Promise.resolve();
  41. }
  42. }