From a65e306b85ebac8b705a79b430fd87698c4170a8 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 7 Sep 2022 16:04:09 +0200 Subject: [PATCH] all categories saved returns empty array --- backend/src/schema/resolvers/user_management.js | 15 ++++++++++----- .../src/schema/resolvers/user_management.spec.js | 9 ++++++--- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/backend/src/schema/resolvers/user_management.js b/backend/src/schema/resolvers/user_management.js index 71517dd05..d88eafdae 100644 --- a/backend/src/schema/resolvers/user_management.js +++ b/backend/src/schema/resolvers/user_management.js @@ -21,16 +21,21 @@ export default { ` MATCH (user:User {id: $id}) OPTIONAL MATCH (category:Category) WHERE NOT ((user)-[:NOT_INTERESTED_IN]->(category)) - WITH user, [(user)<-[:OWNED_BY]-(medium:SocialMedia) | properties(medium) ] as media, category - RETURN user {.*, socialMedia: media, activeCategories: collect(category.id) } as user + OPTIONAL MATCH (cats:Category) + WITH user, [(user)<-[:OWNED_BY]-(medium:SocialMedia) | properties(medium) ] AS media, category, toString(COUNT(cats)) AS categoryCount + RETURN user {.*, socialMedia: media, activeCategories: collect(category.id) } AS user, categoryCount `, { id: user.id }, ) - log(result) - return result.records.map((record) => record.get('user')) + const [categoryCount] = result.records.map((record) => record.get('categoryCount')) + const [currentUser] = result.records.map((record) => record.get('user')) + // frontend expects empty array when all categories are selected + if (currentUser.activeCategories.length === parseInt(categoryCount)) + currentUser.activeCategories = [] + return currentUser }) try { - const [currentUser] = await currentUserTransactionPromise + const currentUser = await currentUserTransactionPromise return currentUser } finally { session.close() diff --git a/backend/src/schema/resolvers/user_management.spec.js b/backend/src/schema/resolvers/user_management.spec.js index 4e0cfaa14..e7f2f3ed1 100644 --- a/backend/src/schema/resolvers/user_management.spec.js +++ b/backend/src/schema/resolvers/user_management.spec.js @@ -189,9 +189,12 @@ describe('currentUser', () => { ) }) - it('returns all categories', async () => { - const result = await query({ query: currentUserQuery, variables }) - expect(result.data.currentUser.activeCategories).toHaveLength(categories.length) + it('returns empty array for all categories', async () => { + await respondsWith({ + data: { + currentUser: expect.objectContaining({ activeCategories: [] }), + }, + }) }) describe('with categories saved for current user', () => {