<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Testcontainers - Tag - Simon Jakubowski</title><link>https://sijakubo.github.io/info/tags/testcontainers/</link><description>Testcontainers - Tag - Simon Jakubowski</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>sijakubo@gmail.com ( Simon Jakubowski)</managingEditor><webMaster>sijakubo@gmail.com ( Simon Jakubowski)</webMaster><lastBuildDate>Tue, 18 Oct 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://sijakubo.github.io/info/tags/testcontainers/" rel="self" type="application/rss+xml"/><item><title>Testcontainers | Postgres: Postgis with Spring and Spock</title><link>https://sijakubo.github.io/info/posts/post-5/</link><pubDate>Tue, 18 Oct 2022 00:00:00 +0000</pubDate><author>sijakubo@gmail.com ( Simon Jakubowski)</author><guid>https://sijakubo.github.io/info/posts/post-5/</guid><description><![CDATA[<p>A great way to include all the required resources for integration tests, <a href="https://www.testcontainers.org/">Testcontainers</a> provides an easy way to start docker containers from within your testcode. This removes the necessity to create test <code>docker-compose.yml</code> files and write <code>README.md</code> code on how to even run a test.</p>
<p>Here is a short example using testcontainers with Spring and Spock on a Postgis / Postgres database.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-groovy" data-lang="groovy"><span class="line"><span class="cl"><span class="nd">@SpringBootTest</span>
</span></span><span class="line"><span class="cl"><span class="nd">@AutoConfigureMockMvc</span>
</span></span><span class="line"><span class="cl"><span class="nd">@AutoConfigureTestDatabase</span><span class="o">(</span><span class="n">replace</span> <span class="o">=</span> <span class="n">AutoConfigureTestDatabase</span><span class="o">.</span><span class="na">Replace</span><span class="o">.</span><span class="na">NONE</span><span class="o">)</span>
</span></span><span class="line"><span class="cl"><span class="nd">@ContextConfiguration</span><span class="o">(</span><span class="n">initializers</span> <span class="o">=</span> <span class="o">[</span><span class="n">Initializer</span><span class="o">.</span><span class="na">class</span><span class="o">])</span>
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">FieldControllerTest</span> <span class="kd">extends</span> <span class="n">IntegrationTest</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="nd">@Shared</span>
</span></span><span class="line"><span class="cl">  <span class="kd">public</span> <span class="kd">static</span> <span class="n">JdbcDatabaseContainer</span> <span class="n">postgreSQLContainer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">PostgisContainerProvider</span><span class="o">()</span>
</span></span><span class="line"><span class="cl">    <span class="o">.</span><span class="na">newInstance</span><span class="o">()</span>
</span></span><span class="line"><span class="cl">    <span class="o">.</span><span class="na">withDatabaseName</span><span class="o">(</span><span class="s2">&#34;integration-tests-db&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="o">.</span><span class="na">withUsername</span><span class="o">(</span><span class="s2">&#34;sa&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="o">.</span><span class="na">withPassword</span><span class="o">(</span><span class="s2">&#34;sa&#34;</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="kd">static</span> <span class="kd">class</span> <span class="nc">Initializer</span> <span class="kd">implements</span> <span class="n">ApplicationContextInitializer</span><span class="o">&lt;</span><span class="n">ConfigurableApplicationContext</span><span class="o">&gt;</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="kt">void</span> <span class="nf">initialize</span><span class="o">(</span><span class="n">ConfigurableApplicationContext</span> <span class="n">configurableApplicationContext</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">      <span class="n">postgreSQLContainer</span><span class="o">.</span><span class="na">start</span><span class="o">()</span>
</span></span><span class="line"><span class="cl">      <span class="n">TestPropertyValues</span><span class="o">.</span><span class="na">of</span><span class="o">(</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;spring.datasource.url=&#34;</span> <span class="o">+</span> <span class="n">postgreSQLContainer</span><span class="o">.</span><span class="na">getJdbcUrl</span><span class="o">(),</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;spring.datasource.username=&#34;</span> <span class="o">+</span> <span class="n">postgreSQLContainer</span><span class="o">.</span><span class="na">getUsername</span><span class="o">(),</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;spring.datasource.password=&#34;</span> <span class="o">+</span> <span class="n">postgreSQLContainer</span><span class="o">.</span><span class="na">getPassword</span><span class="o">()</span>
</span></span><span class="line"><span class="cl">      <span class="o">).</span><span class="na">applyTo</span><span class="o">(</span><span class="n">configurableApplicationContext</span><span class="o">.</span><span class="na">getEnvironment</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">    <span class="o">}</span>
</span></span><span class="line"><span class="cl">  <span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="nd">@Autowired</span>
</span></span><span class="line"><span class="cl">  <span class="n">MockMvc</span> <span class="n">mockMvc</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="nd">@Autowired</span>
</span></span><span class="line"><span class="cl">  <span class="n">FieldRepository</span> <span class="n">fieldRepository</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="kt">void</span> <span class="nf">setup</span><span class="o">()</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">fieldRepository</span><span class="o">.</span><span class="na">save</span><span class="o">(</span><span class="k">new</span> <span class="n">Field</span><span class="o">(</span>
</span></span><span class="line"><span class="cl">      <span class="n">UUID</span><span class="o">.</span><span class="na">fromString</span><span class="o">(</span><span class="s1">&#39;ad68f894-c16b-4953-b577-7cddb3e85ae5&#39;</span><span class="o">),</span> <span class="s2">&#34;initSampleField&#34;</span><span class="o">,</span>
</span></span><span class="line"><span class="cl">      <span class="k">new</span> <span class="nf">Polygon</span><span class="o">(</span>
</span></span><span class="line"><span class="cl">        <span class="n">PositionSequenceBuilders</span><span class="o">.</span><span class="na">variableSized</span><span class="o">(</span><span class="n">G2D</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">          <span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="mf">5.8208837124389</span><span class="o">,</span> <span class="mf">51.0596004663904</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">          <span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="mf">5.83490292265498</span><span class="o">,</span> <span class="mf">51.0571257015788</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">          <span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="mf">5.87078646658134</span><span class="o">,</span> <span class="mf">51.0451607414904</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">          <span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="mf">5.79146302423308</span><span class="o">,</span> <span class="mf">51.0612386272784</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">          <span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="mf">5.8208837124389</span><span class="o">,</span> <span class="mf">51.0596004663904</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">          <span class="o">.</span><span class="na">toPositionSequence</span><span class="o">(),</span>
</span></span><span class="line"><span class="cl">        <span class="n">CoordinateReferenceSystems</span><span class="o">.</span><span class="na">WGS84</span>
</span></span><span class="line"><span class="cl">      <span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="o">))</span>
</span></span><span class="line"><span class="cl">  <span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="o">...</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>To integrate testcontainers into your project, you&rsquo;ll need the following dependencies:</p>]]></description></item></channel></rss>