Mock Pager in Karma tests
This commit is contained in:
parent
87cdd43b5d
commit
92be3461d2
3 changed files with 71 additions and 51 deletions
|
@ -3,24 +3,30 @@
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import 'vendor/jquery.endless-scroll';
|
import 'vendor/jquery.endless-scroll';
|
||||||
import Activities from '~/activities';
|
import Activities from '~/activities';
|
||||||
|
import Pager from '~/pager';
|
||||||
|
|
||||||
(() => {
|
describe('Activities', () => {
|
||||||
window.gon || (window.gon = {});
|
window.gon || (window.gon = {});
|
||||||
const fixtureTemplate = 'static/event_filter.html.raw';
|
const fixtureTemplate = 'static/event_filter.html.raw';
|
||||||
const filters = [
|
const filters = [
|
||||||
{
|
{
|
||||||
id: 'all',
|
id: 'all',
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
id: 'push',
|
id: 'push',
|
||||||
name: 'push events',
|
name: 'push events',
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
id: 'merged',
|
id: 'merged',
|
||||||
name: 'merge events',
|
name: 'merge events',
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
id: 'comments',
|
id: 'comments',
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
id: 'team',
|
id: 'team',
|
||||||
}];
|
},
|
||||||
|
];
|
||||||
|
|
||||||
function getEventName(index) {
|
function getEventName(index) {
|
||||||
const filter = filters[index];
|
const filter = filters[index];
|
||||||
|
@ -32,31 +38,34 @@ import Activities from '~/activities';
|
||||||
return `#${filter.id}_event_filter`;
|
return `#${filter.id}_event_filter`;
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('Activities', () => {
|
beforeEach(() => {
|
||||||
beforeEach(() => {
|
loadFixtures(fixtureTemplate);
|
||||||
loadFixtures(fixtureTemplate);
|
spyOn(Pager, 'init').and.stub();
|
||||||
new Activities();
|
new Activities();
|
||||||
});
|
|
||||||
|
|
||||||
for (let i = 0; i < filters.length; i += 1) {
|
|
||||||
((i) => {
|
|
||||||
describe(`when selecting ${getEventName(i)}`, () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
$(getSelector(i)).click();
|
|
||||||
});
|
|
||||||
|
|
||||||
for (let x = 0; x < filters.length; x += 1) {
|
|
||||||
((x) => {
|
|
||||||
const shouldHighlight = i === x;
|
|
||||||
const testName = shouldHighlight ? 'should highlight' : 'should not highlight';
|
|
||||||
|
|
||||||
it(`${testName} ${getEventName(x)}`, () => {
|
|
||||||
expect($(getSelector(x)).parent().hasClass('active')).toEqual(shouldHighlight);
|
|
||||||
});
|
|
||||||
})(x);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})(i);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
})();
|
|
||||||
|
for (let i = 0; i < filters.length; i += 1) {
|
||||||
|
(i => {
|
||||||
|
describe(`when selecting ${getEventName(i)}`, () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
$(getSelector(i)).click();
|
||||||
|
});
|
||||||
|
|
||||||
|
for (let x = 0; x < filters.length; x += 1) {
|
||||||
|
(x => {
|
||||||
|
const shouldHighlight = i === x;
|
||||||
|
const testName = shouldHighlight ? 'should highlight' : 'should not highlight';
|
||||||
|
|
||||||
|
it(`${testName} ${getEventName(x)}`, () => {
|
||||||
|
expect(
|
||||||
|
$(getSelector(x))
|
||||||
|
.parent()
|
||||||
|
.hasClass('active'),
|
||||||
|
).toEqual(shouldHighlight);
|
||||||
|
});
|
||||||
|
})(x);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(i);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -3,6 +3,7 @@ import 'vendor/jquery.endless-scroll';
|
||||||
import MockAdapter from 'axios-mock-adapter';
|
import MockAdapter from 'axios-mock-adapter';
|
||||||
import axios from '~/lib/utils/axios_utils';
|
import axios from '~/lib/utils/axios_utils';
|
||||||
import CommitsList from '~/commits';
|
import CommitsList from '~/commits';
|
||||||
|
import Pager from '~/pager';
|
||||||
|
|
||||||
describe('Commits List', () => {
|
describe('Commits List', () => {
|
||||||
let commitsList;
|
let commitsList;
|
||||||
|
@ -14,6 +15,7 @@ describe('Commits List', () => {
|
||||||
</form>
|
</form>
|
||||||
<ol id="commits-list"></ol>
|
<ol id="commits-list"></ol>
|
||||||
`);
|
`);
|
||||||
|
spyOn(Pager, 'init').and.stub();
|
||||||
commitsList = new CommitsList(25);
|
commitsList = new CommitsList(25);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -68,9 +70,10 @@ describe('Commits List', () => {
|
||||||
mock.restore();
|
mock.restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should save the last search string', (done) => {
|
it('should save the last search string', done => {
|
||||||
commitsList.searchField.val('GitLab');
|
commitsList.searchField.val('GitLab');
|
||||||
commitsList.filterResults()
|
commitsList
|
||||||
|
.filterResults()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
expect(ajaxSpy).toHaveBeenCalled();
|
expect(ajaxSpy).toHaveBeenCalled();
|
||||||
expect(commitsList.lastSearch).toEqual('GitLab');
|
expect(commitsList.lastSearch).toEqual('GitLab');
|
||||||
|
@ -80,8 +83,9 @@ describe('Commits List', () => {
|
||||||
.catch(done.fail);
|
.catch(done.fail);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not make ajax call if the input does not change', (done) => {
|
it('should not make ajax call if the input does not change', done => {
|
||||||
commitsList.filterResults()
|
commitsList
|
||||||
|
.filterResults()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
expect(ajaxSpy).not.toHaveBeenCalled();
|
expect(ajaxSpy).not.toHaveBeenCalled();
|
||||||
expect(commitsList.lastSearch).toEqual('');
|
expect(commitsList.lastSearch).toEqual('');
|
||||||
|
|
|
@ -1,13 +1,25 @@
|
||||||
|
import $ from 'jquery';
|
||||||
import MockAdapter from 'axios-mock-adapter';
|
import MockAdapter from 'axios-mock-adapter';
|
||||||
import axios from '~/lib/utils/axios_utils';
|
import axios from '~/lib/utils/axios_utils';
|
||||||
import Pager from '~/pager';
|
import Pager from '~/pager';
|
||||||
|
|
||||||
describe('pager', () => {
|
describe('pager', () => {
|
||||||
|
let axiosMock;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
axiosMock = new MockAdapter(axios);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
axiosMock.restore();
|
||||||
|
});
|
||||||
|
|
||||||
describe('init', () => {
|
describe('init', () => {
|
||||||
const originalHref = window.location.href;
|
const originalHref = window.location.href;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
setFixtures('<div class="content_list"></div><div class="loading"></div>');
|
setFixtures('<div class="content_list"></div><div class="loading"></div>');
|
||||||
|
spyOn($.fn, 'endlessScroll').and.stub();
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
|
@ -46,33 +58,28 @@ describe('pager', () => {
|
||||||
|
|
||||||
describe('getOld', () => {
|
describe('getOld', () => {
|
||||||
const urlRegex = /(.*)some_list(.*)$/;
|
const urlRegex = /(.*)some_list(.*)$/;
|
||||||
let mock;
|
|
||||||
|
|
||||||
function mockSuccess() {
|
function mockSuccess() {
|
||||||
mock.onGet(urlRegex).reply(200, {
|
axiosMock.onGet(urlRegex).reply(200, {
|
||||||
count: 0,
|
count: 0,
|
||||||
html: '',
|
html: '',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function mockError() {
|
function mockError() {
|
||||||
mock.onGet(urlRegex).networkError();
|
axiosMock.onGet(urlRegex).networkError();
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
setFixtures('<div class="content_list" data-href="/some_list"></div><div class="loading"></div>');
|
setFixtures(
|
||||||
|
'<div class="content_list" data-href="/some_list"></div><div class="loading"></div>',
|
||||||
|
);
|
||||||
spyOn(axios, 'get').and.callThrough();
|
spyOn(axios, 'get').and.callThrough();
|
||||||
|
|
||||||
mock = new MockAdapter(axios);
|
|
||||||
|
|
||||||
Pager.init();
|
Pager.init();
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
it('shows loader while loading next page', done => {
|
||||||
mock.restore();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('shows loader while loading next page', (done) => {
|
|
||||||
mockSuccess();
|
mockSuccess();
|
||||||
|
|
||||||
spyOn(Pager.loading, 'show');
|
spyOn(Pager.loading, 'show');
|
||||||
|
@ -85,7 +92,7 @@ describe('pager', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('hides loader on success', (done) => {
|
it('hides loader on success', done => {
|
||||||
mockSuccess();
|
mockSuccess();
|
||||||
|
|
||||||
spyOn(Pager.loading, 'hide');
|
spyOn(Pager.loading, 'hide');
|
||||||
|
@ -98,7 +105,7 @@ describe('pager', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('hides loader on error', (done) => {
|
it('hides loader on error', done => {
|
||||||
mockError();
|
mockError();
|
||||||
|
|
||||||
spyOn(Pager.loading, 'hide');
|
spyOn(Pager.loading, 'hide');
|
||||||
|
@ -111,7 +118,7 @@ describe('pager', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('sends request to url with offset and limit params', (done) => {
|
it('sends request to url with offset and limit params', done => {
|
||||||
Pager.offset = 100;
|
Pager.offset = 100;
|
||||||
Pager.limit = 20;
|
Pager.limit = 20;
|
||||||
Pager.getOld();
|
Pager.getOld();
|
||||||
|
|
Loading…
Reference in a new issue