Commit 45a2b322 authored by Daniel Caillibaud's avatar Daniel Caillibaud

Merge branch 'feature/fulltext-search' into 'master'

Feature/fulltext search

See merge request !189
parents f9784f1e 4d9cde54
......@@ -25,7 +25,8 @@ export default [
relations: [],
dateCreation: new Date(),
dateMiseAJour: new Date(),
$droits: 'RWD'
$droits: 'RWD',
publie: true
},
{
oid: '2',
......@@ -35,7 +36,7 @@ export default [
type: 'arbre',
titre: 'Mon exercice ARBRE',
resume: '',
description: '',
description: 'Une ressource avec une description originale',
commentaires: '',
parametres: {},
niveaux: [],
......@@ -45,12 +46,14 @@ export default [
relations: [],
dateCreation: new Date(),
dateMiseAJour: new Date(),
$droits: 'RD'
$droits: 'RD',
publie: true,
enfants: []
},
{
oid: '3',
rid: `${baseId}/3`,
origine: otherBaseId,
origine: baseId,
idOrigine: '3',
aliasOf: `${otherBaseId}/42`,
type: 'url',
......@@ -58,6 +61,7 @@ export default [
categories: [5],
dateCreation: new Date(),
dateMiseAJour: new Date(),
$droits: 'R'
$droits: 'R',
publie: true
}
]
......@@ -3,6 +3,7 @@ import {isObjectPlain} from 'sesajstools'
const EntityGroupe = () => lassi.service('EntityGroupe')
const EntityPersonne = () => lassi.service('EntityPersonne')
const EntityRessource = () => lassi.service('EntityRessource')
/**
* Login via l'api d'un utilisateur (qui doit exister en base)
......@@ -41,6 +42,21 @@ export const createPersonne = (personne) => {
})
}
/**
* Crée une ressource en base
* @param {supertestAgent} agent
* @param {Ressource} ressource
* @return {Promise}
*/
export const createRessource = (ressource) => {
return new Promise((resolve, reject) => {
EntityRessource().create(ressource).store((error, entity) => {
if (error) return reject(error)
resolve(entity)
})
})
}
/**
* Crée un groupe en base
* @param {Groupe} groupe Un groupe
......
......@@ -40,6 +40,8 @@
/* eslint-env mocha */
import {expect} from 'chai'
import {populate, purge} from '../populate'
import {createRessource} from '../helpers'
import fixturesRessources from '../../fixtures/ressources'
import {boot, keepAlive, shutdownDelayed} from '../../boot'
import {limites} from '../../../app/server/ressource/config'
import Ref from '../../../app/constructors/Ref'
......@@ -189,4 +191,62 @@ describe('GET /api/liste', () => {
return Promise.resolve()
})
})
// FIXME quand on reviendra sur la recherche fulltext
describe.skip('Recherche en texte libre', () => {
before(async () => {
await createRessource(fixturesRessources[0])
await createRessource(fixturesRessources[1])
await createRessource(fixturesRessources[2])
})
it(`récupère des ressources à partir d'une partie de titre`, function () {
const url = urlUpdate('/api/liste', {fulltext: ['exercice']})
return _superTestClient
.get(url)
.set('Content-Type', 'application/json')
.expect(200)
.then(res => {
const result = res.body
const data = result.data
expect(data.total).to.equals(2)
expect(data.liste[0].titre).to.equals('Mon exercice IEP')
expect(data.liste[1].titre).to.equals('Mon exercice ARBRE')
return Promise.resolve()
})
})
it(`récupère une ressource à partir de son titre`, function () {
const url = urlUpdate('/api/liste', {fulltext: ['ARBRE']})
return _superTestClient
.get(url)
.set('Content-Type', 'application/json')
.expect(200)
.then(res => {
const result = res.body
const data = result.data
expect(data.total).to.equals(1)
expect(data.liste[0].titre).to.equals('Mon exercice ARBRE')
return Promise.resolve()
})
})
it(`récupère une ressource à partir de sa description`, function () {
const url = urlUpdate('/api/liste', {fulltext: ['description originale']})
return _superTestClient
.get(url)
.set('Content-Type', 'application/json')
.expect(200)
.then(res => {
const result = res.body
const data = result.data
expect(data.total).to.equals(1)
expect(data.liste[0].titre).to.equals('Mon exercice ARBRE')
return Promise.resolve()
})
})
})
})
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment