Add the create method for the TestCommandFactory.

This commit is contained in:
2023-09-23 21:43:56 +03:00
parent 6a3d7f4f42
commit efb644e6a9
2 changed files with 114 additions and 4 deletions
@@ -1,12 +1,22 @@
package space.kklochko.simple_jbdd.tests.factories
import space.kklochko.simple_jbdd.test_examples.tests.SimpleGivenWhenThenTest
import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTest
import space.kklochko.simple_jbdd.tests.factories.TestCommandFactory;
import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTestWithoutTitle
import space.kklochko.simple_jbdd.tests.factories.TestCommandFactory
import spock.lang.Narrative;
import spock.lang.Specification
import spock.lang.Subject
import spock.lang.Title
@Narrative("""The factory must generate a test command, so
those tests check if factory generate them right.
""")
@Title("Unit test for TestCommandFactory")
class TestCommandFactorySpec extends Specification {
def "If the map of methods have one test block."() {
given: "I have a TestCommandFactory object"
@Subject
def factory = new TestCommandFactory();
and: "I also have a SimpleThenTest object"
@@ -18,5 +28,69 @@ class TestCommandFactorySpec extends Specification {
then: "the map size is 1 method"
1 == map.size()
}
def "createTest() sets the title to a class name if no Title annotation."() {
given: "I have a test factory"
@Subject
def factory = new TestCommandFactory()
and: "I have a test class without Title"
def testClass = new SimpleThenTestWithoutTitle()
when: "I build a test"
def test = factory.create(testClass)
then: "The test have title as the test class"
testClass.class.getName() == test.getLabels()['Title']
}
def "createTest() sets the title to a value of the Title annotation."() {
given: "I have a test factory"
@Subject
def factory = new TestCommandFactory()
and: "I have a test class with Title"
def testClass = new SimpleThenTest()
and: "and the title of the annotation"
def titleClass = space.kklochko.simple_jbdd.annotations.Title.class
def title = testClass.getClass().getAnnotation(titleClass).value()
when: "I build a test"
def test = factory.create(testClass)
then: "The test have title as the test class"
title == test.getLabels()['Title']
}
def "createTest() build a Test with only Then."() {
given: "I have a test factory"
@Subject
def factory = new TestCommandFactory()
and: "I have a test class with Title"
def testClass = new SimpleThenTest()
when: "I build a test"
def test = factory.create(testClass)
then: "The test have title and then method"
['Title', 'Then'].toSet() == test.getLabels().keySet()
}
def "createTest() build a Test with Given-When-Then."() {
given: "I have a test factory"
@Subject
def factory = new TestCommandFactory()
and: "I have a test class with Title and Given-When-Then"
def testClass = new SimpleGivenWhenThenTest()
when: "I build a test"
def test = factory.create(testClass)
then: "The test have title and then method"
['Title', 'Given', 'When', 'Then'].toSet() == test.getLabels().keySet()
}
}