datasource_srv.ts 1.1 KB

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