From 00c8264faf6e02f741240b5c430cebcebd730280 Mon Sep 17 00:00:00 2001 From: Paul Slaughter Date: Fri, 24 May 2019 13:11:29 -0500 Subject: Jestify activities spec Also add `jQuery` to global in `test_setup`. This was needed because: - `vendor/jquery.endless-scroll` depends on it. - Adding it to `global` in the spec itself didn't work. --- spec/frontend/activities_spec.js | 70 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 spec/frontend/activities_spec.js (limited to 'spec/frontend') diff --git a/spec/frontend/activities_spec.js b/spec/frontend/activities_spec.js new file mode 100644 index 00000000000..d14be3a1f26 --- /dev/null +++ b/spec/frontend/activities_spec.js @@ -0,0 +1,70 @@ +/* eslint-disable no-unused-expressions, no-prototype-builtins, no-new, no-shadow */ + +import $ from 'jquery'; +import Activities from '~/activities'; +import Pager from '~/pager'; + +describe('Activities', () => { + window.gon || (window.gon = {}); + const fixtureTemplate = 'static/event_filter.html'; + const filters = [ + { + id: 'all', + }, + { + id: 'push', + name: 'push events', + }, + { + id: 'merged', + name: 'merge events', + }, + { + id: 'comments', + }, + { + id: 'team', + }, + ]; + + function getEventName(index) { + const filter = filters[index]; + return filter.hasOwnProperty('name') ? filter.name : filter.id; + } + + function getSelector(index) { + const filter = filters[index]; + return `#${filter.id}_event_filter`; + } + + beforeEach(() => { + loadFixtures(fixtureTemplate); + jest.spyOn(Pager, 'init').mockImplementation(() => {}); + 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); + } +}); -- cgit v1.2.3