Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save musketyr/26649d2abddb246d335a9f2d94204150 to your computer and use it in GitHub Desktop.

Select an option

Save musketyr/26649d2abddb246d335a9f2d94204150 to your computer and use it in GitHub Desktop.
[sc188309] Spock to JUnit 5 Migration Diff - AnalyticsAccountUtilsSpec
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Spock → JUnit 5 Migration Diff: AnalyticsAccountUtilsSpec → AnalyticsAccountUtilsTest</title>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 1400px; margin: 0 auto; padding: 20px; background: #f5f5f5; }
h1 { color: #333; border-bottom: 2px solid #0366d6; padding-bottom: 10px; }
h2 { color: #24292e; background: #fff; padding: 15px; margin: 30px 0 0 0; border-radius: 6px 6px 0 0; border: 1px solid #e1e4e8; border-bottom: none; }
.diff-container { display: flex; gap: 0; margin-bottom: 30px; }
.diff-side { flex: 1; overflow-x: auto; }
.diff-side h3 { margin: 0; padding: 10px 15px; font-size: 14px; }
.spock h3 { background: #ffeef0; color: #cb2431; border: 1px solid #e1e4e8; border-bottom: none; }
.junit h3 { background: #e6ffed; color: #22863a; border: 1px solid #e1e4e8; border-bottom: none; border-left: none; }
pre { margin: 0; padding: 15px; font-size: 13px; line-height: 1.5; overflow-x: auto; border: 1px solid #e1e4e8; }
.spock pre { background: #fff5f5; border-radius: 0 0 0 6px; }
.junit pre { background: #f0fff4; border-radius: 0 0 6px 0; border-left: none; }
code { font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; }
.summary { background: #fff; padding: 20px; border-radius: 6px; margin-bottom: 30px; border: 1px solid #e1e4e8; }
.summary ul { margin: 10px 0; padding-left: 25px; }
.story-link { color: #0366d6; text-decoration: none; }
.story-link:hover { text-decoration: underline; }
</style>
</head>
<body>
<h1>🔄 Spock → JUnit 5 Migration</h1>
<div class="summary">
<strong>Story:</strong> <a class="story-link" href="https://app.shortcut.com/agorapulse/story/188309">[sc188309] [Commons] Migrate AnalyticsAccountUtilsSpec to JUnit 5</a><br>
<strong>Epic:</strong> <a class="story-link" href="https://app.shortcut.com/agorapulse/epic/188306">188306 - Get rid of spock (analytics/commons)</a><br>
<strong>File:</strong> <code>analytics/commons/backend/libs/lib-commons-utils/src/test/.../AnalyticsAccountUtilsSpec.groovy</code> → <code>AnalyticsAccountUtilsTest.java</code>
<h3>Migration Summary</h3>
<ul>
<li>Converted 6 Spock test methods to JUnit 5 @Test methods</li>
<li>No mocks needed - simple utility method tests</li>
<li>Used fluent builder pattern for AccountSummary construction (Java style)</li>
<li>Added // given/when/then comments to maintain BDD structure</li>
<li>Renamed methods to camelCase: shouldDoSomething() pattern</li>
</ul>
</div>
<h2>Test 1: shouldReturnNullWhenAccountIsNull</h2>
<div class="diff-container">
<div class="diff-side spock">
<h3>❌ Spock (removed)</h3>
<pre><code>void "get account display name - no account"() {
when:
String name = AnalyticsAccountUtils.getDisplayName(null)
then:
name == null
}</code></pre>
</div>
<div class="diff-side junit">
<h3>✅ JUnit 5 (added)</h3>
<pre><code>@Test
void shouldReturnNullWhenAccountIsNull() {
// when
String name = AnalyticsAccountUtils.getDisplayName(null);
// then
assertNull(name);
}</code></pre>
</div>
</div>
<h2>Test 2: shouldReturnAliasWhenAliasIsPresent</h2>
<div class="diff-container">
<div class="diff-side spock">
<h3>❌ Spock (removed)</h3>
<pre><code>void "get account display name - alias"() {
given:
AccountSummary account = new AccountSummary(
alias: 'a',
screenName: 's',
name: 'n',
username: 'u'
)
when:
String name = AnalyticsAccountUtils.getDisplayName(account)
then:
name == 'a'
}</code></pre>
</div>
<div class="diff-side junit">
<h3>✅ JUnit 5 (added)</h3>
<pre><code>@Test
void shouldReturnAliasWhenAliasIsPresent() {
// given
AccountSummary account = new AccountSummary()
.alias("a")
.screenName("s")
.name("n")
.username("u");
// when
String name = AnalyticsAccountUtils.getDisplayName(account);
// then
assertEquals("a", name);
}</code></pre>
</div>
</div>
<h2>Test 3: shouldReturnScreenNameWhenAliasIsEmpty</h2>
<div class="diff-container">
<div class="diff-side spock">
<h3>❌ Spock (removed)</h3>
<pre><code>void "get account name - screenName"() {
given:
AccountSummary account = new AccountSummary(
alias: '',
screenName: 's',
name: 'n',
username: 'u'
)
when:
String name = AnalyticsAccountUtils.getDisplayName(account)
then:
name == 's'
}</code></pre>
</div>
<div class="diff-side junit">
<h3>✅ JUnit 5 (added)</h3>
<pre><code>@Test
void shouldReturnScreenNameWhenAliasIsEmpty() {
// given
AccountSummary account = new AccountSummary()
.alias("")
.screenName("s")
.name("n")
.username("u");
// when
String name = AnalyticsAccountUtils.getDisplayName(account);
// then
assertEquals("s", name);
}</code></pre>
</div>
</div>
<h2>Test 4: shouldReturnNameWhenAliasIsNullAndScreenNameIsEmpty</h2>
<div class="diff-container">
<div class="diff-side spock">
<h3>❌ Spock (removed)</h3>
<pre><code>void "get account name - name"() {
given:
AccountSummary account = new AccountSummary(
alias: null,
screenName: '',
name: 'n',
username: 'u'
)
when:
String name = AnalyticsAccountUtils.getDisplayName(account)
then:
name == 'n'
}</code></pre>
</div>
<div class="diff-side junit">
<h3>✅ JUnit 5 (added)</h3>
<pre><code>@Test
void shouldReturnNameWhenAliasIsNullAndScreenNameIsEmpty() {
// given
AccountSummary account = new AccountSummary()
.alias(null)
.screenName("")
.name("n")
.username("u");
// when
String name = AnalyticsAccountUtils.getDisplayName(account);
// then
assertEquals("n", name);
}</code></pre>
</div>
</div>
<h2>Test 5: shouldReturnEmptyStringWhenNameIsEmpty</h2>
<div class="diff-container">
<div class="diff-side spock">
<h3>❌ Spock (removed)</h3>
<pre><code>void "get account name - empty"() {
given:
AccountSummary account = new AccountSummary(
alias: null,
screenName: null,
name: '',
username: 'u'
)
when:
String name = AnalyticsAccountUtils.getDisplayName(account)
then:
name == ''
}</code></pre>
</div>
<div class="diff-side junit">
<h3>✅ JUnit 5 (added)</h3>
<pre><code>@Test
void shouldReturnEmptyStringWhenNameIsEmpty() {
// given
AccountSummary account = new AccountSummary()
.alias(null)
.screenName(null)
.name("")
.username("u");
// when
String name = AnalyticsAccountUtils.getDisplayName(account);
// then
assertEquals("", name);
}</code></pre>
</div>
</div>
<h2>Test 6: shouldReturnEmptyStringWhenNameIsNull</h2>
<div class="diff-container">
<div class="diff-side spock">
<h3>❌ Spock (removed)</h3>
<pre><code>void "get account name - empty 2"() {
given:
AccountSummary account = new AccountSummary(
alias: null,
screenName: null,
name: null,
username: 'u'
)
when:
String name = AnalyticsAccountUtils.getDisplayName(account)
then:
name == ''
}</code></pre>
</div>
<div class="diff-side junit">
<h3>✅ JUnit 5 (added)</h3>
<pre><code>@Test
void shouldReturnEmptyStringWhenNameIsNull() {
// given
AccountSummary account = new AccountSummary()
.alias(null)
.screenName(null)
.name(null)
.username("u");
// when
String name = AnalyticsAccountUtils.getDisplayName(account);
// then
assertEquals("", name);
}</code></pre>
</div>
</div>
</body>
</html>
</code></pre>
</div>
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment