Problème avec les méthodes addTo* dans un service
Bonjour à tous,
Je suis passé récemment en Grails 2.0RC1 (avant, j'étais en 2.0M2) et certains bouts de codes ne fonctionnent plus.
Voilà mon problème, j'ai 2 classes: Application et Company avec une relation one-to-many classique (une compagnie à plusieurs application et une appli est liè à une seule compagnie). Pour l'ajout d'une application dans une société, j'ai externalisé le code dans un service mais, le bout de code qui fonctionne dans le controller ne fonctionne pas avec le service.
J'ai fais un projet de test pour montrer le problème.
Comme classe de domaine, j'ai Company et Application:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package org.test
class Application {
String name
static constraints = {
name(blank: false, nullable: false)
}
static belongsTo = [ compagny : Company ]
}
package org.test
class Company {
String name
static constraints = {
name(blank: false, nullable: false)
}
static hasMany = [ applications : Application ]
} |
Et voici le code du service:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package org.test.svc
import org.test.Application
import org.test.Company
class ApplicationManagementService {
def addApplicationToCompany(Application a, Company c) {
if (a.validate(['name'])) {
c.addToApplications(a).save()
return a
} else {
return null
}
}
} |
Et enfin, le code du test d'intégration pour montrer le problème:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| package addtoproblem
import static org.junit.Assert.*
import org.junit.*
import org.test.Application;
import org.test.Company;
import org.test.svc.ApplicationManagementService
class ApplicationManagementIntegrationTestTests {
def applicationManagementService
Company c
@Before
void setUp() {
c = new Company(name: 'My Company')
c.save()
}
@After
void tearDown() {
// Tear down logic here
}
@Test
void testApplicationManagement() {
assert applicationManagementService
// checks company is well saved into db
assert Company.list().size() == 1
// creates application for adding
Application a = new Application(name: 'My Application')
applicationManagementService.addApplicationToCompany a, c
assert Application.list().size() == 1
}
} |
Merci par avance de votre aide :)
Chris