Skip to content

Commit

Permalink
Test generating from Micronaut (#19)
Browse files Browse the repository at this point in the history
* example of using the generator with Micronaut

* added forgotten test fixtures

* Revert "added forgotten test fixtures"

This reverts commit 2ee3c5e.

* added javadoc (fixed violation)
  • Loading branch information
musketyr committed Jul 28, 2021
1 parent 255ffcb commit 4773308
Show file tree
Hide file tree
Showing 7 changed files with 137 additions and 1 deletion.
8 changes: 8 additions & 0 deletions docs/guide/src/docs/asciidoc/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -161,13 +161,21 @@ TIP: You can use `MicronautJdbcGenrator` instead of `MicronautJpaGenerator` to g
include::{root-dir}/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/GeneratorSpec.groovy[tags=body]
----

[source,groovy,indent=0,options="nowrap"]
.Micronaut Usage
----
include::{root-dir}/examples/micronaut-grails-domain-library/src/test/groovy/com/agorapulse/micronaut/grails/domain/MicronautGeneratorSpec.groovy[tags=body]
----


[source,groovy,indent=0,options="nowrap"]
.Grails Console Usage
----
ctx.micronautJpaGenerator.generate(new File('/path/to/generated/sources'))
----



The current generator supports

* Constraints
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,15 @@ dependencies {
annotationProcessor "io.micronaut:micronaut-inject-java"
compile "io.micronaut:micronaut-runtime-groovy"
compile "io.micronaut:micronaut-validation"

testCompile project(':micronaut-grails-jpa-generator')

testCompile 'com.agorapulse.testing:fixt:0.2.1.1'

testCompile 'io.micronaut:micronaut-inject-groovy'
testCompile 'org.mariadb.jdbc:mariadb-java-client:2.7.3'
testCompile "org.testcontainers:mariadb:$testcontainersVersion"
testCompile 'com.github.docker-java:docker-java-api:3.2.8'
testCompile 'com.github.docker-java:docker-java-transport-zerodep:3.2.8'
testCompile 'net.java.dev.jna:jna:5.8.0'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Copyright 2020 Vladimir Orany.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.agorapulse.micronaut.grails.domain

// tag::body[]
import com.agorapulse.micronaut.grails.jpa.generator.MicronautJpaGenerator
import com.agorapulse.testing.fixt.Fixt
import io.micronaut.context.ApplicationContext
import org.grails.datastore.gorm.validation.constraints.eval.DefaultConstraintEvaluator
import org.grails.orm.hibernate.HibernateDatastore
import spock.lang.AutoCleanup
import spock.lang.Specification

/**
* Example specification generating JPA entities from GORM entities.
*/
class MicronautGeneratorSpec extends Specification {

Fixt fixt = Fixt.create(MicronautGeneratorSpec)

@AutoCleanup ApplicationContext context = ApplicationContext.run()

MicronautJpaGenerator generator = new MicronautJpaGenerator(
context.getBean(HibernateDatastore),
new DefaultConstraintEvaluator()
)

void 'generate domains'() {
given:
File root = initRootDirectory()
when:
generator.generate(root)
then:
noExceptionThrown()

when:
File entityFile = new File(root, 'com/agorapulse/micronaut/grails/domain/Manager.groovy')
File repositoryFile = new File(root, 'com/agorapulse/micronaut/grails/domain/ManagerRepository.groovy')
then:
entityFile.exists()
entityFile.text.trim() == fixt.readText('Manager.groovy.txt').trim()

repositoryFile.exists()
repositoryFile.text.trim() == fixt.readText('ManagerRepository.groovy.txt').trim()
}

private static File initRootDirectory() {
File root = new File(System.getProperty('java.io.tmpdir'), 'micronaut-data-model')

if (root.exists()) {
root.deleteDir()
}

root.mkdirs()

return root
}

}
// end::body[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
dataSource:
dbCreate: "create-drop"
url: "jdbc:tc:mariadb:10.5.10:https:///test?useSSL=false"
driverClassName: "org.testcontainers.jdbc.ContainerDatabaseDriver"
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
username: "username"
password: "password"
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.agorapulse.micronaut.grails.domain

import groovy.transform.CompileStatic
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.GenerationType
import javax.persistence.Id
import javax.persistence.Version
import javax.validation.constraints.NotNull
import javax.validation.constraints.Size

@Entity
@CompileStatic
class Manager {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
Long id

@Version
Long version

@NotNull
@Size(max = 255)
String name

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.agorapulse.micronaut.grails.domain

import io.micronaut.data.annotation.Repository
import io.micronaut.data.repository.CrudRepository

@Repository
interface ManagerRepository extends CrudRepository<Manager, Long> {

}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ groovyVersion = 2.5.8
spockVersion = 1.3-groovy-2.5
awsSdkVersion = 1.11.656
awsSdk2Version = 2.9.24
testcontainersVersion = 1.12.1
testcontainersVersion = 1.15.3
groovyClosureSupportVersion = 0.6.0
kordampVersion=0.46.0
nexusPluginVersion=1.0.0
Expand Down

0 comments on commit 4773308

Please sign in to comment.