summaryrefslogtreecommitdiff
path: root/spec/javascripts/performance_bar/index_spec.js
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2018-07-16 21:33:49 +0100
committerFilipa Lacerda <filipa@gitlab.com>2018-07-16 21:33:49 +0100
commitcf9a0f2891e81b5142665c75ee9fd15ff7e55e69 (patch)
treeb1561d68e58de07098817e615fdd706015bbc476 /spec/javascripts/performance_bar/index_spec.js
parentcd1b20ae93738b61f0aa074460e2b62b03c1e938 (diff)
parent7f0431dd8550ac9d229d1383c03386c1634d015f (diff)
downloadgitlab-ce-cf9a0f2891e81b5142665c75ee9fd15ff7e55e69.tar.gz
[ci skip] Merge branch 'master' into 45318-FE-junit-tests
* master: (49 commits) Add changelog entry Fix `transform` typo Fix archived parameter for projects API Enable frozen string in apps/uploaders/*.rb Fix invalid link to GitLab.com architecture.md i18n: externalize strings from 'app/views/import' Remove Repository#lookup and unreachable rugged code refactor code based on feedback Trigger rails5 tests either by variable or ref name Fix link in help doc which was linking to old mono-repo, now in its own repo SubmoduleHelper - Project is not always available as an instance variable Allow Danger step to fail update webpack to v4.16 Backport logger changes from EE Add the CI Job trigger as the build trigger Remove flaky and redundant expectations use fileuploader dynamic path method in uploads manager and add spec fix typo in uploads manager add small comment to download method in uploads manager refactor uploads manager ...
Diffstat (limited to 'spec/javascripts/performance_bar/index_spec.js')
-rw-r--r--spec/javascripts/performance_bar/index_spec.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/spec/javascripts/performance_bar/index_spec.js b/spec/javascripts/performance_bar/index_spec.js
new file mode 100644
index 00000000000..1784bd64adb
--- /dev/null
+++ b/spec/javascripts/performance_bar/index_spec.js
@@ -0,0 +1,83 @@
+import axios from '~/lib/utils/axios_utils';
+import performanceBar from '~/performance_bar';
+import PerformanceBarService from '~/performance_bar/services/performance_bar_service';
+
+import MockAdapter from 'axios-mock-adapter';
+
+describe('performance bar wrapper', () => {
+ let mock;
+ let vm;
+
+ beforeEach(() => {
+ const peekWrapper = document.createElement('div');
+
+ peekWrapper.setAttribute('id', 'js-peek');
+ peekWrapper.setAttribute('data-env', 'development');
+ peekWrapper.setAttribute('data-request-id', '123');
+ peekWrapper.setAttribute('data-peek-url', '/-/peek/results');
+ peekWrapper.setAttribute('data-profile-url', '?lineprofiler=true');
+
+ document.body.appendChild(peekWrapper);
+
+ mock = new MockAdapter(axios);
+
+ mock.onGet('/-/peek/results').reply(
+ 200,
+ {
+ data: {
+ gc: {
+ invokes: 0,
+ invoke_time: '0.00',
+ use_size: 0,
+ total_size: 0,
+ total_object: 0,
+ gc_time: '0.00',
+ },
+ host: { hostname: 'web-01' },
+ },
+ },
+ {},
+ );
+
+ vm = performanceBar({ container: '#js-peek' });
+ });
+
+ afterEach(() => {
+ vm.$destroy();
+ mock.restore();
+ });
+
+ describe('loadRequestDetails', () => {
+ beforeEach(() => {
+ spyOn(vm.store, 'addRequest').and.callThrough();
+ });
+
+ it('does nothing if the request cannot be tracked', () => {
+ spyOn(vm.store, 'canTrackRequest').and.callFake(() => false);
+
+ vm.loadRequestDetails('123', 'https://gitlab.com/');
+
+ expect(vm.store.addRequest).not.toHaveBeenCalled();
+ });
+
+ it('adds the request immediately', () => {
+ vm.loadRequestDetails('123', 'https://gitlab.com/');
+
+ expect(vm.store.addRequest).toHaveBeenCalledWith(
+ '123',
+ 'https://gitlab.com/',
+ );
+ });
+
+ it('makes an HTTP request for the request details', () => {
+ spyOn(PerformanceBarService, 'fetchRequestDetails').and.callThrough();
+
+ vm.loadRequestDetails('456', 'https://gitlab.com/');
+
+ expect(PerformanceBarService.fetchRequestDetails).toHaveBeenCalledWith(
+ '/-/peek/results',
+ '456',
+ );
+ });
+ });
+});