Skip to content

Commit fb486bb

Browse files
committed
Fixed failed tests: MongoDbDataStoreSpringInitializerSpec and MongoConnectionSourcesSpec
See gh-43
1 parent 0984808 commit fb486bb

File tree

2 files changed

+59
-12
lines changed

2 files changed

+59
-12
lines changed

grace-datastore-gorm-mongodb/src/test/groovy/grails/mongodb/bootstrap/MongoDbDataStoreSpringInitializerSpec.groovy

Lines changed: 58 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
11
package grails.mongodb.bootstrap
22

33
import com.mongodb.client.MongoClient
4+
import de.flapdoodle.embed.mongo.commands.ServerAddress
5+
import de.flapdoodle.embed.mongo.distribution.Version
6+
import de.flapdoodle.embed.mongo.transitions.ImmutableMongod
7+
import de.flapdoodle.embed.mongo.transitions.Mongod
8+
import de.flapdoodle.embed.mongo.transitions.RunningMongodProcess
9+
import de.flapdoodle.reverse.TransitionWalker
10+
import spock.lang.Shared
11+
412
import grails.mongodb.MongoEntity
513
import grails.mongodb.geo.Point
614
import grails.persistence.Entity
715
import org.bson.Document
16+
17+
import grails.validation.ValidationException
18+
819
import org.grails.datastore.gorm.mongo.Birthday
920
import org.grails.datastore.gorm.mongo.BirthdayCodec
21+
import org.grails.datastore.mapping.config.Settings
22+
import org.grails.datastore.mapping.core.DatastoreUtils
1023
import org.grails.datastore.mapping.engine.types.AbstractMappingAwareCustomTypeMarshaller
1124
import org.grails.datastore.mapping.model.MappingContext
1225
import org.grails.datastore.mapping.model.PersistentProperty
1326
import org.grails.datastore.mapping.mongo.MongoDatastore
1427
import org.grails.datastore.mapping.mongo.config.MongoMappingContext
28+
import org.grails.datastore.mapping.mongo.config.MongoSettings
1529
import org.grails.datastore.mapping.query.Query
1630
import org.springframework.context.annotation.AnnotationConfigApplicationContext
1731
import spock.lang.Ignore
@@ -23,9 +37,40 @@ import spock.lang.Specification
2337
*/
2438
class MongoDbDataStoreSpringInitializerSpec extends Specification{
2539

40+
@Shared
41+
Map config
42+
43+
@Shared
44+
protected TransitionWalker.ReachedState<RunningMongodProcess> running
45+
46+
@Shared
47+
protected ServerAddress serverAddress
48+
49+
void setupSpec() {
50+
ImmutableMongod mongodbConfig = Mongod.instance()
51+
Version.Main version = Version.Main.V7_0
52+
53+
this.running = mongodbConfig.start(version)
54+
this.serverAddress = running.current().getServerAddress()
55+
56+
this.config = [
57+
(Settings.SETTING_FAIL_ON_ERROR): true,
58+
(MongoSettings.SETTING_URL) : "mongodb://$serverAddress".toString()
59+
]
60+
}
61+
62+
void cleanupSpec() {
63+
this.serverAddress = null
64+
if (this.running != null) {
65+
this.running.close()
66+
}
67+
this.running = null
68+
this.config.clear()
69+
}
70+
2671
void "Test that MongoDbDatastoreSpringInitializer can setup GORM for MongoDB from scratch"() {
2772
when:"the initializer used to setup GORM for MongoDB"
28-
def initializer = new MongoDbDataStoreSpringInitializer(Person)
73+
def initializer = new MongoDbDataStoreSpringInitializer(DatastoreUtils.createPropertyResolver(config), Person)
2974
def applicationContext = initializer.configure()
3075
def mongo = applicationContext.getBean(MongoClient)
3176
mongo.getDatabase(MongoDbDataStoreSpringInitializer.DEFAULT_DATABASE_NAME).drop()
@@ -37,7 +82,8 @@ class MongoDbDataStoreSpringInitializerSpec extends Specification{
3782

3883
void "Test specify mongo database name settings"() {
3984
when:"the initializer used to setup GORM for MongoDB"
40-
def initializer = new MongoDbDataStoreSpringInitializer(['grails.mongodb.databaseName':'foo'],Person)
85+
config['grails.mongodb.databaseName'] = 'foo'
86+
def initializer = new MongoDbDataStoreSpringInitializer(DatastoreUtils.createPropertyResolver(config), Person)
4187
def applicationContext = initializer.configure()
4288
def mongoDatastore = applicationContext.getBean(MongoDatastore)
4389

@@ -50,7 +96,8 @@ class MongoDbDataStoreSpringInitializerSpec extends Specification{
5096

5197
void "Test the alias is created when it is the primary datastore"() {
5298
when:"the initializer used to setup GORM for MongoDB"
53-
def initializer = new MongoDbDataStoreSpringInitializer(['grails.mongodb.databaseName':'foo'],Person)
99+
config['grails.mongodb.databaseName'] = 'foo'
100+
def initializer = new MongoDbDataStoreSpringInitializer(DatastoreUtils.createPropertyResolver(config), Person)
54101
def applicationContext = initializer.configure()
55102
def mongoDatastore = applicationContext.getBean(MongoDatastore)
56103

@@ -63,7 +110,8 @@ class MongoDbDataStoreSpringInitializerSpec extends Specification{
63110

64111
void "Test the alias is not created when it is the secondary datastore"() {
65112
when:"the initializer used to setup GORM for MongoDB"
66-
def initializer = new MongoDbDataStoreSpringInitializer(['grails.mongodb.databaseName':'foo'],Person)
113+
config['grails.mongodb.databaseName'] = 'foo'
114+
def initializer = new MongoDbDataStoreSpringInitializer(DatastoreUtils.createPropertyResolver(config), Person)
67115
initializer.setSecondaryDatastore(true)
68116
def applicationContext = initializer.configure()
69117
def mongoDatastore = applicationContext.getBean(MongoDatastore)
@@ -79,7 +127,7 @@ class MongoDbDataStoreSpringInitializerSpec extends Specification{
79127
@Ignore // The MongoDB API for this test has been altered / removed with no apparent replacement for getting the number of pooled connections in use
80128
void "Test withTransaction returns connections when used without session handling"() {
81129
given:"the initializer used to setup GORM for MongoDB"
82-
def initializer = new MongoDbDataStoreSpringInitializer(Person)
130+
def initializer = new MongoDbDataStoreSpringInitializer(DatastoreUtils.createPropertyResolver(config), Person)
83131
def applicationContext = initializer.configure()
84132
def mongo = applicationContext.getBean(Mongo)
85133

@@ -100,16 +148,15 @@ class MongoDbDataStoreSpringInitializerSpec extends Specification{
100148

101149
void "Test that constraints and Geo types work"() {
102150
given:"the initializer used to setup GORM for MongoDB"
103-
def initializer = new MongoDbDataStoreSpringInitializer(Person)
151+
def initializer = new MongoDbDataStoreSpringInitializer(DatastoreUtils.createPropertyResolver(config), Person)
104152
initializer.configure()
105153
Person.DB.drop()
106154

107155
when:"we try to persist an invalid object"
108156
def p = new Person().save(flush:true)
109157

110-
then:"The object is null and not persisted"
111-
p == null
112-
Person.count() == 0
158+
then:"Throw ValidationException"
159+
thrown(ValidationException)
113160

114161
when:"We persist a Geo type"
115162
Person.withNewSession {
@@ -126,7 +173,7 @@ class MongoDbDataStoreSpringInitializerSpec extends Specification{
126173
@Ignore
127174
void "Test custom codecs from Spring"() {
128175
given:"the initializer used to setup GORM for MongoDB"
129-
def initializer = new MongoDbDataStoreSpringInitializer(Person)
176+
def initializer = new MongoDbDataStoreSpringInitializer(DatastoreUtils.createPropertyResolver(config), Person)
130177
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext()
131178
applicationContext.beanFactory.registerSingleton("birthdayCodec", new BirthdayCodec())
132179

@@ -146,7 +193,7 @@ class MongoDbDataStoreSpringInitializerSpec extends Specification{
146193
@Ignore
147194
void "Test custom type marshallers from Spring"() {
148195
given:"the initializer used to setup GORM for MongoDB"
149-
def initializer = new MongoDbDataStoreSpringInitializer(Person)
196+
def initializer = new MongoDbDataStoreSpringInitializer(DatastoreUtils.createPropertyResolver(config), Person)
150197
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext()
151198
applicationContext.beanFactory.registerSingleton("birthdayMarshaller", new BirthdayCustomTypeMarshaller())
152199

grace-datastore-gorm-mongodb/src/test/groovy/org/grails/datastore/gorm/mongo/connections/MongoConnectionSourcesSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class MongoConnectionSourcesSpec extends Specification {
106106
tenantIds == [test1:1, test2:0]
107107

108108
when:"A data source is added and switched to at runtime"
109-
datastore.connectionSources.addConnectionSource("test3",[url:"mongodb://localhost/test3Db"])
109+
datastore.connectionSources.addConnectionSource("test3",[url:"mongodb://$serverAddress/test3Db".toString()])
110110
System.setProperty(SystemPropertyTenantResolver.PROPERTY_NAME, "test3")
111111

112112
then:"The database is usable"

0 commit comments

Comments
 (0)