From 850569d7e4d67e9cef41cfc2b1c748cc21cec3e2 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 23 Oct 2023 12:24:19 +0800 Subject: [PATCH] add test cases --- packages/api/src/services/groups.ts | 4 ++ packages/api/test/resolvers/article.test.ts | 67 +++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/packages/api/src/services/groups.ts b/packages/api/src/services/groups.ts index 0a3de5891..e3ec84ebe 100644 --- a/packages/api/src/services/groups.ts +++ b/packages/api/src/services/groups.ts @@ -280,3 +280,7 @@ export const getGroupsWhereUserCanPost = async ( .innerJoinAndSelect('members.user', 'user') .getMany() } + +export const deleteGroup = async (groupId: string) => { + return getRepository(Group).delete(groupId) +} diff --git a/packages/api/test/resolvers/article.test.ts b/packages/api/test/resolvers/article.test.ts index 083bd389e..7cb3cdcbe 100644 --- a/packages/api/test/resolvers/article.test.ts +++ b/packages/api/test/resolvers/article.test.ts @@ -4,6 +4,7 @@ import chaiString from 'chai-string' import 'mocha' import sinon from 'sinon' import { DeepPartial } from 'typeorm' +import { Group } from '../../src/entity/groups/group' import { Highlight } from '../../src/entity/highlight' import { Label } from '../../src/entity/label' import { LibraryItem, LibraryItemState } from '../../src/entity/library_item' @@ -18,6 +19,7 @@ import { UploadFileStatus, } from '../../src/generated/graphql' import { getRepository } from '../../src/repository' +import { createGroup, deleteGroup } from '../../src/services/groups' import { createHighlight } from '../../src/services/highlights' import { createLabel, @@ -153,6 +155,13 @@ const searchQuery = (keyword = '') => { highlights { id } + labels { + id + name + } + recommendations { + name + } } } pageInfo { @@ -1455,6 +1464,64 @@ describe('Article API', () => { }) } ) + + context('when recommendedBy:* is in the query', () => { + let items: LibraryItem[] = [] + let group: Group + + before(async () => { + keyword = 'recommendedBy:*' + + group = ( + await createGroup({ + admin: user, + name: 'test group', + }) + )[0] + + // Create some test items + items = await createLibraryItems( + [ + { + user, + title: 'test title 1', + readableContent: '

test 1

', + slug: 'test slug 1', + originalUrl: `${url}/test1`, + recommendations: [ + { + recommender: user, + group, + }, + ], + }, + { + user, + title: 'test title 2', + readableContent: '

test 2

', + slug: 'test slug 2', + originalUrl: `${url}/test2`, + }, + ], + user.id + ) + }) + + after(async () => { + await deleteLibraryItems(items, user.id) + await deleteGroup(group.id) + }) + + it('returns recommended items', async () => { + const res = await graphqlRequest(query, authToken).expect(200) + + expect(res.body.data.search.pageInfo.totalCount).to.eq(1) + expect(res.body.data.search.edges[0].node.id).to.eq(items[0].id) + expect( + res.body.data.search.edges[0].node.recommendations[0].name + ).to.eq(group.name) + }) + }) }) describe('TypeaheadSearch API', () => {