From 80b293c592dfd70c423859943ee2b4aeef72c26d Mon Sep 17 00:00:00 2001 From: Matteo Cominetti Date: Wed, 29 Jul 2020 18:56:58 +0100 Subject: [PATCH] feat(gql): adds tests for stream search and user search --- modules/core/graph/resolvers/streams.js | 9 +++++---- modules/core/services/users.js | 2 +- modules/core/tests/streams.spec.js | 9 ++++++++- modules/core/tests/users.spec.js | 8 +++++++- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/modules/core/graph/resolvers/streams.js b/modules/core/graph/resolvers/streams.js index 424c2479e4..b37d508680 100644 --- a/modules/core/graph/resolvers/streams.js +++ b/modules/core/graph/resolvers/streams.js @@ -29,11 +29,12 @@ module.exports = { if ( args.limit && args.limit > 100 ) throw new UserInputError( 'Cannot return more than 100 items, please use pagination.' ) - let totalCount = await getUserStreamsCount({userId: context.userId, publicOnly: false, searchQuery: args.query} ) + let totalCount = await getUserStreamsCount( {userId: context.userId, publicOnly: false, searchQuery: args.query} ) - let {cursor, streams} = await getUserStreams({userId: context.userId, limit: args.limit, cursor: args.cursor, publicOnly: false, searchQuery: args.query} ) + let {cursor, streams} = await getUserStreams( {userId: context.userId, limit: args.limit, cursor: args.cursor, publicOnly: false, searchQuery: args.query} ) return {totalCount, cursor: cursor, items: streams} - }, + } + }, Stream: { async collaborators( parent, args, context, info ) { @@ -47,7 +48,7 @@ module.exports = { async streams( parent, args, context, info ) { if ( args.limit && args.limit > 100 ) throw new UserInputError( 'Cannot return more than 100 items, please use pagination.' ) - // Return only the user's public streams if parent.id !== context.userId + // Return only the user's public streams if parent.id !== context.userId let publicOnly = parent.id !== context.userId let totalCount = await getUserStreamsCount( { userId: parent.id, publicOnly } ) diff --git a/modules/core/services/users.js b/modules/core/services/users.js index c61e3cccab..c3628f8722 100644 --- a/modules/core/services/users.js +++ b/modules/core/services/users.js @@ -86,7 +86,7 @@ module.exports = { limit = limit || 25 let query = Users() - .select( 'id username name bio company verified avatar' ) + .select( 'id', 'username', 'name', 'bio', 'company', 'verified', 'avatar', 'createdAt' ) .where( queryBuilder => { queryBuilder.where( {email: searchQuery} ) //match full email or partial username / name queryBuilder.orWhere( 'username', 'ILIKE', `%${searchQuery}%` ) diff --git a/modules/core/tests/streams.spec.js b/modules/core/tests/streams.spec.js index 828c182ec4..a3570bebaf 100644 --- a/modules/core/tests/streams.spec.js +++ b/modules/core/tests/streams.spec.js @@ -65,13 +65,20 @@ describe( 'Streams', ( ) => { expect( stream.description ).to.equal( 'Wooot' ) } ) - it( 'Should get all streams for a user', async ( ) => { + it( 'Should get all streams of a user', async ( ) => { let { streams, cursor } = await getUserStreams( { userId: userOne.id } ) // console.log( res ) expect( streams ).to.have.lengthOf( 2 ) expect( cursor ).to.exist } ) + it('Should search all streams of a user', async () => { + let {streams, cursor} = await getUserStreams({userId: userOne.id, searchQuery: "woo"}) + // console.log( res ) + expect(streams).to.have.lengthOf(1) + expect(cursor).to.exist + }) + it( 'Should delete a stream', async ( ) => { const id = await createStream( { name: 'mayfly', description: 'wonderful', ownerId: userOne.id } ) let all = await getUserStreams( { userId: userOne.id } ) diff --git a/modules/core/tests/users.spec.js b/modules/core/tests/users.spec.js index d41a73909f..aaf30dd78f 100644 --- a/modules/core/tests/users.spec.js +++ b/modules/core/tests/users.spec.js @@ -11,7 +11,7 @@ chai.use( chaiHttp ) const knex = require( `${appRoot}/db/knex` ) -const { createUser, getUser, updateUser, deleteUser, validatePasssword } = require( '../services/users' ) +const {createUser, getUser, searchUsers, updateUser, deleteUser, validatePasssword } = require( '../services/users' ) const { createPersonalAccessToken, createAppToken, revokeToken, revokeTokenById, validateToken, getUserTokens } = require( '../services/tokens' ) describe( 'Actors & Tokens', ( ) => { @@ -61,6 +61,12 @@ describe( 'Actors & Tokens', ( ) => { expect( actor ).to.not.have.property( 'passwordDigest' ) } ) + it('Should search and get an users', async () => { + let {users} = await searchUsers("gates", 20, null) + expect(users).to.have.lengthOf(1) + expect(users[0].name).to.equal("Bill Gates") + }) + it( 'Should update an actor', async ( ) => { let updatedActor = { ...myTestActor } updatedActor.username = 'didimitrie'