feat(gql): adds tests for stream search and user search

This commit is contained in:
Matteo Cominetti
2020-07-29 18:56:58 +01:00
parent 64279a867d
commit 80b293c592
4 changed files with 21 additions and 7 deletions
+5 -4
View File
@@ -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 } )
+1 -1
View File
@@ -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}%` )
+8 -1
View File
@@ -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 } )
+7 -1
View File
@@ -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'