Removed vue and vue-resource from poll_spec in an attempt to fix the transient failures relating to async timeout
This commit is contained in:
parent
180ec7113e
commit
4a4b586aa0
|
@ -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();
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue