parent
efe3e02e5e
commit
f98e9d5764
7 changed files with 76973 additions and 169 deletions
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,162 @@ |
|||||||
|
const chai = require('chai'); |
||||||
|
const chaiHttp = require('chai-http'); |
||||||
|
const express = require('express'); |
||||||
|
const models = require('../../../models'); |
||||||
|
import { SetupApp } from '../../../app'; |
||||||
|
import { expect } from 'chai'; |
||||||
|
import * as helpers from './helpers'; |
||||||
|
|
||||||
|
async function init() { |
||||||
|
chai.use(chaiHttp); |
||||||
|
const app = express(); |
||||||
|
SetupApp(app); |
||||||
|
await models.sequelize.sync({ force: true }); |
||||||
|
return app; |
||||||
|
} |
||||||
|
|
||||||
|
describe('POST /query with no songs', () => { |
||||||
|
it('should give empty list', done => { |
||||||
|
init().then((app) => { |
||||||
|
chai |
||||||
|
.request(app) |
||||||
|
.post('/query') |
||||||
|
.send({ |
||||||
|
'query': {}, |
||||||
|
'offsetsLimits': { |
||||||
|
'songOffset': 0, |
||||||
|
'songLimit': 10, |
||||||
|
}, |
||||||
|
'ordering': { |
||||||
|
'orderBy': { |
||||||
|
'type': 0, |
||||||
|
}, |
||||||
|
'ascending': true |
||||||
|
} |
||||||
|
}) |
||||||
|
.then((res) => { |
||||||
|
expect(res).to.have.status(200); |
||||||
|
expect(res.body).to.deep.equal({ |
||||||
|
songs: [], |
||||||
|
tags: [], |
||||||
|
artists: [], |
||||||
|
}); |
||||||
|
done(); |
||||||
|
}); |
||||||
|
}) |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
describe('POST /query with several songs and filters', () => { |
||||||
|
it('should give all correct results', done => { |
||||||
|
init().then((app) => { |
||||||
|
async function checkAllSongs(req) { |
||||||
|
await req |
||||||
|
.post('/query') |
||||||
|
.send({ "query": {} }) |
||||||
|
.then((res) => { |
||||||
|
expect(res).to.have.status(200); |
||||||
|
expect(res.body).to.deep.equal({ |
||||||
|
ids: [1, 2, 3] |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
async function checkIdIn(req) { |
||||||
|
await req |
||||||
|
.post('/query') |
||||||
|
.send({ |
||||||
|
"query": { |
||||||
|
"prop": "id", |
||||||
|
"propOperator": "IN", |
||||||
|
"propOperand": [1, 3, 5] |
||||||
|
} |
||||||
|
}) |
||||||
|
.then((res) => { |
||||||
|
expect(res).to.have.status(200); |
||||||
|
expect(res.body).to.deep.equal({ |
||||||
|
ids: [1, 3] |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
async function checkIdNotIn(req) { |
||||||
|
await req |
||||||
|
.post('/query') |
||||||
|
.send({ |
||||||
|
"query": { |
||||||
|
"prop": "id", |
||||||
|
"propOperator": "NOTIN", |
||||||
|
"propOperand": [1, 3, 5] |
||||||
|
} |
||||||
|
}) |
||||||
|
.then((res) => { |
||||||
|
expect(res).to.have.status(200); |
||||||
|
expect(res.body).to.deep.equal({ |
||||||
|
ids: [2] |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
async function checkArtistIdIn(req) { |
||||||
|
await req |
||||||
|
.post('/query') |
||||||
|
.send({ |
||||||
|
"query": { |
||||||
|
"prop": "artistIds", |
||||||
|
"propOperator": "IN", |
||||||
|
"propOperand": [1] |
||||||
|
} |
||||||
|
}) |
||||||
|
.then((res) => { |
||||||
|
expect(res).to.have.status(200); |
||||||
|
expect(res.body).to.deep.equal({ |
||||||
|
ids: [1, 2] |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
async function checkOrRelation(req) { |
||||||
|
await req |
||||||
|
.post('/query') |
||||||
|
.send({ |
||||||
|
"query": { |
||||||
|
"childrenOperator": "OR", |
||||||
|
"children": [ |
||||||
|
{ |
||||||
|
"prop": "artistIds", |
||||||
|
"propOperator": "IN", |
||||||
|
"propOperand": [2] |
||||||
|
}, |
||||||
|
{ |
||||||
|
"prop": "id", |
||||||
|
"propOperator": "EQ", |
||||||
|
"propOperand": 1 |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
}) |
||||||
|
.then((res) => { |
||||||
|
expect(res).to.have.status(200); |
||||||
|
expect(res.body).to.deep.equal({ |
||||||
|
ids: [1, 3] |
||||||
|
}); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
var req = chai.request(app).keepOpen(); |
||||||
|
|
||||||
|
helpers.createArtist(req, { name: "Artist1" }, 200) |
||||||
|
.then(() => helpers.createArtist(req, { name: "Artist2" }, 200)) |
||||||
|
.then(() => helpers.createSong(req, { title: "Song1", artistIds: [1] }, 200)) |
||||||
|
.then(() => helpers.createSong(req, { title: "Song2", artistIds: [1] }, 200)) |
||||||
|
.then(() => helpers.createSong(req, { title: "Song3", artistIds: [2] }, 200)) |
||||||
|
.then(() => checkAllSongs(req)) |
||||||
|
.then(() => checkIdIn(req)) |
||||||
|
.then(() => checkIdNotIn(req)) |
||||||
|
.then(() => checkArtistIdIn(req)) |
||||||
|
.then(() => checkOrRelation(req)) |
||||||
|
.then(req.close) |
||||||
|
.then(done) |
||||||
|
}) |
||||||
|
}); |
||||||
|
}); |
Loading…
Reference in new issue