Converted pager.js to axios
This commit is contained in:
parent
ab8e3a5595
commit
ee1c471bad
2 changed files with 77 additions and 32 deletions
|
@ -1,4 +1,5 @@
|
|||
import { getParameterByName } from '~/lib/utils/common_utils';
|
||||
import axios from './lib/utils/axios_utils';
|
||||
import { removeParams } from './lib/utils/url_utility';
|
||||
|
||||
const ENDLESS_SCROLL_BOTTOM_PX = 400;
|
||||
|
@ -22,24 +23,22 @@ export default {
|
|||
|
||||
getOld() {
|
||||
this.loading.show();
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: this.url,
|
||||
data: `limit=${this.limit}&offset=${this.offset}`,
|
||||
dataType: 'json',
|
||||
error: () => this.loading.hide(),
|
||||
success: (data) => {
|
||||
this.append(data.count, this.prepareData(data.html));
|
||||
this.callback();
|
||||
|
||||
// keep loading until we've filled the viewport height
|
||||
if (!this.disable && !this.isScrollable()) {
|
||||
this.getOld();
|
||||
} else {
|
||||
this.loading.hide();
|
||||
}
|
||||
axios.get(this.url, {
|
||||
params: {
|
||||
limit: this.limit,
|
||||
offset: this.offset,
|
||||
},
|
||||
});
|
||||
}).then(({ data }) => {
|
||||
this.append(data.count, this.prepareData(data.html));
|
||||
this.callback();
|
||||
|
||||
// keep loading until we've filled the viewport height
|
||||
if (!this.disable && !this.isScrollable()) {
|
||||
this.getOld();
|
||||
} else {
|
||||
this.loading.hide();
|
||||
}
|
||||
}).catch(() => this.loading.hide());
|
||||
},
|
||||
|
||||
append(count, html) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* global fixture */
|
||||
|
||||
import MockAdapter from 'axios-mock-adapter';
|
||||
import axios from '~/lib/utils/axios_utils';
|
||||
import * as utils from '~/lib/utils/url_utility';
|
||||
import Pager from '~/pager';
|
||||
|
||||
|
@ -9,7 +10,6 @@ describe('pager', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
setFixtures('<div class="content_list"></div><div class="loading"></div>');
|
||||
spyOn($, 'ajax');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
|
@ -47,39 +47,85 @@ describe('pager', () => {
|
|||
});
|
||||
|
||||
describe('getOld', () => {
|
||||
const urlRegex = /\/some_list(.*)$/;
|
||||
let mock;
|
||||
|
||||
function mockSuccess() {
|
||||
mock.onGet(urlRegex).reply(200, {
|
||||
count: 20,
|
||||
html: '',
|
||||
});
|
||||
}
|
||||
|
||||
function mockError() {
|
||||
mock.onGet(urlRegex).networkError();
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
setFixtures('<div class="content_list" data-href="/some_list"></div><div class="loading"></div>');
|
||||
spyOn(axios, 'get').and.callThrough();
|
||||
|
||||
Pager.init();
|
||||
|
||||
mock = new MockAdapter(axios);
|
||||
});
|
||||
|
||||
it('shows loader while loading next page', () => {
|
||||
afterEach(() => {
|
||||
mock.restore();
|
||||
});
|
||||
|
||||
it('shows loader while loading next page', (done) => {
|
||||
mockSuccess();
|
||||
|
||||
spyOn(Pager.loading, 'show');
|
||||
Pager.getOld();
|
||||
expect(Pager.loading.show).toHaveBeenCalled();
|
||||
|
||||
setTimeout(() => {
|
||||
expect(Pager.loading.show).toHaveBeenCalled();
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('hides loader on success', () => {
|
||||
spyOn($, 'ajax').and.callFake(options => options.success({}));
|
||||
it('hides loader on success', (done) => {
|
||||
mockSuccess();
|
||||
|
||||
spyOn(Pager.loading, 'hide');
|
||||
Pager.getOld();
|
||||
expect(Pager.loading.hide).toHaveBeenCalled();
|
||||
|
||||
setTimeout(() => {
|
||||
expect(Pager.loading.hide).toHaveBeenCalled();
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('hides loader on error', () => {
|
||||
spyOn($, 'ajax').and.callFake(options => options.error());
|
||||
it('hides loader on error', (done) => {
|
||||
mockError();
|
||||
|
||||
spyOn(Pager.loading, 'hide');
|
||||
Pager.getOld();
|
||||
expect(Pager.loading.hide).toHaveBeenCalled();
|
||||
|
||||
setTimeout(() => {
|
||||
expect(Pager.loading.hide).toHaveBeenCalled();
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('sends request to url with offset and limit params', () => {
|
||||
spyOn($, 'ajax');
|
||||
it('sends request to url with offset and limit params', (done) => {
|
||||
Pager.offset = 100;
|
||||
Pager.limit = 20;
|
||||
Pager.getOld();
|
||||
const [{ data, url }] = $.ajax.calls.argsFor(0);
|
||||
expect(data).toBe('limit=20&offset=100');
|
||||
expect(url).toBe('/some_list');
|
||||
|
||||
setTimeout(() => {
|
||||
const [url, params] = $.ajax.calls.argsFor(0);
|
||||
console.log(url, params);
|
||||
// expect(data).toBe('limit=20&offset=100');
|
||||
// expect(url).toBe('/some_list');
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue