This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7-dev
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 0d8ad400fd57c73073dc471460893abc5cf93728
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sat Mar 7 14:40:30 2026 -0600

    hibernate7: more Codenarc
---
 .../orm/hibernate/HibernateGormInstanceApi.groovy  |   4 +-
 .../hibernate/HibernateGormInstanceApiSpec.groovy  | 309 ++++++---------------
 2 files changed, 86 insertions(+), 227 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
index a450402d00..6e80ef9baf 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
@@ -390,7 +390,7 @@ class HibernateGormInstanceApi<D> extends 
GormInstanceApi<D> {
         return fieldIndex in dirtyProperties
     }
 
-    private static int[] findDirty(EntityPersister persister, Object[] values, 
EntityEntry entry, D instance, SessionImplementor session) {
+    private int[] findDirty(EntityPersister persister, Object[] values, 
EntityEntry entry, D instance, SessionImplementor session) {
         persister.findDirty(values, entry.loadedState, instance, session)
     }
 
@@ -458,7 +458,7 @@ class HibernateGormInstanceApi<D> extends 
GormInstanceApi<D> {
         return fieldIndex == -1 ? null : entry.loadedState[fieldIndex]
     }
 
-    protected static EntityEntry findEntityEntry(D instance, 
SessionImplementor session, boolean forDirtyCheck = true) {
+    protected EntityEntry findEntityEntry(D instance, SessionImplementor 
session, boolean forDirtyCheck = true) {
         def entry = session.persistenceContext.getEntry(instance)
         if (!entry) {
             return null
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormInstanceApiSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormInstanceApiSpec.groovy
index b3e39f984c..ecda99961c 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormInstanceApiSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormInstanceApiSpec.groovy
@@ -1,296 +1,155 @@
-// HibernateGormInstanceApiSpec.groovy
 package org.grails.orm.hibernate
 
 import grails.gorm.specs.HibernateGormDatastoreSpec
-import grails.persistence.Entity
-import org.springframework.validation.Errors
+import grails.gorm.annotation.Entity
+import grails.gorm.hibernate.HibernateEntity
 
 class HibernateGormInstanceApiSpec extends HibernateGormDatastoreSpec {
 
-    void setupSpec() {
-        manager.addAllDomainClasses([HibernateGormInstanceApiSpecPerson, 
HibernateGormInstanceApiSpecJob])
+    def setupSpec() {
+        manager.addAllDomainClasses([PersonInstanceApi, BookInstanceApi])
     }
 
-    def setup() {
-        new HibernateGormInstanceApiSpecPerson(firstName: "Fred", lastName: 
"Flintstone", age: 40).save(flush: true)
-        new HibernateGormInstanceApiSpecPerson(firstName: "Wilma", lastName: 
"Flintstone", age: 35).save(flush: true)
-    }
-
-    void "test save with validation success"() {
+    def "test save and get"() {
         given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: 
"Barney", lastName: "Rubble", age: 38)
-        when:
-        def result = person.save()
-        then:
-        result != null
-        result.id != null
-    }
+        def person = new PersonInstanceApi(name: 'Bob', age: 40)
 
-    void "test save with validation failure"() {
-        given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: null, 
lastName: "Rubble", age: 38)
         when:
-        def result = person.save()
-        then:
-        result == null
-        person.errors.hasErrors()
-    }
+        person.save(flush: true)
 
-    void "test save with failOnError"() {
-        given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: null, 
lastName: "Rubble", age: 38)
-        when:
-        person.save(failOnError: true)
         then:
-        thrown(Exception)
-    }
+        person.id != null
 
-    void "test merge"() {
-        given:
-        def person = HibernateGormInstanceApiSpecPerson.findByFirstName("Fred")
-        person.lastName = "Smith"
         when:
-        def merged = person.merge()
-        then:
-        merged.lastName == "Smith"
-    }
+        def found = PersonInstanceApi.get(person.id)
 
-    void "test insert"() {
-        given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: 
"Betty", lastName: "Rubble", age: 36)
-        when:
-        def inserted = person.insert()
         then:
-        inserted.id != null
+        found != null
+        found.name == 'Bob'
+        found.age == 40
     }
 
-    void "test discard"() {
+    def "test delete"() {
         given:
-        def person = 
HibernateGormInstanceApiSpecPerson.findByFirstName("Wilma")
-        when:
-        person.discard()
-        then:
-        !person.isAttached()
-    }
+        def person = new PersonInstanceApi(name: 'Bob', age: 40)
+        person.save(flush: true)
+        def id = person.id
 
-    void "test delete"() {
-        given:
-        def person = HibernateGormInstanceApiSpecPerson.findByFirstName("Fred")
-        when:
-        person.delete(flush: true)
-        then:
-        HibernateGormInstanceApiSpecPerson.findByFirstName("Fred") == null
-    }
-
-    void "test isAttached"() {
-        given:
-        def person = 
HibernateGormInstanceApiSpecPerson.findByFirstName("Wilma")
         expect:
-        person.isAttached()
-    }
+        PersonInstanceApi.get(id) != null
 
-    void "test lock and attach"() {
-        given:
-        def person = 
HibernateGormInstanceApiSpecPerson.findByFirstName("Wilma")
         when:
-        def locked = person.lock()
-        def attached = person.attach()
-        then:
-        locked == person
-        attached == person
-    }
+        person.delete(flush: true)
 
-    void "test refresh"() {
-        given:
-        def person = 
HibernateGormInstanceApiSpecPerson.findByFirstName("Wilma")
-        person.lastName = "Changed"
-        when:
-        person.refresh()
         then:
-        person.lastName == "Flintstone"
+        PersonInstanceApi.get(id) == null
     }
 
-    void "test isDirty for field"() {
+    def "test isDirty"() {
         given:
-        def person = 
HibernateGormInstanceApiSpecPerson.findByFirstName("Wilma")
-        person.lastName = "Changed"
-        expect:
-        person.isDirty("lastName")
-    }
+        def person = new PersonInstanceApi(name: 'Bob', age: 40)
+        person.save(flush: true)
 
-    void "test isDirty for instance"() {
-        given:
-        def person = 
HibernateGormInstanceApiSpecPerson.findByFirstName("Wilma")
-        person.lastName = "Changed"
-        expect:
-        person.isDirty()
-    }
-
-    void "test getDirtyPropertyNames"() {
-        given:
-        def person = 
HibernateGormInstanceApiSpecPerson.findByFirstName("Wilma")
-        person.lastName = "Changed"
         when:
-        def dirtyNames = person.getDirtyPropertyNames()
-        then:
-        dirtyNames.contains("lastName")
-    }
+        person.name = 'Fred'
 
-    void "test getPersistentValue"() {
-        given:
-        def person = 
HibernateGormInstanceApiSpecPerson.findByFirstName("Wilma")
-        def originalLastName = person.lastName
-        person.lastName = "Changed"
-        when:
-        def persistedValue = person.getPersistentValue("lastName")
         then:
-        persistedValue == originalLastName
+        person.isDirty()
+        person.isDirty('name')
+        !person.isDirty('age')
+        person.getDirtyPropertyNames() == ['name']
     }
 
-    void "test handleValidationError sets errors"() {
+    def "test getPersistentValue"() {
         given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: null, 
lastName: "Rubble", age: 38)
-        person.save()
-        expect:
-        person.errors instanceof Errors
-        person.errors.hasErrors()
-    }
+        def person = new PersonInstanceApi(name: 'Bob', age: 40)
+        person.save(flush: true)
 
-    void "test save with validate:false skips validation"() {
-        given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: 
"Betty", lastName: "Rubble", age: 36)
         when:
-        def result = person.save(validate: false)
+        person.name = 'Fred'
+
         then:
-        result != null
-        result.id != null
+        person.getPersistentValue('name') == 'Bob'
     }
 
-    void "test save with validate:true explicit"() {
+    def "test discard"() {
         given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: 
"Betty", lastName: "Rubble", age: 36)
+        def person = new PersonInstanceApi(name: 'Bob', age: 40)
+        person.save(flush: true)
+        person.name = 'Fred'
+
         when:
-        def result = person.save(validate: true)
+        person.discard()
+        
         then:
-        result != null
-    }
-
-    void "test save with deepValidate:false"() {
-        given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: 
"Betty", lastName: "Rubble", age: 36)
+        !person.isAttached()
+        
         when:
-        def result = person.save(deepValidate: false)
+        def found = PersonInstanceApi.get(person.id)
+        
         then:
-        result != null
-        result.id != null
+        found.name == 'Bob'
     }
 
-    void "test save with explicit flush:false"() {
+    def "test attach and merge"() {
         given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: 
"Betty", lastName: "Rubble", age: 36)
+        def person = new PersonInstanceApi(name: 'Bob', age: 40)
+        person.save(flush: true)
+        person.discard()
+        
+        expect:
+        !person.isAttached()
+        
         when:
-        def result = person.save(flush: false)
+        person.name = 'Fred'
+        person = person.attach()
+        
         then:
-        result != null
-    }
-
-    void "test merge with params"() {
-        given:
-        def person = HibernateGormInstanceApiSpecPerson.findByFirstName("Fred")
-        person.lastName = "Smith"
+        person.isAttached()
+        
         when:
-        def merged = person.merge(flush: true)
+        person.save(flush: true)
+        def found = PersonInstanceApi.get(person.id)
+        
         then:
-        merged.lastName == "Smith"
-    }
-
-    void "test isDirty returns false for new unsaved instance"() {
-        given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: "New", 
lastName: "Person", age: 25)
-        expect:
-        !person.isDirty()
+        found.name == 'Fred'
     }
 
-    void "test isDirty(field) returns false for new unsaved instance"() {
+    def "test insert"() {
         given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: "New", 
lastName: "Person", age: 25)
-        expect:
-        !person.isDirty("firstName")
-    }
-
-    void "test isDirty(field) returns false for field that has not changed"() {
-        given:
-        def person = HibernateGormInstanceApiSpecPerson.findByFirstName("Fred")
-        person.lastName = "Changed"
-        expect:
-        !person.isDirty("firstName")
-        person.isDirty("lastName")
-    }
+        def person = new PersonInstanceApi(name: 'Joe', age: 25)
 
-    void "test getDirtyPropertyNames returns empty list for new unsaved 
instance"() {
-        given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: "New", 
lastName: "Person", age: 25)
-        expect:
-        person.getDirtyPropertyNames() == []
-    }
-
-    void "test getPersistentValue returns null for new unsaved instance"() {
-        given:
-        def person = new HibernateGormInstanceApiSpecPerson(firstName: "New", 
lastName: "Person", age: 25)
-        expect:
-        person.getPersistentValue("firstName") == null
-    }
-
-    void "test getPersistentValue returns null for unknown field name"() {
-        given:
-        def person = HibernateGormInstanceApiSpecPerson.findByFirstName("Fred")
-        expect:
-        person.getPersistentValue("nonExistentField") == null
-    }
-
-    void "test save succeeds on entity with ToOne association already in 
session"() {
-        given:
-        def person = HibernateGormInstanceApiSpecPerson.findByFirstName("Fred")
-        def job = new HibernateGormInstanceApiSpecJob(title: "Programmer", 
person: person)
         when:
