summaryrefslogtreecommitdiff
path: root/spec/javascripts/performance_bar/services/performance_bar_service_spec.js
blob: cfec4b779e4d337b8bd749b438be84ce0b286040 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import PerformanceBarService from '~/performance_bar/services/performance_bar_service';

describe('PerformanceBarService', () => {
  describe('callbackParams', () => {
    describe('fireCallback', () => {
      function fireCallback(response, peekUrl) {
        return PerformanceBarService.callbackParams(response, peekUrl)[0];
      }

      it('returns false when the request URL is the peek URL', () => {
        expect(
          fireCallback({ headers: { 'x-request-id': '123' }, url: '/peek' }, '/peek'),
        ).toBeFalsy();
      });

      it('returns false when there is no request ID', () => {
        expect(fireCallback({ headers: {}, url: '/request' }, '/peek')).toBeFalsy();
      });

      it('returns false when the request is an API request', () => {
        expect(
          fireCallback({ headers: { 'x-request-id': '123' }, url: '/api/' }, '/peek'),
        ).toBeFalsy();
      });

      it('returns false when the response is from the cache', () => {
        expect(
          fireCallback(
            { headers: { 'x-request-id': '123', 'x-gitlab-from-cache': 'true' }, url: '/request' },
            '/peek',
          ),
        ).toBeFalsy();
      });

      it('returns true when all conditions are met', () => {
        expect(
          fireCallback({ headers: { 'x-request-id': '123' }, url: '/request' }, '/peek'),
        ).toBeTruthy();
      });
    });

    describe('requestId', () => {
      function requestId(response, peekUrl) {
        return PerformanceBarService.callbackParams(response, peekUrl)[1];
      }

      it('gets the request ID from the headers', () => {
        expect(requestId({ headers: { 'x-request-id': '123' } }, '/peek')).toEqual('123');
      });
    });

    describe('requestUrl', () => {
      function requestUrl(response, peekUrl) {
        return PerformanceBarService.callbackParams(response, peekUrl)[2];
      }

      it('gets the request URL from the response object', () => {
        expect(requestUrl({ headers: {}, url: '/request' }, '/peek')).toEqual('/request');
      });

      it('gets the request URL from response.config if present', () => {
        expect(
          requestUrl({ headers: {}, config: { url: '/config-url' }, url: '/request' }, '/peek'),
        ).toEqual('/config-url');
      });
    });
  });
});