|  |  |  | @ -1,5 +1,6 @@ | 
			
		
	
		
			
				
					|  |  |  |  | package space.kklochko.simple_jbdd.tests.factories | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import space.kklochko.simple_jbdd.test_examples.tests.SimpleGivenGivenWhenWhenThenThenTest | 
			
		
	
		
			
				
					|  |  |  |  | import space.kklochko.simple_jbdd.test_examples.tests.SimpleGivenWhenThenTest | 
			
		
	
		
			
				
					|  |  |  |  | import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTest | 
			
		
	
		
			
				
					|  |  |  |  | import space.kklochko.simple_jbdd.test_examples.tests.SimpleThenTestWithoutTitle | 
			
		
	
	
		
			
				
					|  |  |  | @ -14,19 +15,27 @@ those tests check if factory generate them right. | 
			
		
	
		
			
				
					|  |  |  |  | """) | 
			
		
	
		
			
				
					|  |  |  |  | @Title("Unit tests for TestCommandFactory") | 
			
		
	
		
			
				
					|  |  |  |  | class TestCommandFactorySpec extends Specification { | 
			
		
	
		
			
				
					|  |  |  |  |     def "If the map of methods have one test block."() { | 
			
		
	
		
			
				
					|  |  |  |  |     def "The command have the same block count."() { | 
			
		
	
		
			
				
					|  |  |  |  |         given: "I have a TestCommandFactory object" | 
			
		
	
		
			
				
					|  |  |  |  |         @Subject | 
			
		
	
		
			
				
					|  |  |  |  |         def factory = new TestCommandFactory(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         and: "I also have a SimpleThenTest object" | 
			
		
	
		
			
				
					|  |  |  |  |         def simpleThenTest = new SimpleThenTest() | 
			
		
	
		
			
				
					|  |  |  |  |         when: "If a test command have blocks" | 
			
		
	
		
			
				
					|  |  |  |  |         def map = factory.getTestMethods(testClass.getClass()) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         when: "If a test have only one block" | 
			
		
	
		
			
				
					|  |  |  |  |         def map = factory.getTestMethods(simpleThenTest.getClass()) | 
			
		
	
		
			
				
					|  |  |  |  |         def count = map.values() | 
			
		
	
		
			
				
					|  |  |  |  |                 .stream() | 
			
		
	
		
			
				
					|  |  |  |  |                 .map {it.size()} | 
			
		
	
		
			
				
					|  |  |  |  |                 .reduce(0) { acc, num -> acc + num } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         then: "the map size is 1 method" | 
			
		
	
		
			
				
					|  |  |  |  |         1 == map.size() | 
			
		
	
		
			
				
					|  |  |  |  |         then: "the command have the expected block count" | 
			
		
	
		
			
				
					|  |  |  |  |         expectedBlockCount == count | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         where: | 
			
		
	
		
			
				
					|  |  |  |  |         testClass                                  || expectedBlockCount | 
			
		
	
		
			
				
					|  |  |  |  |         new SimpleThenTest()                       || 1 | 
			
		
	
		
			
				
					|  |  |  |  |         new SimpleGivenWhenThenTest()              || 3 | 
			
		
	
		
			
				
					|  |  |  |  |         new SimpleGivenGivenWhenWhenThenThenTest() || 6 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def "createTest() sets the title to a class name if no Title annotation."() { | 
			
		
	
	
		
			
				
					|  |  |  | @ -63,34 +72,22 @@ class TestCommandFactorySpec extends Specification { | 
			
		
	
		
			
				
					|  |  |  |  |         title == test.getLabels()['Title'] | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def "createTest() build a Test with only Then."() { | 
			
		
	
		
			
				
					|  |  |  |  |     def "createTest() build a TestCommand that contains the expected blocks."() { | 
			
		
	
		
			
				
					|  |  |  |  |         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 the expected blocks" | 
			
		
	
		
			
				
					|  |  |  |  |         expectedBlocks.toSet() == test.getLabels().keySet() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         then: "The test have title and then method" | 
			
		
	
		
			
				
					|  |  |  |  |         ['Title', 'Given', 'When', 'Then'].toSet() == test.getLabels().keySet() | 
			
		
	
		
			
				
					|  |  |  |  |         where: | 
			
		
	
		
			
				
					|  |  |  |  |         testClass                                  || expectedBlocks | 
			
		
	
		
			
				
					|  |  |  |  |         new SimpleThenTest()                       || ['Title', 'Then'] | 
			
		
	
		
			
				
					|  |  |  |  |         new SimpleGivenWhenThenTest()              || ['Title', 'Given', 'When', 'Then'] | 
			
		
	
		
			
				
					|  |  |  |  |         new SimpleGivenGivenWhenWhenThenThenTest() || ['Title', 'Given', 'When', 'Then'] | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |