This is an automated email from the ASF dual-hosted git repository.
asf-ci-deploy pushed a commit to branch asf-site-production
in repository https://gitbox.apache.org/repos/asf/grails-website.git
The following commit(s) were added to refs/heads/asf-site-production by this
push:
new abb107d5d32 Deploying to documentation branch - 18:48:05
abb107d5d32 is described below
commit abb107d5d3279fff899a3246cfb387c0d7a99801
Author: jdaugherty <[email protected]>
AuthorDate: Fri Aug 21 18:48:08 2026 +0000
Deploying to documentation branch - 18:48:05
---
.../developer-manual/gettingStarted.html | 2 +-
.../grails-data/developer-manual/introduction.html | 2 +-
.../grails-data/developer-manual/stepByStep.html | 2 +-
.../grails-data/developer-manual/testing.html | 2 +-
.../developer-manual/understandingApi.html | 2 +-
.../understandingApi/datastoreBasics.html | 2 +-
.../understandingApi/gormApis.html | 2 +-
.../understandingApi/gormEnhancer.html | 2 +-
.../understandingApi/implementingCrud.html | 2 +-
.../understandingApi/implementingQueries.html | 2 +-
.../understandingApi/secondaryIndexes.html | 2 +-
.../grails-data/whats-new-manual/index.html | 2 +-
docs/snapshot/guide/index.html | 2 +
docs/snapshot/guide/single.html | 98 +++++++++++++++++++++
docs/snapshot/guide/testing.html | 99 ++++++++++++++++++++++
docs/snapshot/index.html | 2 +
16 files changed, 213 insertions(+), 12 deletions(-)
diff --git a/docs/snapshot/grails-data/developer-manual/gettingStarted.html
b/docs/snapshot/grails-data/developer-manual/gettingStarted.html
index 6c50c9e2710..f05ada6df74 100644
--- a/docs/snapshot/grails-data/developer-manual/gettingStarted.html
+++ b/docs/snapshot/grails-data/developer-manual/gettingStarted.html
@@ -523,7 +523,7 @@ cd grails-core</pre>
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/developer-manual/introduction.html
b/docs/snapshot/grails-data/developer-manual/introduction.html
index c346e9e346e..ec5e4a76b4d 100644
--- a/docs/snapshot/grails-data/developer-manual/introduction.html
+++ b/docs/snapshot/grails-data/developer-manual/introduction.html
@@ -476,7 +476,7 @@ body.book #toc,body.book #preamble,body.book
h1.sect0,body.book .sect1>h2{page-b
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/developer-manual/stepByStep.html
b/docs/snapshot/grails-data/developer-manual/stepByStep.html
index d39184b76eb..975de3616d6 100644
--- a/docs/snapshot/grails-data/developer-manual/stepByStep.html
+++ b/docs/snapshot/grails-data/developer-manual/stepByStep.html
@@ -621,7 +621,7 @@ class XyzTestSuite {
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/developer-manual/testing.html
b/docs/snapshot/grails-data/developer-manual/testing.html
index bafbfbdaded..c628ba973ba 100644
--- a/docs/snapshot/grails-data/developer-manual/testing.html
+++ b/docs/snapshot/grails-data/developer-manual/testing.html
@@ -511,7 +511,7 @@ class PagedResultSpec extends GormDatastoreSpec{
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/developer-manual/understandingApi.html
b/docs/snapshot/grails-data/developer-manual/understandingApi.html
index 3a8e21e732c..b8158826dd2 100644
--- a/docs/snapshot/grails-data/developer-manual/understandingApi.html
+++ b/docs/snapshot/grails-data/developer-manual/understandingApi.html
@@ -454,7 +454,7 @@ body.book #toc,body.book #preamble,body.book
h1.sect0,body.book .sect1>h2{page-b
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/datastoreBasics.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/datastoreBasics.html
index b8163c1a8ef..5b61b02a7e6 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/datastoreBasics.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/datastoreBasics.html
@@ -561,7 +561,7 @@ protected Session createSession(PropertyResolver
connDetails) {
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/gormApis.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/gormApis.html
index c1e1eaddd15..2cface1c5a5 100644
--- a/docs/snapshot/grails-data/developer-manual/understandingApi/gormApis.html
+++ b/docs/snapshot/grails-data/developer-manual/understandingApi/gormApis.html
@@ -496,7 +496,7 @@ class Neo4jEntityTraitProvider implements
GormEntityTraitProvider {
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/gormEnhancer.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/gormEnhancer.html
index fffaeef1cd1..0f6abf51548 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/gormEnhancer.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/gormEnhancer.html
@@ -488,7 +488,7 @@ enhancer.enhance()</code></pre>
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/implementingCrud.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/implementingCrud.html
index ffe5f5c6ca8..646297abbd1 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/implementingCrud.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/implementingCrud.html
@@ -673,7 +673,7 @@ protected void deleteEntry(String family, final Object key,
final Object entry)
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/implementingQueries.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/implementingQueries.html
index c336273f3ad..076f646bfd1 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/implementingQueries.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/implementingQueries.html
@@ -588,7 +588,7 @@ If, for instance, the underlying datastore does not support
the calculation of a
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git
a/docs/snapshot/grails-data/developer-manual/understandingApi/secondaryIndexes.html
b/docs/snapshot/grails-data/developer-manual/understandingApi/secondaryIndexes.html
index 73028c30daf..455c8b4a654 100644
---
a/docs/snapshot/grails-data/developer-manual/understandingApi/secondaryIndexes.html
+++
b/docs/snapshot/grails-data/developer-manual/understandingApi/secondaryIndexes.html
@@ -526,7 +526,7 @@ If the underlying datastore supports secondary indexes then
it is ok to just ret
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/grails-data/whats-new-manual/index.html
b/docs/snapshot/grails-data/whats-new-manual/index.html
index c10acf605c3..3da0d6d83ed 100644
--- a/docs/snapshot/grails-data/whats-new-manual/index.html
+++ b/docs/snapshot/grails-data/whats-new-manual/index.html
@@ -527,7 +527,7 @@ body.book #toc,body.book #preamble,body.book
h1.sect0,body.book .sect1>h2{page-b
<div id="footer">
<div id="footer-text">
Version 8.0.0-SNAPSHOT<br>
-Last updated 2026-08-21 13:34:32 UTC
+Last updated 2026-08-21 18:25:12 UTC
</div>
</div>
</body>
diff --git a/docs/snapshot/guide/index.html b/docs/snapshot/guide/index.html
index 79cfce51d25..6f6a45d618e 100644
--- a/docs/snapshot/guide/index.html
+++ b/docs/snapshot/guide/index.html
@@ -652,6 +652,8 @@ Companies deploy assistants like this [](https://kapa.ai)
on docs via [website w
<div class="toc-item" style="margin-left:10px"><a
href="../guide/testing.html#testPhases"><strong>15.6</strong><span>Custom Test
Phases</span></a></div>
+ <div class="toc-item" style="margin-left:10px"><a
href="../guide/testing.html#testingMongodb"><strong>15.7</strong><span>Testing
GORM for MongoDB</span></a></div>
+
<div class="toc-item" style="margin-left:0px"><a
href="../guide/bestPractices.html"><strong>16</strong><span>Building a
Successful Application</span></a></div>
<div class="toc-item" style="margin-left:10px"><a
href="../guide/bestPractices.html#codeAnalysisGroovy"><strong>16.1</strong><span>Code
Analysis and Styling for Groovy</span></a></div>
diff --git a/docs/snapshot/guide/single.html b/docs/snapshot/guide/single.html
index 936dc54ef84..1e8cd471d9c 100644
--- a/docs/snapshot/guide/single.html
+++ b/docs/snapshot/guide/single.html
@@ -652,6 +652,8 @@ Companies deploy assistants like this [](https://kapa.ai)
on docs via [website w
<div class="toc-item" style="margin-left:10px"><a
href="#testPhases"><strong>15.6</strong><span>Custom Test
Phases</span></a></div>
+ <div class="toc-item" style="margin-left:10px"><a
href="#testingMongodb"><strong>15.7</strong><span>Testing GORM for
MongoDB</span></a></div>
+
<div class="toc-item" style="margin-left:0px"><a
href="#bestPractices"><strong>16</strong><span>Building a Successful
Application</span></a></div>
<div class="toc-item" style="margin-left:10px"><a
href="#codeAnalysisGroovy"><strong>16.1</strong><span>Code Analysis and Styling
for Groovy</span></a></div>
@@ -37789,6 +37791,102 @@ dependencies {
</div>
+<h2 id="testingMongodb">15.7 Testing GORM for MongoDB</h2>
+
+<div class='contribute-btn'>
+ <button type='button' class='btn btn-default'
onclick='window.location.href="https://github.com/apache/grails-core/edit/8.0.x/grails-doc/src/en/guide/testing/testingMongodb.adoc"'>
+ <i class='fa fa-pencil-square-o'></i> Improve this doc
+ </button>
+</div>
+
+
+<div class="paragraph">
+<p>The <code>grails-testing-support-mongodb</code> library provides
Testcontainers-based MongoDB support for both unit and integration tests.</p>
+</div>
+<div class="paragraph">
+<p>When creating an application with <a href="https://start.grails.org">Grails
Forge</a>, select the <code>mongodb-testing-support</code> feature together
with <code>gorm-mongodb</code> or <code>mongo-sync</code> to include this
dependency automatically.</p>
+</div>
+<div class="sect1">
+<h2 id="_installation">Installation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Add the following dependency to your <code>build.gradle</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">testImplementation
"org.apache.grails.testing:grails-testing-support-mongodb"</code></pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Docker must be available for Testcontainers to start a MongoDB container.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_unit_testing">Unit Testing</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Extend <code>org.apache.grails.testing.mongo.AutoStartedMongoSpec</code> in
unit tests. A MongoDB Testcontainers instance is started automatically and
injected into the specification.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy"><span
class="keyword">import</span> <span
class="include">org.apache.grails.testing.mongo.AutoStartedMongoSpec</span>
+<span class="keyword">import</span> <span
class="include">org.grails.datastore.mapping.mongo.MongoDatastore</span>
+<span class="keyword">import</span> <span
class="include">spock.lang.Shared</span>
+
+<span class="type">class</span> <span class="class">BookSpec</span> <span
class="directive">extends</span> AutoStartedMongoSpec {
+
+ <span class="annotation">@Shared</span>
+ MongoDatastore mongoDatastore
+
+ <span class="type">void</span> <span class="string"><span
class="delimiter">"</span><span class="content">test mongo
connection</span><span class="delimiter">"</span></span>() {
+ <span class="key">expect</span>:
+ mongoHost
+ mongoPort
+ dbContainer.running
+ }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If a shared <code>MongoDatastore</code> field is declared and
<code>shouldInitializeDatastore()</code> returns <code>true</code> (the
default), the datastore is bootstrapped against domain classes in the packages
returned by <code>getMongoPackages()</code> (defaults to the package of the
specification).</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_integration_testing">Integration Testing</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>For integration tests, Spock global extensions start a single MongoDB
container for the test run when MongoDB is not already listening on port
<code>27017</code>. Connection details are exposed via system properties such
as <code>grails.mongodb.url</code>, <code>grails.mongodb.host</code>, and
<code>grails.mongodb.port</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_mongodb_container_version">MongoDB Container Version</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The MongoDB image version defaults to <code>7.0.19</code>. Override it with
the <code>mongodbContainerVersion</code> system property:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code
data-lang="groovy">tasks.withType(Test).configureEach {
+ systemProperty <span class="string"><span
class="delimiter">"</span><span
class="content">mongodbContainerVersion</span><span
class="delimiter">"</span></span>, <span class="string"><span
class="delimiter">"</span><span class="content">7.0.25</span><span
class="delimiter">"</span></span>
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
+
+
<h1 id="bestPractices">16 Building a Successful Application</h1>
<div class='contribute-btn'>
diff --git a/docs/snapshot/guide/testing.html b/docs/snapshot/guide/testing.html
index 3683db1195a..648151271c9 100644
--- a/docs/snapshot/guide/testing.html
+++ b/docs/snapshot/guide/testing.html
@@ -239,6 +239,9 @@ Companies deploy assistants like this [](https://kapa.ai)
on docs via [website w
<div class="toc-item" style="margin-left:0px"><a
href="#testPhases"><strong>15.6</strong><span>Custom Test Phases</span></a>
</div>
+ <div class="toc-item" style="margin-left:0px"><a
href="#testingMongodb"><strong>15.7</strong><span>Testing GORM for
MongoDB</span></a>
+ </div>
+
</div>
@@ -3514,6 +3517,102 @@ dependencies {
</div>
+<h2 id="testingMongodb">15.7 Testing GORM for MongoDB</h2>
+
+<div class='contribute-btn'>
+ <button type='button' class='btn btn-default'
onclick='window.location.href="https://github.com/apache/grails-core/edit/8.0.x/grails-doc/src/en/guide/testing/testingMongodb.adoc"'>
+ <i class='fa fa-pencil-square-o'></i> Improve this doc
+ </button>
+</div>
+
+
+<div class="paragraph">
+<p>The <code>grails-testing-support-mongodb</code> library provides
Testcontainers-based MongoDB support for both unit and integration tests.</p>
+</div>
+<div class="paragraph">
+<p>When creating an application with <a href="https://start.grails.org">Grails
Forge</a>, select the <code>mongodb-testing-support</code> feature together
with <code>gorm-mongodb</code> or <code>mongo-sync</code> to include this
dependency automatically.</p>
+</div>
+<div class="sect1">
+<h2 id="_installation">Installation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Add the following dependency to your <code>build.gradle</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy">testImplementation
"org.apache.grails.testing:grails-testing-support-mongodb"</code></pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Docker must be available for Testcontainers to start a MongoDB container.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_unit_testing">Unit Testing</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Extend <code>org.apache.grails.testing.mongo.AutoStartedMongoSpec</code> in
unit tests. A MongoDB Testcontainers instance is started automatically and
injected into the specification.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="groovy"><span
class="keyword">import</span> <span
class="include">org.apache.grails.testing.mongo.AutoStartedMongoSpec</span>
+<span class="keyword">import</span> <span
class="include">org.grails.datastore.mapping.mongo.MongoDatastore</span>
+<span class="keyword">import</span> <span
class="include">spock.lang.Shared</span>
+
+<span class="type">class</span> <span class="class">BookSpec</span> <span
class="directive">extends</span> AutoStartedMongoSpec {
+
+ <span class="annotation">@Shared</span>
+ MongoDatastore mongoDatastore
+
+ <span class="type">void</span> <span class="string"><span
class="delimiter">"</span><span class="content">test mongo
connection</span><span class="delimiter">"</span></span>() {
+ <span class="key">expect</span>:
+ mongoHost
+ mongoPort
+ dbContainer.running
+ }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If a shared <code>MongoDatastore</code> field is declared and
<code>shouldInitializeDatastore()</code> returns <code>true</code> (the
default), the datastore is bootstrapped against domain classes in the packages
returned by <code>getMongoPackages()</code> (defaults to the package of the
specification).</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_integration_testing">Integration Testing</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>For integration tests, Spock global extensions start a single MongoDB
container for the test run when MongoDB is not already listening on port
<code>27017</code>. Connection details are exposed via system properties such
as <code>grails.mongodb.url</code>, <code>grails.mongodb.host</code>, and
<code>grails.mongodb.port</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_mongodb_container_version">MongoDB Container Version</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The MongoDB image version defaults to <code>7.0.19</code>. Override it with
the <code>mongodbContainerVersion</code> system property:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code
data-lang="groovy">tasks.withType(Test).configureEach {
+ systemProperty <span class="string"><span
class="delimiter">"</span><span
class="content">mongodbContainerVersion</span><span
class="delimiter">"</span></span>, <span class="string"><span
class="delimiter">"</span><span class="content">7.0.25</span><span
class="delimiter">"</span></span>
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
+
+
<div style="clear:both;margin-top:15px;"></div>
<div class="toc-item prev-left"><a
href="../guide/staticTypeCheckingAndCompilation.html"><<
<strong>14</strong><span>Static Type Checking And Compilation</span></a></div>
diff --git a/docs/snapshot/index.html b/docs/snapshot/index.html
index 82e9a528a44..6ae95f73e85 100644
--- a/docs/snapshot/index.html
+++ b/docs/snapshot/index.html
@@ -652,6 +652,8 @@ Companies deploy assistants like this [](https://kapa.ai)
on docs via [website w
<div class="toc-item" style="margin-left:10px"><a
href="./guide/testing.html#testPhases"><strong>15.6</strong><span>Custom Test
Phases</span></a></div>
+ <div class="toc-item" style="margin-left:10px"><a
href="./guide/testing.html#testingMongodb"><strong>15.7</strong><span>Testing
GORM for MongoDB</span></a></div>
+
<div class="toc-item" style="margin-left:0px"><a
href="./guide/bestPractices.html"><strong>16</strong><span>Building a
Successful Application</span></a></div>
<div class="toc-item" style="margin-left:10px"><a
href="./guide/bestPractices.html#codeAnalysisGroovy"><strong>16.1</strong><span>Code
Analysis and Styling for Groovy</span></a></div>