diff --git a/api/src/main/groovy/com/jessebrault/ssg/SiteSpec.groovy b/api/src/main/groovy/com/jessebrault/ssg/SiteSpec.groovy index 50c29f3..10c248d 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/SiteSpec.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/SiteSpec.groovy @@ -15,8 +15,8 @@ final class SiteSpec { static SiteSpec concat(SiteSpec s0, SiteSpec s1) { new SiteSpec( - s0.name.blank ? s1.name : s0.name, - s0.baseUrl.blank ? s1.baseUrl : s0.baseUrl + s1.name.blank ? s0.name : s1.name, + s1.baseUrl.blank ? s0.baseUrl : s1.baseUrl ) } diff --git a/api/src/test/groovy/com/jessebrault/ssg/SiteSpecTests.groovy b/api/src/test/groovy/com/jessebrault/ssg/SiteSpecTests.groovy index 3f76afd..99dcd64 100644 --- a/api/src/test/groovy/com/jessebrault/ssg/SiteSpecTests.groovy +++ b/api/src/test/groovy/com/jessebrault/ssg/SiteSpecTests.groovy @@ -15,11 +15,11 @@ final class SiteSpecTests { } @Test - void ifName0NotBlankThenName0() { + void ifName1NotBlankThenName1() { def ss0 = new SiteSpec('ss0', '') def ss1 = new SiteSpec('ss1', '') def sum = ss0 + ss1 - assertEquals('ss0', sum.name) + assertEquals('ss1', sum.name) } @Test @@ -31,11 +31,11 @@ final class SiteSpecTests { } @Test - void ifBaseUrl0NotBlankThenBaseUrl0() { + void ifBaseUrl1NotBlankThenBaseUrl1() { def ss0 = new SiteSpec('', 'ss0') def ss1 = new SiteSpec('', 'ss1') def sum = ss0 + ss1 - assertEquals('ss0', sum.baseUrl) + assertEquals('ss1', sum.baseUrl) } } diff --git a/api/src/test/groovy/com/jessebrault/ssg/buildscript/BuildScriptBaseTests.groovy b/api/src/test/groovy/com/jessebrault/ssg/buildscript/BuildScriptBaseTests.groovy new file mode 100644 index 0000000..d3bbf6b --- /dev/null +++ b/api/src/test/groovy/com/jessebrault/ssg/buildscript/BuildScriptBaseTests.groovy @@ -0,0 +1,143 @@ +package com.jessebrault.ssg.buildscript + +import com.jessebrault.ssg.SiteSpec +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith +import org.mockito.Mock +import org.mockito.junit.jupiter.MockitoExtension + +import java.util.function.Function + +import static org.junit.jupiter.api.Assertions.assertEquals + +@ExtendWith(MockitoExtension) +final class BuildScriptBaseTests { + + private static Collection scriptToBuilds( + @DelegatesTo(value = BuildScriptBase, strategy = Closure.DELEGATE_FIRST) + Closure script + ) { + def s = new BuildScriptBase() { + + @Override + Object run() { + script.delegate = this + script.resolveStrategy = Closure.DELEGATE_FIRST + script() + } + + } + s.run() + s.getBuilds() + } + + @Test + void oneBuildWithName0() { + def r = scriptToBuilds { + build('test') { } + } + assertEquals(1, r.size()) + def b0 = r[0] + assertEquals('test', b0.name) + } + + @Test + void oneBuildWithName1() { + def r = scriptToBuilds { + build { + name = 'test' + } + } + assertEquals(1, r.size()) + def b0 = r[0] + assertEquals('test', b0.name) + } + + @Test + void oneBuildOutputDirWithFunction(@Mock Function mockOutputDirFunction) { + def r = scriptToBuilds { + build { + outputDirFunction = mockOutputDirFunction + } + } + assertEquals(1, r.size()) + def b0 = r[0] + assertEquals(mockOutputDirFunction, b0.outputDirFunction) + } + + @Test + void oneBuildOutputDirWithFile() { + def f = new File('test') + def r = scriptToBuilds { + build { + outputDir = f + } + } + assertEquals(1, r.size()) + def b0 = r[0] + assertEquals(f, b0.outputDirFunction.apply(b0).asFile()) + } + + @Test + void oneBuildOutputDirWithString() { + def r = scriptToBuilds { + build { + outputDir = 'test' + } + } + assertEquals(1, r.size()) + def b0 = r[0] + assertEquals('test', b0.outputDirFunction.apply(b0).path) + } + + @Test + void oneBuildSiteSpec() { + def r = scriptToBuilds { + build { + siteSpec { + name = 'testSite' + baseUrl = 'https://testsite.com' + } + } + } + assertEquals(1, r.size()) + def b0 = r[0] + assertEquals(new SiteSpec('testSite', 'https://testsite.com'), b0.siteSpec) + } + + @Test + void allBuildsProvidesSiteSpec() { + def r = scriptToBuilds { + allBuilds { + siteSpec { + name = 'testSite' + baseUrl = 'https://testsite.com' + } + } + build('test') { } + } + assertEquals(1, r.size()) + def b0 = r[0] + assertEquals(new SiteSpec('testSite', 'https://testsite.com'), b0.siteSpec) + } + + @Test + void allBuildsSiteSpecOverwritten() { + def r = scriptToBuilds { + allBuilds { + siteSpec { + name = 'no' + } + } + build { + siteSpec { + name = 'yes' + } + } + } + assertEquals(1, r.size()) + def b0 = r[0] + assertEquals(new SiteSpec('yes', ''), b0.siteSpec) + } + +}