From 58f272876e9196d37b8526c3474cf9352570af02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Thu, 6 Jun 2019 15:30:25 +0200 Subject: [PATCH 1/2] Frontend uses `neo4j-graphql-js`'s filters --- .../components/FilterMenu/FilterMenu.spec.js | 55 ++++++++++++------- webapp/components/FilterMenu/FilterMenu.vue | 26 +++++---- webapp/pages/index.vue | 20 ++++--- 3 files changed, 63 insertions(+), 38 deletions(-) diff --git a/webapp/components/FilterMenu/FilterMenu.spec.js b/webapp/components/FilterMenu/FilterMenu.spec.js index c312a401b..030ad20da 100644 --- a/webapp/components/FilterMenu/FilterMenu.spec.js +++ b/webapp/components/FilterMenu/FilterMenu.spec.js @@ -9,9 +9,11 @@ localVue.use(Styleguide) describe('FilterMenu.vue', () => { let wrapper let mocks + let propsData const createWrapper = mountMethod => { return mountMethod(FilterMenu, { + propsData, mocks, localVue, }) @@ -19,35 +21,48 @@ describe('FilterMenu.vue', () => { beforeEach(() => { mocks = { $t: () => {} } + propsData = {} }) - describe('mount', () => { + describe('given a user', () => { beforeEach(() => { - wrapper = createWrapper(mount) + propsData = { + user: { + id: '4711', + }, + } }) - it('renders a card', () => { - expect(wrapper.is('.ds-card')).toBe(true) - }) - - describe('click "filter-by-followed-authors-only" button', () => { - it('emits filterBubble object', () => { - wrapper.find({ name: 'filter-by-followed-authors-only' }).trigger('click') - expect(wrapper.emitted('changeFilterBubble')).toBeTruthy() + describe('mount', () => { + beforeEach(() => { + wrapper = createWrapper(mount) }) - it('toggles filterBubble.author property', () => { - wrapper.find({ name: 'filter-by-followed-authors-only' }).trigger('click') - expect(wrapper.emitted('changeFilterBubble')[0]).toEqual([{ author: 'following' }]) - wrapper.find({ name: 'filter-by-followed-authors-only' }).trigger('click') - expect(wrapper.emitted('changeFilterBubble')[1]).toEqual([{ author: 'all' }]) + it('renders a card', () => { + expect(wrapper.is('.ds-card')).toBe(true) }) - it('makes button primary', () => { - wrapper.find({ name: 'filter-by-followed-authors-only' }).trigger('click') - expect( - wrapper.find({ name: 'filter-by-followed-authors-only' }).classes('ds-button-primary'), - ).toBe(true) + describe('click "filter-by-followed-authors-only" button', () => { + it('emits filterBubble object', () => { + wrapper.find({ name: 'filter-by-followed-authors-only' }).trigger('click') + expect(wrapper.emitted('changeFilterBubble')).toBeTruthy() + }) + + it('toggles filterBubble.author property', () => { + wrapper.find({ name: 'filter-by-followed-authors-only' }).trigger('click') + expect(wrapper.emitted('changeFilterBubble')[0]).toEqual([ + { author: { followedBy_some: { id: '4711' } } }, + ]) + wrapper.find({ name: 'filter-by-followed-authors-only' }).trigger('click') + expect(wrapper.emitted('changeFilterBubble')[1]).toEqual([{}]) + }) + + it('makes button primary', () => { + wrapper.find({ name: 'filter-by-followed-authors-only' }).trigger('click') + expect( + wrapper.find({ name: 'filter-by-followed-authors-only' }).classes('ds-button-primary'), + ).toBe(true) + }) }) }) }) diff --git a/webapp/components/FilterMenu/FilterMenu.vue b/webapp/components/FilterMenu/FilterMenu.vue index a2195a5fd..70dd3c236 100644 --- a/webapp/components/FilterMenu/FilterMenu.vue +++ b/webapp/components/FilterMenu/FilterMenu.vue @@ -11,7 +11,7 @@ @@ -22,24 +22,30 @@