Skip to content

Commit

Permalink
feat(gql): adds tests for stream search and user search
Browse files Browse the repository at this point in the history
  • Loading branch information
teocomi committed Jul 29, 2020
1 parent 64279a8 commit 80b293c
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 7 deletions.
9 changes: 5 additions & 4 deletions modules/core/graph/resolvers/streams.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) {
Expand All @@ -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 } )

Expand Down
2 changes: 1 addition & 1 deletion modules/core/services/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -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}%` )
Expand Down
9 changes: 8 additions & 1 deletion modules/core/tests/streams.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 } )
Expand Down
8 changes: 7 additions & 1 deletion modules/core/tests/users.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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', ( ) => {
Expand Down Expand Up @@ -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'
Expand Down

0 comments on commit 80b293c

Please sign in to comment.