diff --git a/webapp/components/FilterMenu/FilterMenu.spec.js b/webapp/components/FilterMenu/FilterMenu.spec.js index 18358b67f..9e7ebfec0 100644 --- a/webapp/components/FilterMenu/FilterMenu.spec.js +++ b/webapp/components/FilterMenu/FilterMenu.spec.js @@ -12,6 +12,7 @@ describe('FilterMenu.vue', () => { const getters = { 'posts/isActive': () => false, + 'posts/orderBy': () => 'createdAt_desc', } const stubs = { diff --git a/webapp/components/FilterMenu/FilterMenu.vue b/webapp/components/FilterMenu/FilterMenu.vue index 4a13b3e01..9e211ccf9 100644 --- a/webapp/components/FilterMenu/FilterMenu.vue +++ b/webapp/components/FilterMenu/FilterMenu.vue @@ -17,7 +17,7 @@

{{ $t('filter-menu.order-by') }}

- +
diff --git a/webapp/components/FilterMenu/FollowingFilter.vue b/webapp/components/FilterMenu/FollowingFilter.vue index 73b219bca..677e9a1d2 100644 --- a/webapp/components/FilterMenu/FollowingFilter.vue +++ b/webapp/components/FilterMenu/FollowingFilter.vue @@ -18,6 +18,7 @@ import FilterMenuSection from '~/components/FilterMenu/FilterMenuSection' import LabeledButton from '~/components/_new/generic/LabeledButton/LabeledButton' export default { + name: 'FollowingFilter', components: { FilterMenuSection, LabeledButton, diff --git a/webapp/components/FilterMenu/OrderByFilter.spec.js b/webapp/components/FilterMenu/OrderByFilter.spec.js new file mode 100644 index 000000000..ebd5eedaa --- /dev/null +++ b/webapp/components/FilterMenu/OrderByFilter.spec.js @@ -0,0 +1,91 @@ +import { mount } from '@vue/test-utils' +import Vuex from 'vuex' +import OrderByFilter from './OrderByFilter' + +const localVue = global.localVue + +let wrapper + +describe('OrderByFilter', () => { + const mutations = { + 'posts/TOGGLE_ORDER': jest.fn(), + } + const getters = { + 'posts/orderBy': () => 'createdAt_desc', + } + + const mocks = { + $t: jest.fn((string) => string), + } + + const Wrapper = () => { + const store = new Vuex.Store({ mutations, getters }) + const wrapper = mount(OrderByFilter, { mocks, localVue, store }) + return wrapper + } + + beforeEach(() => { + wrapper = Wrapper() + }) + + describe('mount', () => { + describe('if ordered by newest', () => { + it('sets "newest-button" attribute `filled`', () => { + expect( + wrapper + .find('.order-by-filter .filter-list [data-test="newest-button"] .base-button') + .classes('--filled'), + ).toBe(true) + }) + + it('don\'t sets "oldest-button" attribute `filled`', () => { + expect( + wrapper + .find('.order-by-filter .filter-list [data-test="oldest-button"] .base-button') + .classes('--filled'), + ).toBe(false) + }) + }) + + describe('if ordered by oldest', () => { + beforeEach(() => { + getters['posts/orderBy'] = jest.fn(() => 'createdAt_asc') + wrapper = Wrapper() + }) + + it('don\'t sets "newest-button" attribute `filled`', () => { + expect( + wrapper + .find('.order-by-filter .filter-list [data-test="newest-button"] .base-button') + .classes('--filled'), + ).toBe(false) + }) + + it('sets "oldest-button" attribute `filled`', () => { + expect( + wrapper + .find('.order-by-filter .filter-list [data-test="oldest-button"] .base-button') + .classes('--filled'), + ).toBe(true) + }) + }) + + describe('click "newest-button"', () => { + it('calls TOGGLE_ORDER with "createdAt_desc"', () => { + wrapper + .find('.order-by-filter .filter-list [data-test="newest-button"] .base-button') + .trigger('click') + expect(mutations['posts/TOGGLE_ORDER']).toHaveBeenCalledWith({}, 'createdAt_desc') + }) + }) + + describe('click "oldest-button"', () => { + it('calls TOGGLE_ORDER with "createdAt_asc"', () => { + wrapper + .find('.order-by-filter .filter-list [data-test="oldest-button"] .base-button') + .trigger('click') + expect(mutations['posts/TOGGLE_ORDER']).toHaveBeenCalledWith({}, 'createdAt_asc') + }) + }) + }) +}) diff --git a/webapp/components/FilterMenu/OrderByFilter.vue b/webapp/components/FilterMenu/OrderByFilter.vue index dcc01fa58..b6b0673e1 100644 --- a/webapp/components/FilterMenu/OrderByFilter.vue +++ b/webapp/components/FilterMenu/OrderByFilter.vue @@ -1,5 +1,5 @@