summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke "Jared" Bennett <lbennett@gitlab.com>2017-05-10 20:41:06 +0100
committerLuke "Jared" Bennett <lbennett@gitlab.com>2017-05-10 20:41:06 +0100
commit4a4b586aa0cd1298d515fb172a7bd90ff3591970 (patch)
treeb27895128c1bb76cacc08102656130ca86f52de8
parent180ec7113e358a7f8388e1436dc0670a11ba68df (diff)
downloadgitlab-ce-4a4b586aa0cd1298d515fb172a7bd90ff3591970.tar.gz
Removed vue and vue-resource from poll_spec in an attempt to fix the transient failures relating to async timeout
-rw-r--r--spec/javascripts/lib/utils/poll_spec.js87
1 files changed, 29 insertions, 58 deletions
diff --git a/spec/javascripts/lib/utils/poll_spec.js b/spec/javascripts/lib/utils/poll_spec.js
index 918b6d32c43..bba7fc387ff 100644
--- a/spec/javascripts/lib/utils/poll_spec.js
+++ b/spec/javascripts/lib/utils/poll_spec.js
@@ -1,9 +1,5 @@
-import Vue from 'vue';
-import VueResource from 'vue-resource';
import Poll from '~/lib/utils/poll';
-Vue.use(VueResource);
-
const waitForAllCallsToFinish = (service, waitForCount, successCallback) => {
const timer = () => {
setTimeout(() => {
@@ -12,25 +8,20 @@ const waitForAllCallsToFinish = (service, waitForCount, successCallback) => {
} else {
timer();
}
- }, 5);
+ }, 0);
};
timer();
};
-class ServiceMock {
- constructor(endpoint) {
- this.service = Vue.resource(endpoint);
- }
-
- fetch() {
- return this.service.get();
- }
+function mockServiceCall(service, mockCall) {
+ service.fetch.calls.reset();
+ service.fetch.and.callFake(mockCall);
}
describe('Poll', () => {
+ const service = jasmine.createSpyObj('service', ['fetch']);
let callbacks;
- let service;
beforeEach(() => {
callbacks = {
@@ -38,19 +29,15 @@ describe('Poll', () => {
error: () => {},
};
- service = new ServiceMock('endpoint');
-
spyOn(callbacks, 'success');
spyOn(callbacks, 'error');
- spyOn(service, 'fetch').and.callThrough();
});
it('calls the success callback when no header for interval is provided', (done) => {
- const successInterceptor = (request, next) => {
- next(request.respondWith(JSON.stringify([]), { status: 200 }));
- };
-
- Vue.http.interceptors.push(successInterceptor);
+ mockServiceCall(
+ service,
+ () => Promise.resolve({ status: 200, headers: {} }),
+ );
new Poll({
resource: service,
@@ -63,18 +50,15 @@ describe('Poll', () => {
expect(callbacks.success).toHaveBeenCalled();
expect(callbacks.error).not.toHaveBeenCalled();
- Vue.http.interceptors = _.without(Vue.http.interceptors, successInterceptor);
-
done();
}, 0);
});
it('calls the error callback whe the http request returns an error', (done) => {
- const errorInterceptor = (request, next) => {
- next(request.respondWith(JSON.stringify([]), { status: 500 }));
- };
-
- Vue.http.interceptors.push(errorInterceptor);
+ mockServiceCall(
+ service,
+ () => Promise.reject({ status: 500, headers: {} }),
+ );
new Poll({
resource: service,
@@ -86,18 +70,16 @@ describe('Poll', () => {
waitForAllCallsToFinish(service, 1, () => {
expect(callbacks.success).not.toHaveBeenCalled();
expect(callbacks.error).toHaveBeenCalled();
- Vue.http.interceptors = _.without(Vue.http.interceptors, errorInterceptor);
done();
});
});
it('should call the success callback when the interval header is -1', (done) => {
- const intervalInterceptor = (request, next) => {
- next(request.respondWith(JSON.stringify([]), { status: 200, headers: { 'poll-interval': -1 } }));
- };
-
- Vue.http.interceptors.push(intervalInterceptor);
+ mockServiceCall(
+ service,
+ () => Promise.resolve({ status: 200, headers: { 'poll-interval': -1 } }),
+ );
new Poll({
resource: service,
@@ -110,18 +92,15 @@ describe('Poll', () => {
expect(callbacks.success).toHaveBeenCalled();
expect(callbacks.error).not.toHaveBeenCalled();
- Vue.http.interceptors = _.without(Vue.http.interceptors, intervalInterceptor);
-
done();
}, 0);
});
it('starts polling when http status is 200 and interval header is provided', (done) => {
- const pollInterceptor = (request, next) => {
- next(request.respondWith(JSON.stringify([]), { status: 200, headers: { 'poll-interval': 2 } }));
- };
-
- Vue.http.interceptors.push(pollInterceptor);
+ mockServiceCall(
+ service,
+ () => Promise.resolve({ status: 200, headers: { 'poll-interval': 1 } }),
+ );
const Polling = new Poll({
resource: service,
@@ -141,19 +120,16 @@ describe('Poll', () => {
expect(callbacks.success).toHaveBeenCalled();
expect(callbacks.error).not.toHaveBeenCalled();
- Vue.http.interceptors = _.without(Vue.http.interceptors, pollInterceptor);
-
done();
});
});
describe('stop', () => {
it('stops polling when method is called', (done) => {
- const pollInterceptor = (request, next) => {
- next(request.respondWith(JSON.stringify([]), { status: 200, headers: { 'poll-interval': 2 } }));
- };
-
- Vue.http.interceptors.push(pollInterceptor);
+ mockServiceCall(
+ service,
+ () => Promise.resolve({ status: 200, headers: { 'poll-interval': 1 } }),
+ );
const Polling = new Poll({
resource: service,
@@ -174,8 +150,6 @@ describe('Poll', () => {
expect(service.fetch).toHaveBeenCalledWith({ page: 1 });
expect(Polling.stop).toHaveBeenCalled();
- Vue.http.interceptors = _.without(Vue.http.interceptors, pollInterceptor);
-
done();
});
});
@@ -183,11 +157,10 @@ describe('Poll', () => {
describe('restart', () => {
it('should restart polling when its called', (done) => {
- const pollInterceptor = (request, next) => {
- next(request.respondWith(JSON.stringify([]), { status: 200, headers: { 'poll-interval': 2 } }));
- };
-
- Vue.http.interceptors.push(pollInterceptor);
+ mockServiceCall(
+ service,
+ () => Promise.resolve({ status: 200, headers: { 'poll-interval': 1 } }),
+ );
const Polling = new Poll({
resource: service,
@@ -215,8 +188,6 @@ describe('Poll', () => {
expect(Polling.stop).toHaveBeenCalled();
expect(Polling.restart).toHaveBeenCalled();
- Vue.http.interceptors = _.without(Vue.http.interceptors, pollInterceptor);
-
done();
});
});