11package org.codehaus.groovy.grails.plugins.services ;
22
3- import org.codehaus.groovy.grails.commons.test.*
4- import org.codehaus.groovy.grails.commons.*
5- import org.codehaus.groovy.grails.commons.spring.*
6- import org.codehaus.groovy.grails.plugins.*
3+ import org.codehaus.groovy.grails.commons.ConfigurationHolder
4+ import org.codehaus.groovy.grails.commons.spring.WebRuntimeSpringConfiguration
5+ import org.codehaus.groovy.grails.commons.test.AbstractGrailsMockTests
6+ import org.codehaus.groovy.grails.plugins.DefaultGrailsPlugin
7+ import org.springframework.context.ApplicationContext
78import org.springframework.transaction.NoTransactionException
89
910class ServicesGrailsPluginTests extends AbstractGrailsMockTests {
1011
11- void onSetUp () {
12+ void onSetUp () {
1213 def config = new ConfigSlurper (). parse('''
1314 dataSource {
1415 pooled = true
@@ -20,20 +21,19 @@ class ServicesGrailsPluginTests extends AbstractGrailsMockTests {
2021''' )
2122
2223 ConfigurationHolder . config = config
23- gcl. parseClass(
24- """
24+ gcl. parseClass """
2525import org.springframework.transaction.annotation.*
2626import org.springframework.transaction.interceptor.TransactionAspectSupport
2727class SomeTransactionalService {
28- boolean transactional = true
28+ boolean transactional = true
2929 def serviceMethod() {
3030 return "hello"
31- }
31+ }
3232}
3333class NonTransactionalService {
34- boolean transactional = false
34+ boolean transactional = false
3535 def serviceMethod() {
36- return "goodbye"
36+ return "goodbye"
3737 }
3838}
3939
@@ -55,17 +55,43 @@ class PerMethodTransactionalService {
5555 def methodTwo() {
5656 def status = TransactionAspectSupport.currentTransactionStatus()
5757 return "hasTransaction = \$ {status!=null}"
58-
5958 }
6059}
61- """ )
62- }
60+ """
61+ }
6362
6463 protected void onTearDown () {
6564 ConfigurationHolder . config = null
6665 }
6766
6867 void testPerMethodTransactionAnnotations () {
68+ def appCtx = initializeContext()
69+
70+ def springService = appCtx. getBean(" perMethodTransactionalService" )
71+ assertEquals " hasTransaction = true" , springService. methodOne()
72+ shouldFail (NoTransactionException ) {
73+ springService. methodTwo()
74+ }
75+ }
76+
77+ void testSpringConfiguredService () {
78+ def appCtx = initializeContext()
79+
80+ def springService = appCtx. getBean(" springTransactionalService" )
81+ assertEquals " hasTransaction = true" , springService. serviceMethod()
82+ }
83+
84+ void testServicesPlugin () {
85+ def appCtx = initializeContext()
86+
87+ assertTrue appCtx. containsBean(" dataSource" )
88+ assertTrue appCtx. containsBean(" sessionFactory" )
89+ assertTrue appCtx. containsBean(" someTransactionalService" )
90+ assertTrue appCtx. containsBean(" nonTransactionalService" )
91+ }
92+
93+ private ApplicationContext initializeContext () {
94+
6995 def corePluginClass = gcl. loadClass(" org.codehaus.groovy.grails.plugins.CoreGrailsPlugin" )
7096 def corePlugin = new DefaultGrailsPlugin (corePluginClass,ga)
7197 def dataSourcePluginClass = gcl. loadClass(" org.codehaus.groovy.grails.plugins.datasource.DataSourceGrailsPlugin" )
@@ -84,64 +110,6 @@ class PerMethodTransactionalService {
84110 def plugin = new DefaultGrailsPlugin (pluginClass, ga)
85111 plugin. doWithRuntimeConfiguration(springConfig)
86112
87- def appCtx = springConfig. getApplicationContext()
88-
89- def springService = appCtx. getBean(" perMethodTransactionalService" )
90- assertEquals " hasTransaction = true" , springService. methodOne()
91- shouldFail (NoTransactionException ) {
92- springService. methodTwo()
93- }
94- }
95- void testSpringConfiguredService () {
96- def corePluginClass = gcl. loadClass(" org.codehaus.groovy.grails.plugins.CoreGrailsPlugin" )
97- def corePlugin = new DefaultGrailsPlugin (corePluginClass,ga)
98- def dataSourcePluginClass = gcl. loadClass(" org.codehaus.groovy.grails.plugins.datasource.DataSourceGrailsPlugin" )
99- def dataSourcePlugin = new DefaultGrailsPlugin (dataSourcePluginClass, ga)
100- def hibernatePluginClass = gcl. loadClass(" org.codehaus.groovy.grails.orm.hibernate.MockHibernateGrailsPlugin" )
101- def hibernatePlugin = new DefaultGrailsPlugin (hibernatePluginClass, ga)
102-
103- def springConfig = new WebRuntimeSpringConfiguration (ctx)
104- springConfig. servletContext = createMockServletContext()
105-
106- corePlugin. doWithRuntimeConfiguration(springConfig)
107- dataSourcePlugin. doWithRuntimeConfiguration(springConfig)
108- hibernatePlugin. doWithRuntimeConfiguration(springConfig)
109-
110- def pluginClass = gcl. loadClass(" org.codehaus.groovy.grails.plugins.services.ServicesGrailsPlugin" )
111- def plugin = new DefaultGrailsPlugin (pluginClass, ga)
112- plugin. doWithRuntimeConfiguration(springConfig)
113-
114- def appCtx = springConfig. getApplicationContext()
115-
116-
117- def springService = appCtx. getBean(" springTransactionalService" )
118- assertEquals " hasTransaction = true" , springService. serviceMethod()
113+ springConfig. getApplicationContext()
119114 }
120-
121- void testServicesPlugin () {
122-
123- def corePluginClass = gcl. loadClass(" org.codehaus.groovy.grails.plugins.CoreGrailsPlugin" )
124- def corePlugin = new DefaultGrailsPlugin (corePluginClass,ga)
125- def dataSourcePluginClass = gcl. loadClass(" org.codehaus.groovy.grails.plugins.datasource.DataSourceGrailsPlugin" )
126- def dataSourcePlugin = new DefaultGrailsPlugin (dataSourcePluginClass, ga)
127- def hibernatePluginClass = gcl. loadClass(" org.codehaus.groovy.grails.orm.hibernate.MockHibernateGrailsPlugin" )
128- def hibernatePlugin = new DefaultGrailsPlugin (hibernatePluginClass, ga)
129-
130- def springConfig = new WebRuntimeSpringConfiguration (ctx)
131- springConfig. servletContext = createMockServletContext()
132-
133- corePlugin. doWithRuntimeConfiguration(springConfig)
134- dataSourcePlugin. doWithRuntimeConfiguration(springConfig)
135- hibernatePlugin. doWithRuntimeConfiguration(springConfig)
136-
137- def pluginClass = gcl. loadClass(" org.codehaus.groovy.grails.plugins.services.ServicesGrailsPlugin" )
138- def plugin = new DefaultGrailsPlugin (pluginClass, ga)
139- plugin. doWithRuntimeConfiguration(springConfig)
140-
141- def appCtx = springConfig. getApplicationContext()
142- assert appCtx. containsBean(" dataSource" )
143- assert appCtx. containsBean(" sessionFactory" )
144- assert appCtx. containsBean(" someTransactionalService" )
145- assert appCtx. containsBean(" nonTransactionalService" )
146- }
147- }
115+ }
0 commit comments