-        def result = job.save(flush: true)
+        person.insert(flush: true)
+
         then:
-        result != null
-        result.id != null
+        person.id != null
+        PersonInstanceApi.get(person.id).name == 'Joe'
     }
 
-    void "test save failure on entity with ToOne association calls 
handleValidationError"() {
+    def "test refresh"() {
         given:
-        def person = HibernateGormInstanceApiSpecPerson.findByFirstName("Fred")
-        def job = new HibernateGormInstanceApiSpecJob(title: null, person: 
person)
+        def person = new PersonInstanceApi(name: 'Bob', age: 40)
+        person.save(flush: true)
+        
         when:
-        def result = job.save()
+        person.name = 'Fred'
+        // name is "Fred" in memory, but "Bob" in DB
+        person.refresh()
+        
         then:
-        result == null
-        job.errors.hasErrors()
+        person.name == 'Bob'
     }
 }
 
 @Entity
-class HibernateGormInstanceApiSpecJob {
-    String title
-    HibernateGormInstanceApiSpecPerson person
-
-    static belongsTo = [person: HibernateGormInstanceApiSpecPerson]
-
-    static constraints = {
-        title nullable: false
-    }
+class PersonInstanceApi implements HibernateEntity<PersonInstanceApi> {
+    String name
+    Integer age
 }
 
 @Entity
-class HibernateGormInstanceApiSpecPerson {
-    String firstName
-    String lastName
-    Integer age
-
-    static constraints = {
-        firstName nullable: false
-        age min: 0
-    }
-}
\ No newline at end of file
+class BookInstanceApi implements HibernateEntity<BookInstanceApi> {
+    String title
+    static belongsTo = [author: PersonInstanceApi]
+}

Reply via email to