diff --git a/src/Exercise/Scenario/CgiScenario.php b/src/Exercise/Scenario/CgiScenario.php new file mode 100644 index 00000000..30dd1ad4 --- /dev/null +++ b/src/Exercise/Scenario/CgiScenario.php @@ -0,0 +1,28 @@ + + */ + private array $executions = []; + + public function withExecution(RequestInterface $request): self + { + $this->executions[] = $request; + + return $this; + } + + /** + * @return array + */ + public function getExecutions(): array + { + return $this->executions; + } +} diff --git a/src/Exercise/Scenario/CliScenario.php b/src/Exercise/Scenario/CliScenario.php new file mode 100644 index 00000000..88b57d09 --- /dev/null +++ b/src/Exercise/Scenario/CliScenario.php @@ -0,0 +1,31 @@ +> + */ + private array $executions = []; + + /** + * @param array $args + */ + public function withExecution(array $args = []): static + { + $this->executions[] = new Collection($args); + + return $this; + } + + /** + * @return array> + */ + public function getExecutions(): array + { + return $this->executions; + } +} diff --git a/src/Exercise/Scenario/ExerciseScenario.php b/src/Exercise/Scenario/ExerciseScenario.php new file mode 100644 index 00000000..4d6a595a --- /dev/null +++ b/src/Exercise/Scenario/ExerciseScenario.php @@ -0,0 +1,26 @@ + + */ + private array $files = []; + + public function withFile(string $relativeFileName, string $content): static + { + $this->files[$relativeFileName] = $content; + + return $this; + } + + /** + * @return array + */ + public function getFiles(): array + { + return $this->files; + } +} diff --git a/test/Exercise/Scenario/CgiScenarioTest.php b/test/Exercise/Scenario/CgiScenarioTest.php new file mode 100644 index 00000000..4c0782ca --- /dev/null +++ b/test/Exercise/Scenario/CgiScenarioTest.php @@ -0,0 +1,39 @@ +createMock(RequestInterface::class); + $requestTwo = $this->createMock(RequestInterface::class); + + $scenario = (new CgiScenario()) + ->withFile('file1.txt', 'content1') + ->withFile('file2.txt', 'content2') + ->withExecution($requestOne) + ->withExecution($requestTwo); + + static::assertEquals( + [ + 'file1.txt' => 'content1', + 'file2.txt' => 'content2', + ], + $scenario->getFiles() + ); + + static::assertEquals( + [ + $requestOne, + $requestTwo + ], + $scenario->getExecutions() + ); + } +} diff --git a/test/Exercise/Scenario/CliScenarioTest.php b/test/Exercise/Scenario/CliScenarioTest.php new file mode 100644 index 00000000..1ea86a9a --- /dev/null +++ b/test/Exercise/Scenario/CliScenarioTest.php @@ -0,0 +1,38 @@ +withFile('file1.txt', 'content1') + ->withFile('file2.txt', 'content2') + ->withExecution(['arg1', 'arg2']) + ->withExecution(['arg3', 'arg4']); + + static::assertEquals( + [ + 'file1.txt' => 'content1', + 'file2.txt' => 'content2', + ], + $scenario->getFiles() + ); + + static::assertEquals( + [ + ['arg1', 'arg2'], + ['arg3', 'arg4'], + ], + array_map( + fn (Collection $collection) => $collection->getArrayCopy(), + $scenario->getExecutions() + ) + ); + } +}