This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch 8.0.x-hibernate7 in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 76afa5510c7e776c41cde9c987d5876d227baff9 Author: Walter B Duque de Estrada <[email protected]> AuthorDate: Tue Jan 6 23:05:01 2026 +0100 some fixes and roadmap --- grails-data-hibernate7/core/HIBERNATE7-TESTS.md | 140 +++++++++++++++++++++ .../specs/ExecuteQueryWithinValidatorSpec.groovy | 2 +- .../gorm/specs/HibernateGormDatastoreSpec.groovy | 1 + .../cfg/domainbinding/ColumnBinderSpec.groovy | 32 ++--- .../ColumnConfigToColumnBinderSpec.groovy | 2 +- .../cfg/domainbinding/IndexBinderSpec.groovy | 2 +- .../cfg/domainbinding/ManyToOneBinderSpec.groovy | 2 +- .../NaturalIdentifierBinderSpec.groovy | 4 +- .../NumericColumnConstraintsBinderSpec.groovy | 10 +- .../cfg/domainbinding/SimpleValueBinderSpec.groovy | 40 ++++-- .../StringColumnConstraintsBinderSpec.groovy | 2 +- .../domainbinding/UniqueNameGeneratorSpec.groovy | 12 +- grails-data-test-report/build.gradle | 1 + 13 files changed, 208 insertions(+), 42 deletions(-) diff --git a/grails-data-hibernate7/core/HIBERNATE7-TESTS.md b/grails-data-hibernate7/core/HIBERNATE7-TESTS.md new file mode 100644 index 0000000000..74b2ad2deb --- /dev/null +++ b/grails-data-hibernate7/core/HIBERNATE7-TESTS.md @@ -0,0 +1,140 @@ +# Hibernate 7 Test Status + +| Test File | Status | Notes | +|-----------|--------|-------| +| `src/test/groovy/org/grails/datastore/mapping/model/PersistentPropertySpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/DefaultConstraintsSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy` | FAILED | withSession fails with persistence context issue; HQL escape test fails. | +| `src/test/groovy/org/grails/orm/hibernate/HibernateGormInstanceApiSpec.groovy` | FAILED | delete() method missing/renamed? remove() called instead. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ForeignKeyColumnCountCalculatorSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleValueBinderSpec.groovy` | FAILED | Generator binding issues. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamingStrategyProviderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnConfigToColumnBinderSpec.groovy` | FAILED | Sealed class org.hibernate.mapping.Column cannot be mocked. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BackTigsTrimmerSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/UniqueNameGeneratorSpec.groovy` | FAILED | Sealed class org.hibernate.mapping.Column cannot be mocked. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ClassBinderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnNameForPropertyAndPathFetcherSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CascadeBehaviorPersisterSpec.groovy` | FAILED | Unsupported cascade style: save-update. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy` | FAILED | Final class org.hibernate.mapping.ManyToOne cannot be mocked. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamingStrategyWrapperSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CascadeBehaviorFetcherSpec.groovy` | FAILED | Expected save-update but got all. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableNameFetcherSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/StringColumnConstraintsBinderSpec.groovy` | FAILED | Sealed class org.hibernate.mapping.Column cannot be mocked. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleValueColumnBinderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/HibernateEntityWrapperSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneValuesBinderSpec.groovy` | FAILED | Final class org.hibernate.mapping.ManyToOne cannot be mocked. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy` | FAILED | Final/Sealed class issues with RootClass and Column. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/TypeNameProviderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnBinderSpec.groovy` | FAILED | Column name mismatch: got "test" instead of expected. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BackticksRemoverSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IndexBinderSpec.groovy` | FAILED | Sealed class org.hibernate.mapping.Column cannot be mocked. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdentifierToManyToOneBinderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculatorSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/PropertyBinderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractorSpec.groovy` | FAILED | Final class org.hibernate.boot.model.relational.Namespace$Name cannot be mocked. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/UniqueKeyForColumnsCreatorSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionForPropertyConfigBinderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ShouldCollectionBindWithJoinColumnSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NumericColumnConstraintsBinderSpec.groovy` | FAILED | Sealed class org.hibernate.mapping.Column cannot be mocked. | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/DefaultColumnNameFetcherSpec.groovy` | FAILED | Package/class name parts in generated column names use dots instead of underscores? | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/EnumTypeBinderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CreateKeyForPropsSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/cfg/MappingSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourceConnectionsSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/SecondLevelCacheSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettingsSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/DataSourceConnectionSourceFactorySpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/SingleTenantSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourcesWithEventsSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourceMetadataSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/PartitionedMultiTenancySpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceFactorySpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/MultipleDataSourcesWithCachingSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/support/HibernateVersionSupportSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/HibernateDatastoreSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/HibernateCriteriaBuilderSpec.groovy` | PASSED | | +| `src/test/groovy/org/grails/orm/hibernate/compiler/HibernateEntityTransformationSpec.groovy` | FAILED | Compilation error: Can't have an abstract method in a non-abstract class. | +| `src/test/groovy/org/grails/orm/hibernate/BidirectionalManyToOneWithListMappingSpec.groovy` | FAILED | Final class org.hibernate.mapping.ManyToOne cannot be mocked. | +| `src/test/groovy/grails/gorm/specs/UniqueConstraintHibernateSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/WhereQueryWithAssociationSortSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy` | PENDING | | +| `src/test/groovy/grails/gorm/specs/CompositeIdWithJoinTableSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/CascadeToBidirectionalAsssociationSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/SizeConstraintSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/TwoBidirectionalOneToManySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/ExecuteQueryWithinValidatorSpec.groovy` | FAILED | Hibernate 7 removal: Session.save() method missing. | +| `src/test/groovy/grails/gorm/specs/proxy/Hibernate6GroovyProxySpec.groovy` | FAILED | Hibernate 7 change: location.isInitialized() method missing. | +| `src/test/groovy/grails/gorm/specs/proxy/ByteBuddyProxySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/WithNewSessionAndExistingTransactionSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/txs/TransactionalWithinReadOnlySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/txs/TransactionPropagationSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/txs/CustomIsolationLevelSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/TablePerSubClassAndEmbeddedSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/traits/TraitPropertySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/traits/InterfacePropertySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/hasmany/TwoUnidirectionalHasManySpec.groovy` | FAILED | SQL Syntax error: Qualified column names in DDL. | +| `src/test/groovy/grails/gorm/specs/hasmany/ListCollectionSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/hasmany/HasManyWithInQuerySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/detachedcriteria/DetachedCriteriaProjectionAliasSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/detachedcriteria/DetachedCriteriaProjectionSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/detachedcriteria/DetachedCriteriaJoinSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/detachedcriteria/DetachCriteriaSubquerySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/IdentityEnumTypeSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/mappedby/MultipleOneToOneSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/ImportFromConstraintSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/SchemaNameSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/CompositeIdWithManyToOneAndSequenceSpec.groovy` | FAILED | NPE in Hibernate 7 SequenceStyleGenerator. | +| `src/test/groovy/grails/gorm/specs/belongsto/BidirectionalOneToOneWithUniqueSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/SubqueryAliasSpec.groovy` | SKIPPED | | +| `src/test/groovy/grails/gorm/specs/jpa/SimpleJpaEntitySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/LastUpdateWithDynamicUpdateSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/Hibernate6OptimisticLockingSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/EnumMappingSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/autoimport/AutoImportSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/UniqueWithMultipleDataSourcesSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/SaveWithExistingValidationErrorSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/multitenancy/MultiTenancyBidirectionalManyToManySpec.groovy` | FAILED | Found two representations of same collection. | +| `src/test/groovy/grails/gorm/specs/multitenancy/MultiTenancyUnidirectionalOneToManySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/inheritance/SubclassToOneProxySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassImportedSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassAndDateCreatedSpec.groovy` | FAILED | NPE in Hibernate 7 IncrementGenerator. | +| `src/test/groovy/grails/gorm/specs/MultiColumnUniqueConstraintSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/dirtychecking/HibernateDirtyCheckingSpec.groovy` | FAILED | Dirty checking issues in Hibernate 7. | +| `src/test/groovy/grails/gorm/specs/dirtychecking/HibernateUpdateFromListenerSpec.groovy` | FAILED | Dirty checking issues in Hibernate 7. | +| `src/test/groovy/grails/gorm/specs/dirtychecking/PropertyFieldSpec.groovy` | FAILED | Dirty checking issues in Hibernate 7. | +| `src/test/groovy/grails/gorm/specs/NullableAndLengthSpec.groovy` | FAILED | Mapping/Constraint issues. | +| `src/test/groovy/grails/gorm/specs/HibernateEntityTraitGeneratedSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/ToOneProxySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/SubclassMultipleListCollectionSpec.groovy` | FAILED | SQL Syntax error: Qualified column names in DDL. | +| `src/test/groovy/grails/gorm/specs/hibernatequery/HibernateQuerySpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/softdelete/SoftDeleteSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/AutoTimestampSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/RLikeSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/events/UpdatePropertyInEventListenerSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/DeleteAllWhereSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/CountByWithEmbeddedSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/DomainGetterSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/SequenceIdSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/perf/JoinPerfSpec.groovy` | FAILED | Unique constraint violation. | +| `src/test/groovy/grails/gorm/specs/uuid/UuidInsertSpec.groovy` | FAILED | Logic error: name mismatch after insert/update. | +| `src/test/groovy/grails/gorm/specs/ReadOperationSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/ManyToOneSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/services/DataServiceSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/validation/BeanValidationSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/validation/SkipValidationSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/validation/CascadeValidationSpec.groovy` | FAILED | SQL Syntax error: Qualified column names in DDL. | +| `src/test/groovy/grails/gorm/specs/validation/SaveWithInvalidEntitySpec.groovy` | FAILED | Hibernate 7 change: got EntityActionVetoException instead of IllegalStateException. | +| `src/test/groovy/grails/gorm/specs/validation/UniqueFalseConstraintSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/validation/DeepValidationSpec.groovy` | FAILED | SQL Syntax error: Qualified column names in DDL. | +| `src/test/groovy/grails/gorm/specs/validation/UniqueWithHasOneSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/validation/UniqueWithinGroupSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/validation/UniqueInheritanceSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/validation/EmbeddedWithValidationExceptionSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/compositeid/CompositeIdWithDeepOneToManyMappingSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/compositeid/GlobalConstraintWithCompositeIdSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/specs/NullValueEqualSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/hibernate/mapping/HibernateOptimisticLockingStyleMappingSpec.groovy` | PASSED | | +| `src/test/groovy/grails/gorm/hibernate/mapping/MappingBuilderSpec.groovy` | PASSED | | diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ExecuteQueryWithinValidatorSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ExecuteQueryWithinValidatorSpec.groovy index bf55a9efa4..ccd8f2e4ff 100644 --- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ExecuteQueryWithinValidatorSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ExecuteQueryWithinValidatorSpec.groovy @@ -58,7 +58,7 @@ class Named { static constraints = { nameType (validator: { val, obj, errors -> - if (val !=null) { + if (val !=null && val.nameType != null) { def parms = [nameType: val.nameType.trim().toLowerCase() ] def rows = NameType.executeQuery("""select nameType from NameType where lower(nameType) = :nameType""", parms,[:]) diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy index 83580761e2..96eab6118f 100644 --- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy @@ -20,6 +20,7 @@ import org.hibernate.boot.registry.classloading.spi.ClassLoaderService import org.hibernate.dialect.H2Dialect import org.hibernate.internal.SessionFactoryImpl import org.hibernate.service.spi.ServiceRegistryImplementor +import org.hibernate.boot.spi.AdditionalMappingContributor /** * The original GormDataStoreSpec destroyed the setup diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnBinderSpec.groovy index 248c8c92b6..053974f6c1 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnBinderSpec.groovy @@ -40,7 +40,7 @@ class ColumnBinderSpec extends Specification { def prop = Mock(ManyToMany) def owner = Mock(PersistentEntity) def mappedForm = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() // stubs @@ -94,7 +94,7 @@ class ColumnBinderSpec extends Specification { def owner = Mock(PersistentEntity) def mapping = Mock(Mapping) def propertyConfig = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() def cc = new ColumnConfig(comment: "cmt", defaultValue: "def", read: "r", write: "w") @@ -215,7 +215,7 @@ class ColumnBinderSpec extends Specification { def prop = Mock(PersistentProperty) def owner = Mock(PersistentEntity) def propertyConfig = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -268,7 +268,7 @@ class ColumnBinderSpec extends Specification { def inverse = Mock(org.grails.datastore.mapping.model.types.Association) def owner = Mock(PersistentEntity) def mappedForm = Mock(PropertyConfig) - def column = new Column() // name is null so binder should set it + def column = new Column("test") // name is null so binder should set it def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -323,7 +323,7 @@ class ColumnBinderSpec extends Specification { def prop = Mock(org.grails.datastore.mapping.model.types.ToOne) def owner = Mock(PersistentEntity) def mappedForm = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -375,7 +375,7 @@ class ColumnBinderSpec extends Specification { def prop = Mock(org.grails.datastore.mapping.model.types.Association) def owner = Mock(PersistentEntity) def mappedForm = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -429,7 +429,7 @@ class ColumnBinderSpec extends Specification { def parentProp = Mock(PersistentProperty) def owner = Mock(PersistentEntity) def propertyConfig = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -482,7 +482,7 @@ class ColumnBinderSpec extends Specification { def parentProp = Mock(PersistentProperty) def owner = Mock(PersistentEntity) def propertyConfig = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -533,7 +533,7 @@ class ColumnBinderSpec extends Specification { def parentProp = Mock(PersistentProperty) def owner = Mock(PersistentEntity) def propertyConfig = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -582,7 +582,7 @@ class ColumnBinderSpec extends Specification { def prop = Mock(PersistentProperty) def owner = Mock(PersistentEntity) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -631,7 +631,7 @@ class ColumnBinderSpec extends Specification { def prop = Mock(PersistentProperty) def owner = Mock(PersistentEntity) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -644,7 +644,7 @@ class ColumnBinderSpec extends Specification { when: // Unique true, withinGroup true => unique false - def column2 = new Column() + def column2 = new Column("test2") def pc2 = Mock(PropertyConfig) propToConfig.toPropertyConfig(prop) >> pc2 pc2.isUnique() >> true @@ -682,7 +682,7 @@ class ColumnBinderSpec extends Specification { def prop = Mock(PersistentProperty) def owner = Mock(PersistentEntity) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -695,7 +695,7 @@ class ColumnBinderSpec extends Specification { when: // Unique false => unique false - def column3 = new Column() + def column3 = new Column("test3") def pc3 = Mock(PropertyConfig) propToConfig.toPropertyConfig(prop) >>> [pc3, pc3] pc3.isUnique() >> false @@ -734,7 +734,7 @@ class ColumnBinderSpec extends Specification { def owner = Mock(PersistentEntity) def mapping = Mock(Mapping) def propertyConfig = Mock(PropertyConfig) - def column = new Column() + def column = new Column("test") def table = new Table() userTypeFetcher.getUserType(prop) >> null @@ -758,4 +758,4 @@ class ColumnBinderSpec extends Specification { 1 * keyCreator.createKeyForProps(prop, null, table, "sub_col") 1 * indexBinder.bindIndex("sub_col", column, null, table) } -} +} \ No newline at end of file diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnConfigToColumnBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnConfigToColumnBinderSpec.groovy index 0df0939a41..7babe4c636 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnConfigToColumnBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ColumnConfigToColumnBinderSpec.groovy @@ -8,7 +8,7 @@ import spock.lang.Specification class ColumnConfigToColumnBinderSpec extends Specification { def binder = new ColumnConfigToColumnBinder() - def column = Mock(Column) + def column = Mock(Column, name: "test") def "should bind column properties when values are valid"() { given: diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IndexBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IndexBinderSpec.groovy index fe16ebb41c..492b93889d 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IndexBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IndexBinderSpec.groovy @@ -10,7 +10,7 @@ class IndexBinderSpec extends Specification { def indexBinder = new IndexBinder() def table = Mock(Table) - def column = Mock(Column) + def column = Mock(Column, name: "test_column") def index = Mock(Index) diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy index dffacf20f6..714692ab07 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy @@ -121,7 +121,7 @@ class ManyToOneBinderSpec extends Specification { def refDomainClass = Mock(PersistentEntity) def mapping = Mock(Mapping) def propertyConfig = Mock(PropertyConfig) - def column = Mock(Column) + def column = Mock(Column, name: 'test') def inverseSide = Mock(Association) property.getAssociatedEntity() >> refDomainClass diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy index 044d5ca043..588fa28c84 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy @@ -57,10 +57,10 @@ class NaturalIdentifierBinderSpec extends Specification { def naturalId = Mock(NaturalId) def property1 = Mock(Property) def value1 = Mock(Value) - def column1 = Mock(Column) + def column1 = Mock(Column, name: 'id1') def property2 = Mock(Property) def value2 = Mock(Value) - def column2 = Mock(Column) + def column2 = Mock(Column, name: 'id2') Table table = Mock(Table) mapping.getIdentity() >> identity diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NumericColumnConstraintsBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NumericColumnConstraintsBinderSpec.groovy index 551eb2da1f..94115936d3 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NumericColumnConstraintsBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NumericColumnConstraintsBinderSpec.groovy @@ -17,7 +17,7 @@ class NumericColumnConstraintsBinderSpec extends Specification { void "should use scale and precision from ColumnConfig when provided"() { given: "A column config with explicit scale and precision" - def column = Mock(Column) + def column = Mock(Column, name: 'test') def property = Mock(PersistentProperty) def columnConfig = new ColumnConfig(scale: 4, precision: 12) @@ -32,7 +32,7 @@ class NumericColumnConstraintsBinderSpec extends Specification { void "should use scale from PropertyConfig when ColumnConfig is not provided"() { given: "A property config with a scale constraint" - def column = Mock(Column) + def column = Mock(Column, name: 'test') def propertyConfig = Mock(PropertyConfig) propertyConfig.getScale() >> 3 @@ -46,7 +46,7 @@ class NumericColumnConstraintsBinderSpec extends Specification { @Unroll void "should calculate precision based on min=#minVal, max=#maxVal, and scale=#scale"() { given: "A property config with various min/max/scale constraints" - def column = Mock(Column) + def column = Mock(Column, name: 'test') def propertyConfig = Mock(PropertyConfig) propertyConfig.getScale() >> scale @@ -90,7 +90,7 @@ class NumericColumnConstraintsBinderSpec extends Specification { void "should use default precision and scale when no constraints are provided"() { given: "A property config with no relevant constraints" - def column = Mock(Column) + def column = Mock(Column, name: 'test') def propertyConfig = Mock(PropertyConfig) def defaultPrecision = org.hibernate.engine.jdbc.Size.DEFAULT_PRECISION // 19 def defaultScale = org.hibernate.engine.jdbc.Size.DEFAULT_SCALE // 0 @@ -111,4 +111,4 @@ class NumericColumnConstraintsBinderSpec extends Specification { // The code only calls setScale if a constraint is found. 0 * column.setScale(_) } -} \ No newline at end of file +} diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleValueBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleValueBinderSpec.groovy index 3774d34b30..6f407dc2ed 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleValueBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleValueBinderSpec.groovy @@ -54,8 +54,14 @@ class SimpleValueBinderSpec extends Specification { then: 1 * sv.setTypeName("custom.Type") 1 * sv.setTypeParameters({ it.getProperty('p1') == 'v1' }) - 1 * columnBinder.bindColumn(prop, null, _ as Column, null, 'p', null) - 1 * columnConfigToColumnBinder.bindColumnConfigToColumn(_ as Column, null, pc) + 1 * columnBinder.bindColumn(prop, null, _, null, 'p', null) >> { args -> + def column = args[2] as Column + column.setName("testColumn") + } + 1 * columnConfigToColumnBinder.bindColumnConfigToColumn(_, null, pc) >> { args -> + def column = args[0] as Column + column.setName("testColumn") + } } def "falls back to property type when provider returns null"() { @@ -81,7 +87,10 @@ class SimpleValueBinderSpec extends Specification { then: 1 * sv.setTypeName(Integer.name) - 1 * columnBinder.bindColumn(prop, null, _ as Column, null, null, null) + 1 * columnBinder.bindColumn(prop, null, _, null, null, null) >> { args -> + def column = args[2] as Column + column.setName("testColumn") + } } def "derived property adds no columns but adds formula, except TenantId"() { @@ -119,7 +128,10 @@ class SimpleValueBinderSpec extends Specification { then: 0 * sv2.addFormula(_) - 1 * columnBinder.bindColumn(_, _, _ as Column, _, _, _) + 1 * columnBinder.bindColumn(_, _, _, _, _, _) >> { args -> + def column = args[2] as Column + column.setName("testColumn") + } } def "applies generator and maps sequence param to SequenceStyleGenerator.SEQUENCE_PARAM"() { @@ -174,10 +186,22 @@ class SimpleValueBinderSpec extends Specification { binder.bindSimpleValue(prop, parent, sv, 'path') then: - 1 * columnConfigToColumnBinder.bindColumnConfigToColumn(_ as Column, cc1, pc) - 1 * columnConfigToColumnBinder.bindColumnConfigToColumn(_ as Column, cc2, pc) - 1 * columnBinder.bindColumn(prop, parent, _ as Column, cc1, 'path', null) - 1 * columnBinder.bindColumn(prop, parent, _ as Column, cc2, 'path', null) + 1 * columnConfigToColumnBinder.bindColumnConfigToColumn(_, cc1, pc) >> { args -> + def column = args[0] as Column + column.setName("testColumn") + } + 1 * columnConfigToColumnBinder.bindColumnConfigToColumn(_, cc2, pc) >> { args -> + def column = args[0] as Column + column.setName("testColumn") + } + 1 * columnBinder.bindColumn(prop, parent, _, cc1, 'path', null) >> { args -> + def column = args[2] as Column + column.setName("testColumn") + } + 1 * columnBinder.bindColumn(prop, parent, _, cc2, 'path', null) >> { args -> + def column = args[2] as Column + column.setName("testColumn") + } 2 * sv.addColumn(_ as Column) } } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/StringColumnConstraintsBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/StringColumnConstraintsBinderSpec.groovy index 45877c9cc1..1d06e1e605 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/StringColumnConstraintsBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/StringColumnConstraintsBinderSpec.groovy @@ -12,7 +12,7 @@ class StringColumnConstraintsBinderSpec extends Specification { def setup() { binder = new StringColumnConstraintsBinder() - column = Mock(Column) + column = Mock(Column, name: "test") mappedForm = Mock(Property) } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/UniqueNameGeneratorSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/UniqueNameGeneratorSpec.groovy index 45ba1572fa..143c278122 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/UniqueNameGeneratorSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/UniqueNameGeneratorSpec.groovy @@ -20,8 +20,8 @@ class UniqueNameGeneratorSpec extends Specification { def "should generate a unique name based on table and column names and truncate it"() { given: "A unique key with a table and several columns" def table = Mock(Table) - def column1 = Mock(Column) - def column2 = Mock(Column) + def column1 = Mock(Column, name: 'first_name') + def column2 = Mock(Column, name: 'last_name') def uniqueKey = Mock(UniqueKey) table.getName() >> "person" @@ -44,7 +44,7 @@ class UniqueNameGeneratorSpec extends Specification { def "should not truncate a generated name that is 30 characters or less"() { given: "A unique key whose hash results in a short name" def table = Mock(Table) - def column = Mock(Column) + def column = Mock(Column, name: 'short_col') def uniqueKey = Mock(UniqueKey) table.getName() >> "short_table" @@ -99,9 +99,9 @@ class UniqueNameGeneratorSpec extends Specification { def "should filter out columns with blank or null names"() { given: "A unique key with valid, blank, and null column names" def table = Mock(Table) - def column1 = Mock(Column) - def column2 = Mock(Column) - def column3 = Mock(Column) + def column1 = Mock(Column, name: 'sku') + def column2 = Mock(Column, name: '') + def column3 = Mock(Column, name: null) def uniqueKey = Mock(UniqueKey) table.getName() >> "product" diff --git a/grails-data-test-report/build.gradle b/grails-data-test-report/build.gradle index c7df3e72a9..0383526f6a 100644 --- a/grails-data-test-report/build.gradle +++ b/grails-data-test-report/build.gradle @@ -31,6 +31,7 @@ dependencies { testReportAggregation project(':grails-datamapping-core-test') testReportAggregation project(':grails-datamapping-validation') testReportAggregation project(':grails-datastore-web') + testReportAggregation project(':grails-data-hibernate7-core') } tasks.named('check') {
