response.characterEncoding = "utf-8"
def configs = null
try{
- configs=JSON.parse(params.infos).configs
+ configs = JSON.parse(params.infos).configs
}
catch(ConverterException e){
log.error(e.message)
backofficeService.insertUpdateBackofficeConfig(backofficeConfigSaveParam)
}
catch (IllegalStateException e) {
- log.error(message(code: 'eliot.backoffice.webservice.sauvegarde.config.erreur'), e)
+ String msg = message(code: 'eliot.backoffice.webservice.sauvegarde.config.erreur')
+ log.error(msg, e)
allErreur << new BackofficeConfigSaveErreur(
configUai: jsonConfig.uai,
- message: e.message
+ message: msg
)
}
}
configs = backofficeService.listeConfigBackoffice(filtre,pagination)
Integer nombreBackofficeConfigs = backofficeService.compteBackofficeConfigFiltre(filtre)
- Map backofficeConfigReponse = [backofficeConfigs:configs,nombreBackofficeConfigs:nombreBackofficeConfigs]
+ Map backofficeConfigReponse = [
+ backofficeConfigs: configs,
+ nombreBackofficeConfigs: nombreBackofficeConfigs
+ ]
- //TOREFACT *** bper : La classe HashMap n'a pas de méthode encodeAsJSON()! D'où vous l'avez prise???
-
- render( backofficeConfigReponse.encodeAsJSON())
+ render(backofficeConfigReponse.encodeAsJSON())
}
private boolean isSaveBodyValide(def json) {
List baseEleves = backofficeService.listeBaseEleves()
- //TOREFACT *** bper : La classe HashMap n'a pas de méthode encodeAsJSON()! D'où vous l'avez prise???
-
render (baseEleves.collect{it.toMap()}.encodeAsJSON())
-
}
}
import org.codehaus.groovy.grails.web.json.JSONElement
import org.codehaus.groovy.grails.web.json.JSONArray
import org.codehaus.groovy.grails.web.json.JSONObject
-import spock.lang.Ignore
+
+import org.codehaus.groovy.grails.plugins.converters.codecs.JSONCodec
/**
* @author obon
controller.backofficeService = backofficeService
bos = new BackofficeService()
+
+ Map.metaClass.encodeAsJSON = {JSONCodec.encode(delegate)}
+
+ UnitTestUtils.mockMessage(RestBackofficeConfigController)
}
- @Ignore //TOREFACT *** bper : N'est pas testable en état. Il faut d'abord gérer la conversion en JSON.
def "save - sans erreur"() {
given:
controller.params.infos = strRequeteCorps
}
- @Ignore //TOREFACT *** bper : la cas d'erreur n'est pas testable en état. Il faut d'abord gérer la conversion en JSON.
def "save - body manquant ou incorrect"() {
given :
controller.params.infos = infosIncorrect
- // Mock du tag message
- UnitTestUtils.mockMessage(RestBackofficeConfigController)
-
when:
controller.save()
then:
mockResponse.characterEncoding == "utf-8"
- mockResponse.contentAsString == "{'error':Le corps de la requête est incorrect.}"
+
+ String message = UnitTestUtils.message(code: "eliot.webservice.requete.corps.incorrect")
+ mockResponse.contentAsString == "{\"error\":\"$message\"}"
cleanup:
RestBackofficeConfigController.metaClass = null
]
}
- @Ignore //TOREFACT *** bper : la cas d'erreur n'est pas testable en état. Il faut d'abord gérer la conversion en JSON.
def "save - avec erreur (d'enregistement)"() {
given:
controller.params.infos = strRequeteCorps
backofficeService.insertUpdateBackofficeConfig(
{
- BackofficeConfigSaveParam param -> param.uai == etablissementIncorrectUai
+ BackofficeConfigSaveParam param -> param.uai == uaiEtabEnErreur
}
) >> {
throw new IllegalStateException("Exception de test")
// Mock de la méthode validate
BackofficeConfigSaveParam.metaClass.validate = {true}
- // Mock du tag message
- UnitTestUtils.mockMessage(RestBackofficeConfigController)
-
when:
controller.save()
then:
mockResponse.characterEncoding == "utf-8"
- mockResponse.contentAsString == "???" //TOIMP: quel message on attend??
+ mockResponse.contentAsString == reponse
cleanup:
- BackofficeConfigSaveParam.metaClass=null
- RestBackofficeConfigController.metaClass=null
+ BackofficeConfigSaveParam.metaClass = null
+ RestBackofficeConfigController.metaClass = null
where:
- etablissementIncorrectUai = '2000000A'
+ uaiEtabEnErreur = '2000000A'
+
+ message = UnitTestUtils.message(
+ code: "eliot.backoffice.webservice.sauvegarde.config.erreur"
+ )
+
+ reponse = "{\"errors\":[\"{\\\"configUai\\\":\\\"$uaiEtabEnErreur\\\",\\\"message\\\":\\\"$message\\\"}\"]}"
+
strRequeteCorps = """
{'configs':
[
}"""
}
- @Ignore //TOREFACT *** bper : N'est pas testable en état. Il faut d'abord gérer la conversion en JSON.
def "showEtablissementsFiltres - sans erreur"(){
given:
controller.params.lvs = lvs
then:
1* backofficeService.listeConfigBackoffice(_,_) >> backofficeConfigs
- 1* backofficeService.compteBackofficeConfigFiltre(_) >> nombreConfigs
+ 1* backofficeService.compteBackofficeConfigFiltre(_) >> backofficeConfigs.size()
then:
mockResponse.characterEncoding == "utf-8"
- String var = mockResponse.contentAsString as String
+
JSONElement json = JSON.parse(mockResponse.contentAsString as String)
json instanceof JSONObject
json.backofficeConfigs instanceof JSONArray
- json.backofficeConfigs.size() == 2
json.nombreBackofficeConfigs instanceof Integer
- json.toString()== reponse
-
- cleanup:
+ json.backofficeConfigs.size() == backofficeConfigs.size()
- where:
- etablissement1 = [id:6,nombreEleve:90,baseEleve:null,uai:"2000000D",udt:false,isEtabEliot:false,lvs:false,nom:"totoooooooo"]
- etablissement2 = [id:6,nombreEleve:90,baseEleve:null,uai:"2000000E",udt:false,isEtabEliot:false,lvs:false,nom:"totoooooooo2"]
- backofficeConfigs = [etablissement1,etablissement2]
- serviceReponse = [backofficeConfigs:backofficeConfigs,nombreBackofficeConfigs:2]
- nombreConfigs = 2
+ Map jsonEtab1 = json.backofficeConfigs.get(0)
+ etab1.each {key -> etab1.get(key) == jsonEtab1.get(key)}
- reponse = """{'backofficeConfigs':[{\"nombreEleve\":90,\"id\":6,\"baseEleve\":null,\"udt\":false,\"uai\":\"2000000D\",\"isEtabEliot\":false,\"lvs\":false,\"nom\":\"totoooooooo\"},{\"nombreEleve\":90,\"id\":6,\"baseEleve\":null,\"udt\":false,\"uai\":\"2000000E\",\"isEtabEliot\":false,\"lvs\":false,\"nom\":\"totoooooooo2\"}], 'nombreBackofficeConfigs':2}"""
- lvs = 'true'
-
- }
+ Map jsonEtab2 = json.backofficeConfigs.get(0)
+ etab2.each {key -> etab1.get(key) == jsonEtab2.get(key)}
+ where:
+ etab1 = [
+ id: 1,
+ nombreEleve: 90,
+ baseEleve: null,
+ uai: "2000000D",
+ udt: false,
+ isEtabEliot: false,
+ lvs: false,
+ nom: "Etab 1"
+ ]
- @Ignore //TOREFACT *** bper : N'est pas testable en état. Il faut d'abord gérer la conversion en JSON.
- def "showEtablissmeentsFiltres - sans erreur 2"(){
- given:
- def etablissement1 = [id:6,nombreEleve:90,baseEleve:null,uai:"2000000D",udt:false,isEtabEliot:false,lvs:false,nom:"totoooooooo"]
- def etablissement2 = [id:6,nombreEleve:90,baseEleve:null,uai:"2000000E",udt:false,isEtabEliot:false,lvs:false,nom:"totoooooooo2"]
- def backofficeConfigs = [etablissement1,etablissement2]
-
- BackofficeService backofficeService = Mock(BackofficeService)
- //def backofficeService = [:]
- backofficeService.listeConfigBackoffice= {return backofficeConfigs}
- backofficeService.compteBackofficeConfigFiltre= {return 2}
-
-
- controller.backofficeService = backofficeService
-
-
- when:
- controller.showEtablissementsFiltres()
-
-// def jsonSlurper = new JsonSlurper()
-// def responseObj = jsonSlurper.parseText(mockResponse.contentAsString)
-
- JSONElement json2 = JSONParse(mockResponse.contentAsString as String)
-
- then:
-
- json2.nombreBackofficeConfigs == 2
+ etab2 = [
+ id: 2,
+ nombreEleve: 180,
+ baseEleve: null,
+ uai: "2000000E",
+ udt: false,
+ isEtabEliot: false,
+ lvs: false,
+ nom: "Etab 2"
+ ]
-// responseObj.success
-// responseObj.username == USERNAME
+ backofficeConfigs = [etab1, etab2]
+ lvs = 'true'
}
-
}
import org.codehaus.groovy.grails.web.json.JSONElement
import grails.converters.deep.JSON
import org.codehaus.groovy.grails.web.json.JSONObject
-import spock.lang.Ignore
+import org.codehaus.groovy.grails.plugins.converters.codecs.JSONCodec
/**
-* @author jcok
-*/
-
+ * @author jcok
+ */
class RestBackofficeUtilisateurControllerSpec extends ControllerSpec{
BackofficeService backofficeService
backofficeService = Mock()
controller.backofficeService = backofficeService
+ Map.metaClass.encodeAsJSON = {JSONCodec.encode(delegate)}
}
- //TOREFACT : Revoir ce test unitaire, il pose problème : il renvoit un message
- //TOREFACT : d'erreur d'un test unitaire précédent (un cleanup à faire ?)
- @Ignore
def "showUtilisateursFiltres - sans erreur"(){
given:
mockResponse.characterEncoding == "utf-8"
JSONElement json = JSON.parse(mockResponse.contentAsString as String)
json instanceof JSONObject
- json.size() == 2
- println "JSON : " + json
- json.toString()== reponse
+ json.nombreUtilisateurs == nombreUtilisateur
- where:
- uai="1000000A"
+ json.utilisateurs.size() == serviceReponse.size()
- utilisateur1 = [prenom:"Eric",id:90,code:"ELEVE",epj:"A23",nom:"Thirar"]
- utilisateur2 = [prenom:"Marc",id:90,code:"ELEVE",epj:"A24",nom:"Giraud"]
- nombreUtilisateur=100
- serviceReponse = [utilisateur1,utilisateur2]
-// serviceReponse = [utilisateurs:listeUtilisateur,nombreUtilisateurs:nombreUtilisateur]
-
- //TOREFACT : decouper la ligne pour satisfaire les 80car., mais le test ne passe plus (retour chariots encodés différements)
- reponse = """[{\"nombreEleve\":90,\"id\":6,\"baseEleve\":null,\"udt\":false,\"uai\":\"2000000D\",\"isEtabEliot\":false,\"lvs\":false,\"nom\":\"totoooooooo\"},{\"nombreEleve\":90,\"id\":6,\"baseEleve\":null,\"udt\":false,\"uai\":\"2000000E\",\"isEtabEliot\":false,\"lvs\":false,\"nom\":\"totoooooooo2\"}]"""
- }
+ Map jsonUtilisateur1 = json.utilisateurs.get(0)
+ utilisateur1.each {key -> utilisateur1.get(key) == jsonUtilisateur1.get(key)}
+ Map jsonUtilisateur2 = json.utilisateurs.get(1)
+ utilisateur2.each {key -> utilisateur2.get(key) == jsonUtilisateur2.get(key)}
+ where:
+ uai = "1000000A"
+ utilisateur1 = [prenom: "Eric", id: 1, code: "ELEVE", epj: "A23", nom: "Thirar"]
+ utilisateur2 = [prenom: "Marc", id: 2, code: "ELEVE", epj: "A24", nom: "Giraud"]
+ nombreUtilisateur = 100
+ serviceReponse = [utilisateur1, utilisateur2]
+ }
}