diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/Build.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/Build.groovy index 55bbd0c..43bd3d5 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/Build.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/buildscript/Build.groovy @@ -63,7 +63,7 @@ final class Build { static Build concat(Build b0, Build b1) { new Build( - b1.name.blank ? b0.name : b1.name, + b0.name.blank ? b1.name : b0.name, OutputDirFunctions.concat(b0.outputDirFunction, b1.outputDirFunction), SiteSpec.concat(b0.siteSpec, b1.siteSpec), b0.globals + b1.globals, diff --git a/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDirFunctions.groovy b/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDirFunctions.groovy index 01fd39b..cf820dd 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDirFunctions.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/buildscript/OutputDirFunctions.groovy @@ -12,7 +12,7 @@ final class OutputDirFunctions { Function f0, Function f1 ) { - f1 == OutputDirFunctions.DEFAULT ? f0 : f1 + f0 == OutputDirFunctions.DEFAULT ? f1 : f0 } static Function of(File dir) { diff --git a/api/src/main/groovy/com/jessebrault/ssg/task/TaskFactorySpec.groovy b/api/src/main/groovy/com/jessebrault/ssg/task/TaskFactorySpec.groovy index eeaeca2..d765f1d 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/task/TaskFactorySpec.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/task/TaskFactorySpec.groovy @@ -4,6 +4,7 @@ import groovy.transform.EqualsAndHashCode import groovy.transform.NullCheck import groovy.transform.TupleConstructor +import java.util.function.BiFunction import java.util.function.Consumer import java.util.function.Supplier diff --git a/api/src/test/groovy/com/jessebrault/ssg/buildscript/BuildTests.groovy b/api/src/test/groovy/com/jessebrault/ssg/buildscript/BuildTests.groovy new file mode 100644 index 0000000..a114e54 --- /dev/null +++ b/api/src/test/groovy/com/jessebrault/ssg/buildscript/BuildTests.groovy @@ -0,0 +1,142 @@ +package com.jessebrault.ssg.buildscript + +import com.jessebrault.ssg.SiteSpec +import com.jessebrault.ssg.task.TaskFactory +import com.jessebrault.ssg.task.TaskFactorySpec +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 java.util.function.Supplier + +import static org.junit.jupiter.api.Assertions.assertEquals + +@ExtendWith(MockitoExtension) +final class BuildTests { + + @ExtendWith(MockitoExtension) + static final class AllBuildsTests { + + @Test + void twoEmptiesEqual() { + def ab0 = Build.AllBuilds.getEmpty() + def ab1 = Build.AllBuilds.getEmpty() + assertEquals(ab0, ab1) + } + + @Test + void siteSpecsAdded() { + def ab0 = new Build.AllBuilds( + new SiteSpec('test', ''), + [:], + [] + ) + def ab1 = new Build.AllBuilds( + new SiteSpec('', 'test'), + [:], + [] + ) + def sum = ab0 + ab1 + assertEquals(new SiteSpec('test', 'test'), sum.siteSpec) + } + + @Test + void globalsAdded() { + def ab0 = new Build.AllBuilds( + SiteSpec.getBlank(), + [a: 0], + [] + ) + def ab1 = new Build.AllBuilds( + SiteSpec.getBlank(), + [b: 1], + [] + ) + def sum = ab0 + ab1 + assertEquals([a: 0, b: 1], sum.globals) + } + + @Test + void taskFactorySpecsAdded(@Mock Supplier taskFactorySupplier) { + def spec0 = new TaskFactorySpec<>(taskFactorySupplier, []) + def spec1 = new TaskFactorySpec<>(taskFactorySupplier, []) + def ab0 = new Build.AllBuilds( + SiteSpec.getBlank(), + [:], + [spec0] + ) + def ab1 = new Build.AllBuilds( + SiteSpec.getBlank(), + [:], + [spec1] + ) + def sum = ab0 + ab1 + assertEquals([spec0, spec1], sum.taskFactorySpecs) + } + + } + + @Test + void twoEmptiesEqual() { + def b0 = Build.getEmpty() + def b1 = Build.getEmpty() + assertEquals(b0, b1) + } + + @Test + void ifName0BlankTakeName1() { + def b0 = Build.get(name: '') + def b1 = Build.get(name: 'test') + def sum = b0 + b1 + assertEquals('test', sum.name) + } + + @Test + void ifName0NotBlankTakeName0() { + def b0 = Build.get(name: 'b0') + def b1 = Build.get(name: 'b1') + def sum = b0 + b1 + assertEquals('b0', sum.name) + } + + @Test + void ifOutputDirFunction0DefaultTake1(@Mock Function b1OutputDirFunction) { + def b0 = Build.get(outputDirFunction: OutputDirFunctions.DEFAULT) + def b1 = Build.get(outputDirFunction: b1OutputDirFunction) + def sum = b0 + b1 + assertEquals(b1OutputDirFunction, sum.outputDirFunction) + } + + @Test + void siteSpecsAdded() { + def b0 = Build.get( + siteSpec: new SiteSpec('test', '') + ) + def b1 = Build.get( + siteSpec: new SiteSpec('', 'test') + ) + def sum = b0 + b1 + assertEquals(new SiteSpec('test', 'test'), sum.siteSpec) + } + + @Test + void globalsAdded() { + def b0 = Build.get(globals: [a: 0]) + def b1 = Build.get(globals: [b: 1]) + def sum = b0 + b1 + assertEquals([a: 0, b: 1], sum.globals) + } + + @Test + void taskFactorySpecsAdded(@Mock Supplier taskFactorySupplier) { + def spec0 = new TaskFactorySpec<>(taskFactorySupplier, []) + def spec1 = new TaskFactorySpec<>(taskFactorySupplier, []) + def b0 = Build.get(taskFactorySpecs: [spec0]) + def b1 = Build.get(taskFactorySpecs: [spec1]) + def sum = b0 + b1 + assertEquals([spec0, spec1], sum.taskFactorySpecs) + } + +}