Преглед изворни кода

tests: migrated tests for link_srv to jest, #9666

Torkel Ödegaard пре 8 година
родитељ
комит
7f83460f42
2 измењених фајлова са 64 додато и 0 уклоњено
  1. 47 0
      public/app/features/panellinks/specs/link_srv.jest.ts
  2. 17 0
      public/test/mocks/angular.ts

+ 47 - 0
public/app/features/panellinks/specs/link_srv.jest.ts

@@ -0,0 +1,47 @@
+import { LinkSrv } from '../link_srv';
+import _ from 'lodash';
+
+jest.mock('angular', () => {
+  let AngularJSMock = require('test/mocks/angular');
+  return new AngularJSMock();
+});
+
+describe('linkSrv', function() {
+  var linkSrv;
+  var templateSrvMock = {};
+  var timeSrvMock = {};
+
+  beforeEach(() => {
+    linkSrv = new LinkSrv(templateSrvMock, timeSrvMock);
+  });
+
+  describe('when appending query strings', function() {
+    it('add ? to URL if not present', function() {
+      var url = linkSrv.appendToQueryString('http://example.com', 'foo=bar');
+      expect(url).toBe('http://example.com?foo=bar');
+    });
+
+    it('do not add & to URL if ? is present but query string is empty', function() {
+      var url = linkSrv.appendToQueryString('http://example.com?', 'foo=bar');
+      expect(url).toBe('http://example.com?foo=bar');
+    });
+
+    it('add & to URL if query string is present', function() {
+      var url = linkSrv.appendToQueryString('http://example.com?foo=bar', 'hello=world');
+      expect(url).toBe('http://example.com?foo=bar&hello=world');
+    });
+
+    it('do not change the URL if there is nothing to append', function() {
+      _.each(['', undefined, null], function(toAppend) {
+        var url1 = linkSrv.appendToQueryString('http://example.com', toAppend);
+        expect(url1).toBe('http://example.com');
+
+        var url2 = linkSrv.appendToQueryString('http://example.com?', toAppend);
+        expect(url2).toBe('http://example.com?');
+
+        var url3 = linkSrv.appendToQueryString('http://example.com?foo=bar', toAppend);
+        expect(url3).toBe('http://example.com?foo=bar');
+      });
+    });
+  });
+});

+ 17 - 0
public/test/mocks/angular.ts

@@ -0,0 +1,17 @@
+export default class AngularJSMock {
+  service: any;
+  controller: any;
+  directive: any;
+
+  constructor() {
+    this.service = jest.fn();
+    this.controller = jest.fn();
+    this.directive = jest.fn();
+  }
+
+  module() {
+    return this;
+  }
+}
+
+module.exports = AngularJSMock;