Skip to content

Commit 635bcc4

Browse files
committed
#1265 Fixed test
1 parent 32823ac commit 635bcc4

File tree

1 file changed

+31
-30
lines changed

1 file changed

+31
-30
lines changed
Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package grails.gorm.tests
22

3-
import grails.gorm.services.Service
4-
import grails.gorm.tests.GormDatastoreSpec
3+
import grails.gorm.annotation.Entity
54
import org.grails.datastore.gorm.GormEntity
65
import org.grails.datastore.gorm.events.ConfigurableApplicationEventPublisher
76
import org.grails.datastore.mapping.core.Datastore
@@ -12,19 +11,22 @@ import org.grails.datastore.mapping.engine.event.PreUpdateEvent
1211
import org.springframework.context.ApplicationEvent
1312
import org.springframework.context.ApplicationEventPublisher
1413
import org.springframework.context.ConfigurableApplicationContext
14+
import spock.util.concurrent.PollingConditions
1515

1616
class DirtyCheckingAfterListenerSpec extends GormDatastoreSpec {
1717

1818
TestSaveOrUpdateEventListener listener
19+
def datastore
1920

2021
@Override
2122
List getDomainClasses() {
2223
return [Player]
2324
}
2425

2526
def setup() {
26-
listener = new TestSaveOrUpdateEventListener(session.datastore)
27-
ApplicationEventPublisher publisher = session.datastore.applicationEventPublisher
27+
datastore = session.datastore
28+
listener = new TestSaveOrUpdateEventListener(datastore)
29+
ApplicationEventPublisher publisher = datastore.applicationEventPublisher
2830
if (publisher instanceof ConfigurableApplicationEventPublisher) {
2931
((ConfigurableApplicationEventPublisher) publisher).addApplicationListener(listener)
3032
} else if (publisher instanceof ConfigurableApplicationContext) {
@@ -34,49 +36,48 @@ class DirtyCheckingAfterListenerSpec extends GormDatastoreSpec {
3436

3537
void "test state change from listener update the object"() {
3638

37-
setup:
38-
PlayerService playerService = session.datastore.getService(PlayerService)
39-
Player john = playerService.save("John")
39+
when:
40+
new Player(name: "John").save()
41+
42+
then:
43+
new PollingConditions().eventually { listener.isExecuted && Player.count()}
4044

4145
when:
4246
session.flush()
43-
john = playerService.find("John")
47+
session.clear()
48+
Player john = Player.get(john.id)
4449

4550
then:
4651
john.attributes
4752
john.attributes.size() == 3
48-
}
49-
50-
static class TestSaveOrUpdateEventListener extends AbstractPersistenceEventListener {
51-
52-
TestSaveOrUpdateEventListener(Datastore datastore) {
53-
super(datastore)
54-
}
55-
56-
@Override
57-
protected void onPersistenceEvent(AbstractPersistenceEvent event) {
58-
Player player = (Player) event.entityObject
59-
player.attributes = ["test0", "test1", "test2"]
60-
}
6153

62-
@Override
63-
boolean supportsEventType(Class<? extends ApplicationEvent> eventType) {
64-
return eventType == PreUpdateEvent || eventType == PreInsertEvent
65-
}
6654
}
6755
}
6856

57+
@Entity
6958
class Player implements GormEntity<Player> {
7059
String name
7160
List<String> attributes
7261

7362
}
7463

75-
@Service(Player)
76-
interface PlayerService {
64+
class TestSaveOrUpdateEventListener extends AbstractPersistenceEventListener {
7765

78-
Player save(String name)
66+
boolean isExecuted = false
7967

80-
Player find(String name)
81-
}
68+
TestSaveOrUpdateEventListener(Datastore datastore) {
69+
super(datastore)
70+
}
71+
72+
@Override
73+
protected void onPersistenceEvent(AbstractPersistenceEvent event) {
74+
Player player = (Player) event.entityObject
75+
player.attributes = ["test0", "test1", "test2"]
76+
isExecuted = true
77+
}
8278

79+
@Override
80+
boolean supportsEventType(Class<? extends ApplicationEvent> eventType) {
81+
return eventType == PreUpdateEvent || eventType == PreInsertEvent
82+
}
83+
}

0 commit comments

Comments
 (0)