diff --git a/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/fetcher/impl/DeleteEntityDataFetcher.groovy b/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/fetcher/impl/DeleteEntityDataFetcher.groovy index 65a80fac38f..56559e4d396 100644 --- a/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/fetcher/impl/DeleteEntityDataFetcher.groovy +++ b/grails-data-graphql/core/src/main/groovy/org/grails/gorm/graphql/fetcher/impl/DeleteEntityDataFetcher.groovy @@ -48,7 +48,7 @@ class DeleteEntityDataFetcher extends DefaultGormDataFetcher implements De } protected void deleteInstance(GormEntity instance) { - instance.delete(failOnError: true) + instance.delete(flush: true) } @Override diff --git a/grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/impl/DeleteEntityDataFetcherSpec.groovy b/grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/impl/DeleteEntityDataFetcherSpec.groovy index 12d686ce2bb..99e2e4b8956 100644 --- a/grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/impl/DeleteEntityDataFetcherSpec.groovy +++ b/grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/impl/DeleteEntityDataFetcherSpec.groovy @@ -21,6 +21,7 @@ package org.grails.gorm.graphql.fetcher.impl import grails.gorm.transactions.Transactional import graphql.schema.DataFetchingEnvironment +import org.grails.datastore.gorm.GormEntity import org.grails.gorm.graphql.HibernateSpec import org.grails.gorm.graphql.domain.general.toone.One import org.grails.gorm.graphql.fetcher.GraphQLDataFetcherType @@ -76,6 +77,19 @@ class DeleteEntityDataFetcherSpec extends HibernateSpec { 1 * responseHandler.createResponse(env, false, _ as NullPointerException) } + void "test deleteInstance flushes the delete and does not pass the ignored failOnError argument"() { + given: + DeleteEntityDataFetcher fetcher = new DeleteEntityDataFetcher<>(mappingContext.getPersistentEntity(One.name)) + GormEntity instance = Mock(GormEntity) + + when: + fetcher.deleteInstance(instance) + + then: 'the delete is flushed so database failures surface, and failOnError (ignored by delete) is not used' + 1 * instance.delete([flush: true]) + 0 * instance.delete([failOnError: true]) + } + void "test supports"() { when: DeleteEntityDataFetcher fetcher = new DeleteEntityDataFetcher<>(mappingContext.getPersistentEntity(One.name))