Parcourir la source

Merge branch 'develop' of github.com:grafana/grafana into develop

Torkel Ödegaard il y a 8 ans
Parent
commit
59ea19e03b

+ 11 - 2
public/app/core/components/org_switcher.ts

@@ -61,10 +61,19 @@ export class OrgSwitchCtrl {
   }
   }
 
 
   setUsingOrg(org) {
   setUsingOrg(org) {
-    this.backendSrv.post('/api/user/using/' + org.orgId).then(() => {
-      window.location.href = window.location.href;
+    return this.backendSrv.post('/api/user/using/' + org.orgId).then(() => {
+      const re = /orgId=\d+/gi;
+      this.setWindowLocationHref(this.getWindowLocationHref().replace(re, 'orgId=' + org.orgId));
     });
     });
   }
   }
+
+  getWindowLocationHref() {
+    return window.location.href;
+  }
+
+  setWindowLocationHref(href: string) {
+    window.location.href = href;
+  }
 }
 }
 
 
 export function orgSwitcher() {
 export function orgSwitcher() {

+ 38 - 0
public/app/core/specs/org_switcher.jest.ts

@@ -0,0 +1,38 @@
+import {OrgSwitchCtrl} from '../components/org_switcher';
+import q from 'q';
+
+jest.mock('app/core/services/context_srv', () => ({
+  contextSrv: {
+    user: {orgId: 1}
+  }
+}));
+
+describe('OrgSwitcher', () => {
+  describe('when switching org', () => {
+    let expectedHref;
+    let expectedUsingUrl;
+
+    beforeEach(() => {
+
+      const backendSrvStub: any = {
+        get: (url) => { return q.resolve([]); },
+        post: (url) => { expectedUsingUrl = url; return q.resolve({}); }
+      };
+
+      const orgSwitcherCtrl = new OrgSwitchCtrl(backendSrvStub);
+
+      orgSwitcherCtrl.getWindowLocationHref = () => 'http://localhost:3000?orgId=1';
+      orgSwitcherCtrl.setWindowLocationHref = (href) => expectedHref = href;
+
+      return orgSwitcherCtrl.setUsingOrg({orgId: 2});
+    });
+
+    it('should switch orgId in call to backend', () => {
+      expect(expectedUsingUrl).toBe('/api/user/using/2');
+    });
+
+    it('should switch orgId in url', () => {
+      expect(expectedHref).toBe('http://localhost:3000?orgId=2');
+    });
+  });
+});