diff --git a/cypress/integration/common/steps.js b/cypress/integration/common/steps.js index 387f33ac0..8f5bcc8ea 100644 --- a/cypress/integration/common/steps.js +++ b/cypress/integration/common/steps.js @@ -230,7 +230,7 @@ When('I type in the following text:', text => { Then('the post shows up on the landing page at position {int}', index => { cy.openPage('landing') - const selector = `:nth-child(${index}) > .ds-card > .ds-card-content` + const selector = `.post-card:nth-child(${index}) > .ds-card-content` cy.get(selector).should('contain', lastPost.title) cy.get(selector).should('contain', lastPost.content) }) diff --git a/webapp/components/FilterMenu/FilterMenu.spec.js b/webapp/components/FilterMenu/FilterMenu.spec.js new file mode 100644 index 000000000..c312a401b --- /dev/null +++ b/webapp/components/FilterMenu/FilterMenu.spec.js @@ -0,0 +1,54 @@ +import { mount, createLocalVue } from '@vue/test-utils' +import FilterMenu from './FilterMenu.vue' +import Styleguide from '@human-connection/styleguide' + +const localVue = createLocalVue() + +localVue.use(Styleguide) + +describe('FilterMenu.vue', () => { + let wrapper + let mocks + + const createWrapper = mountMethod => { + return mountMethod(FilterMenu, { + mocks, + localVue, + }) + } + + beforeEach(() => { + mocks = { $t: () => {} } + }) + + describe('mount', () => { + beforeEach(() => { + wrapper = createWrapper(mount) + }) + + 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() + }) + + 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('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 new file mode 100644 index 000000000..a2195a5fd --- /dev/null +++ b/webapp/components/FilterMenu/FilterMenu.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/webapp/locales/de.json b/webapp/locales/de.json index 909659366..a790e6461 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -1,4 +1,7 @@ { + "filter-menu": { + "title": "Deine Filterblase" + }, "login": { "copy": "Wenn Du bereits ein Konto bei Human Connection hast, melde Dich bitte hier an.", "login": "Einloggen", diff --git a/webapp/locales/en.json b/webapp/locales/en.json index bd517a7ce..289928f92 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -1,4 +1,7 @@ { + "filter-menu": { + "title": "Your filter bubble" + }, "login": { "copy": "If you already have a human-connection account, login here.", "login": "Login", diff --git a/webapp/pages/index.vue b/webapp/pages/index.vue index a45a99656..d8becf206 100644 --- a/webapp/pages/index.vue +++ b/webapp/pages/index.vue @@ -1,6 +1,9 @@