feat: implemented album search (currently has a failing test)
This commit is contained in:
parent
6f75b17bdb
commit
17f8070dea
@ -2,7 +2,7 @@
|
|||||||
import { Deezer } from 'deezer-js'
|
import { Deezer } from 'deezer-js'
|
||||||
|
|
||||||
console.log('init!')
|
console.log('init!')
|
||||||
const dz = new Deezer()
|
export const dz = new Deezer()
|
||||||
let homeCache: any, chartsCache: any
|
let homeCache: any, chartsCache: any
|
||||||
|
|
||||||
export async function getHome() {
|
export async function getHome() {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import request from 'supertest'
|
import request from 'supertest'
|
||||||
import { app } from '../../../app'
|
import { app } from '../../../app'
|
||||||
|
import { appSendGet } from '../../../tests/utils'
|
||||||
|
|
||||||
describe('albumSearch requests', () => {
|
describe('albumSearch requests', () => {
|
||||||
it('should respond 200 to calls with term', async () => {
|
it('should respond 200 to calls with term', async () => {
|
||||||
@ -13,7 +14,7 @@ describe('albumSearch requests', () => {
|
|||||||
]
|
]
|
||||||
|
|
||||||
for (const uri of batchCalls) {
|
for (const uri of batchCalls) {
|
||||||
responseStatusCollector.push((await request(app).get(uri).send()).status)
|
responseStatusCollector.push((await appSendGet(uri)).status)
|
||||||
}
|
}
|
||||||
|
|
||||||
expect(responseStatusCollector).toMatchObject(new Array(batchCalls.length).fill(200))
|
expect(responseStatusCollector).toMatchObject(new Array(batchCalls.length).fill(200))
|
||||||
@ -37,5 +38,15 @@ describe('albumSearch requests', () => {
|
|||||||
expect(responseStatusCollector).toMatchObject(new Array(responseStatusCollector.length).fill(400))
|
expect(responseStatusCollector).toMatchObject(new Array(responseStatusCollector.length).fill(400))
|
||||||
})
|
})
|
||||||
|
|
||||||
it.todo('should respond the desired search result')
|
it('should respond the desired search result', async () => {
|
||||||
|
const res = (await appSendGet('/api/album-search/?term=eminem')).body
|
||||||
|
|
||||||
|
expect(res.data.data.length).not.toBe(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should respond the desired search result with a start parameter', async () => {
|
||||||
|
const res = (await appSendGet('/api/album-search/?term=eminem?start=10')).body
|
||||||
|
|
||||||
|
expect(res.data.data.length).not.toBe(0)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { RequestHandler } from 'express'
|
import { RequestHandler } from 'express'
|
||||||
import { ApiHandler } from '../../../types'
|
import { ApiHandler } from '../../../types'
|
||||||
|
import { dz } from '../../../main'
|
||||||
|
|
||||||
export interface RawAlbumQuery {
|
export interface RawAlbumQuery {
|
||||||
term: string
|
term: string
|
||||||
@ -21,28 +22,28 @@ export interface AlbumResponse {
|
|||||||
|
|
||||||
const path: ApiHandler['path'] = '/album-search/'
|
const path: ApiHandler['path'] = '/album-search/'
|
||||||
|
|
||||||
const handler: RequestHandler<{}, {}, {}, RawAlbumQuery> = (req, res, next) => {
|
const handler: RequestHandler<{}, {}, {}, RawAlbumQuery> = async (req, res, next) => {
|
||||||
if (!req.query) {
|
if (!req.query) {
|
||||||
res.status(400).send()
|
res.status(400).send()
|
||||||
next()
|
return next()
|
||||||
}
|
}
|
||||||
|
|
||||||
const { term } = parseQuery(req.query)
|
const { term, start, nb, ack } = parseQuery(req.query)
|
||||||
|
|
||||||
if (!term || term.trim() === '') {
|
if (!term || term.trim() === '') {
|
||||||
res.status(400).send()
|
res.status(400).send()
|
||||||
next()
|
return next()
|
||||||
}
|
}
|
||||||
|
|
||||||
// const albums = getAlbums(term, start, nb)
|
const albums = await dz.api.search_album(term, { start, nb })
|
||||||
|
|
||||||
// const output: AlbumResponse = {
|
const output: AlbumResponse = {
|
||||||
// data: albums,
|
data: albums,
|
||||||
// total: albums.length,
|
total: albums.data.length,
|
||||||
// ack
|
ack
|
||||||
// }
|
}
|
||||||
|
|
||||||
// res.send(output)
|
res.send(output)
|
||||||
res.send()
|
res.send()
|
||||||
next()
|
next()
|
||||||
}
|
}
|
||||||
|
7
server/src/tests/utils.ts
Normal file
7
server/src/tests/utils.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import { Application } from 'express'
|
||||||
|
import request from 'supertest'
|
||||||
|
import { app } from '../app'
|
||||||
|
|
||||||
|
export const sendGet = (app: Application) => (uri: string) => request(app).get(uri).send()
|
||||||
|
|
||||||
|
export const appSendGet = sendGet(app)
|
Loading…
Reference in New Issue
Block a user