import { describe, beforeEach, it, expect, angularMocks } from "test/lib/common"; import config from "app/core/config"; import "app/features/plugins/datasource_srv"; describe("datasource_srv", function() { var _datasourceSrv; var metricSources; var templateSrv = {}; beforeEach(angularMocks.module("grafana.core")); beforeEach( angularMocks.module(function($provide) { $provide.value("templateSrv", templateSrv); }) ); beforeEach(angularMocks.module("grafana.services")); beforeEach( angularMocks.inject(function(datasourceSrv) { _datasourceSrv = datasourceSrv; }) ); describe("when loading metric sources", function() { var unsortedDatasources = { mmm: { type: "test-db", meta: { metrics: { m: 1 } } }, "--Grafana--": { type: "grafana", meta: { builtIn: true, metrics: { m: 1 }, id: "grafana" } }, "--Mixed--": { type: "test-db", meta: { builtIn: true, metrics: { m: 1 }, id: "mixed" } }, ZZZ: { type: "test-db", meta: { metrics: { m: 1 } } }, aaa: { type: "test-db", meta: { metrics: { m: 1 } } }, BBB: { type: "test-db", meta: { metrics: { m: 1 } } } }; beforeEach(function() { config.datasources = unsortedDatasources; metricSources = _datasourceSrv.getMetricSources({ skipVariables: true }); }); it("should return a list of sources sorted case insensitively with builtin sources last", function() { expect(metricSources[0].name).to.be("aaa"); expect(metricSources[1].name).to.be("BBB"); expect(metricSources[2].name).to.be("mmm"); expect(metricSources[3].name).to.be("ZZZ"); expect(metricSources[4].name).to.be("--Grafana--"); expect(metricSources[5].name).to.be("--Mixed--"); }); }); });