diff --git a/backend/src/schema/resolvers/posts.js b/backend/src/schema/resolvers/posts.js index 46d7c414f..a265c28f0 100644 --- a/backend/src/schema/resolvers/posts.js +++ b/backend/src/schema/resolvers/posts.js @@ -11,6 +11,8 @@ const filterForBlockedUsers = async (params, context) => { getBlockedByUsers(context), ]) const badIds = [...blockedByUsers.map(b => b.id), ...blockedUsers.map(b => b.id)] + if (!badIds.length) return params + params.filter = mergeWith( params.filter, { diff --git a/backend/src/schema/types/schema.gql b/backend/src/schema/types/schema.gql index e0a2c328b..62f84d677 100644 --- a/backend/src/schema/types/schema.gql +++ b/backend/src/schema/types/schema.gql @@ -4,7 +4,7 @@ type Query { currentUser: User # Get the latest Network Statistics statistics: Statistics! - findPosts(query: String!, limit: Int = 10): [Post]! + findPosts(query: String!, limit: Int = 10, filter: _PostFilter): [Post]! @cypher( statement: """ CALL db.index.fulltext.queryNodes('full_text_search', $query) diff --git a/cypress/integration/common/steps.js b/cypress/integration/common/steps.js index 4387feeaf..e3db43e14 100644 --- a/cypress/integration/common/steps.js +++ b/cypress/integration/common/steps.js @@ -168,13 +168,13 @@ Given("we have the following posts in our database:", table => { }; postAttributes.deleted = Boolean(postAttributes.deleted); const disabled = Boolean(postAttributes.disabled); - postAttributes.categoryIds = [`cat${i}`]; + postAttributes.categoryIds = [`cat${i}${new Date()}`]; postAttributes; cy.factory() .create("User", userAttributes) .authenticateAs(userAttributes) .create("Category", { - id: `cat${i}`, + id: `cat${i}${new Date()}`, name: "Just For Fun", slug: `just-for-fun-${i}`, icon: "smile" diff --git a/cypress/integration/user_profile/blocked-users/Blocking.feature b/cypress/integration/user_profile/blocked-users/Blocking.feature index 3ce4fd6c4..ed784b803 100644 --- a/cypress/integration/user_profile/blocked-users/Blocking.feature +++ b/cypress/integration/user_profile/blocked-users/Blocking.feature @@ -26,6 +26,9 @@ Feature: Block a User And nobody is following the user profile anymore Scenario: Posts of blocked users are filtered from search results + Given we have the following posts in our database: + | Author | id | title | content | + | Some unblocked user | im-not-blocked | Post that should be seen | cause I'm not blocked | Given "Spammy Spammer" wrote a post "Spam Spam Spam" When I search for "Spam" Then I should see the following posts in the select dropdown: @@ -35,3 +38,7 @@ Feature: Block a User And I refresh the page And I search for "Spam" Then the search has no results + But I search for "not blocked" + Then I should see the following posts in the select dropdown: + | title | + | Post that should be seen | diff --git a/webapp/store/search.js b/webapp/store/search.js index 0d0172a98..a65e020cb 100644 --- a/webapp/store/search.js +++ b/webapp/store/search.js @@ -46,8 +46,8 @@ export const actions = { await this.app.apolloProvider.defaultClient .query({ query: gql` - query findPosts($query: String!) { - findPosts(query: $query, limit: 10) { + query findPosts($query: String!, $filter: _PostFilter) { + findPosts(query: $query, limit: 10, filter: $filter) { id slug label: title @@ -64,6 +64,7 @@ export const actions = { `, variables: { query: value.replace(/\s/g, '~ ') + '~', + filter: {}, }, }) .then(res => {