diff --git a/backend/src/schema/types/type/EMOTED.gql b/backend/src/schema/types/type/EMOTED.gql
index c41a75228..cefb26f21 100644
--- a/backend/src/schema/types/type/EMOTED.gql
+++ b/backend/src/schema/types/type/EMOTED.gql
@@ -16,7 +16,7 @@ input _EMOTEDInput {
}
input _PostEMOTEDFilter {
- emotion: Emotion
+ emotion_in: [Emotion]
createdAt: String
updatedAt: String
}
diff --git a/webapp/components/FilterPosts/FilterPosts.spec.js b/webapp/components/FilterPosts/FilterPosts.spec.js
index 75991c4e5..c0ad56843 100644
--- a/webapp/components/FilterPosts/FilterPosts.spec.js
+++ b/webapp/components/FilterPosts/FilterPosts.spec.js
@@ -61,7 +61,7 @@ describe('FilterPosts.vue', () => {
},
'postsFilter/filteredCategoryIds': jest.fn(() => []),
'postsFilter/filteredByUsersFollowed': jest.fn(),
- 'postsFilter/filteredByEmotions': jest.fn(() => jest.fn()),
+ 'postsFilter/filteredByEmotions': jest.fn(() => []),
}
const openFilterPosts = () => {
const store = new Vuex.Store({ mutations, getters })
diff --git a/webapp/components/FilterPosts/GeneralFilterMenuItems.vue b/webapp/components/FilterPosts/GeneralFilterMenuItems.vue
index 8e79ee622..4dd79591a 100644
--- a/webapp/components/FilterPosts/GeneralFilterMenuItems.vue
+++ b/webapp/components/FilterPosts/GeneralFilterMenuItems.vue
@@ -32,7 +32,7 @@
-
+
xor(emotions, [emotion]))
+ if (isEmpty(get(filter, 'emotions_some.emotion_in'))) delete filter.emotions_some
+ state.filter = filter
},
}
@@ -68,7 +61,7 @@ export const getters = {
filteredByUsersFollowed(state) {
return !!get(state.filter, 'author.followedBy_some.id')
},
- filteredByEmotions: state => emotion => {
- return get(state.filter, 'emotions_in.emotion') === emotion
+ filteredByEmotions(state) {
+ return get(state.filter, 'emotions_some.emotion_in') || []
},
}
diff --git a/webapp/store/postsFilter.spec.js b/webapp/store/postsFilter.spec.js
index f06b4a31d..68a3dbd6e 100644
--- a/webapp/store/postsFilter.spec.js
+++ b/webapp/store/postsFilter.spec.js
@@ -43,6 +43,30 @@ describe('getters', () => {
expect(getters.filteredByUsersFollowed(state)).toBe(false)
})
})
+
+ describe('filteredByEmotions', () => {
+ it('returns an emotions array if filter is set', () => {
+ state = { filter: { emotions_some: { emotion_in: ['sad'] } } }
+ expect(getters.filteredByEmotions(state)).toEqual(['sad'])
+ })
+
+ it('returns an emotions array even when other filters are set', () => {
+ state = {
+ filter: { emotions_some: { emotion_in: ['sad'] }, categories_some: { id_in: [23] } },
+ }
+ expect(getters.filteredByEmotions(state)).toEqual(['sad'])
+ })
+
+ it('returns empty array if filter is not set', () => {
+ state = { filter: {} }
+ expect(getters.filteredByEmotions(state)).toEqual([])
+ })
+
+ it('returns empty array if another filter is set, but not emotions', () => {
+ state = { filter: { categories_some: { id_in: [23] } } }
+ expect(getters.filteredByEmotions(state)).toEqual([])
+ })
+ })
})
describe('mutations', () => {