Skip to content

Commit d9ae133

Browse files
committed
More tests + fixes
1 parent bf361fc commit d9ae133

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

src/Exercise/ASafeSpaceForNulls.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ class ASafeSpaceForNulls extends AbstractExercise implements
3838
FileComparisonExerciseCheck,
3939
SelfCheck
4040
{
41+
42+
private ?Patch $patch = null;
43+
4144
public function __construct(private Parser $parser, private FakerGenerator $faker)
4245
{
4346
}
@@ -69,6 +72,11 @@ public function configure(ExerciseDispatcher $dispatcher): void
6972

7073
public function getPatch(): Patch
7174
{
75+
if ($this->patch) {
76+
return $this->patch;
77+
}
78+
79+
7280
$factory = new BuilderFactory();
7381

7482
$statements = [];
@@ -158,7 +166,7 @@ public function getPatch(): Patch
158166
}
159167
}
160168

161-
return (new Patch())
169+
return $this->patch = (new Patch())
162170
->withTransformer(function (array $originalStatements) use ($statements) {
163171
return array_merge($statements, $originalStatements);
164172
});

test/Exercise/ASafeSpaceForNullsTest.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,20 @@ public function testFailureWhenCsvNotCorrect(): void
103103

104104
$this->assertVerifyWasNotSuccessful();
105105

106-
$this->assertResultsHasFailure(
107-
Failure::class,
108-
'File: "users.csv" does not exist'
106+
$this->assertResultsHasFailureAndMatches(
107+
FileComparisonFailure::class,
108+
function (FileComparisonFailure $failure) {
109+
self::assertEquals('users.csv', $failure->getFileName());
110+
111+
return true;
112+
}
109113
);
114+
}
115+
116+
public function testWithCorrectSolution(): void
117+
{
118+
$this->runExercise('correct-solution.php');
110119

111-
// $this->assertResultsHasFailureAndMatches(
112-
// FileComparisonFailure::class,
113-
// function (FileComparisonFailure $failure) {
114-
// self::assertEquals('users.csv', $failure->getFileName());
115-
//
116-
// return true;
117-
// }
118-
// );
120+
$this->assertVerifyWasSuccessful();
119121
}
120122
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php
2+
3+
$fp = fopen('users.csv', 'w+');
4+
fputcsv($fp, ['First Name', 'Last Name', 'Age', 'House num', 'Addr 1', 'Addr 2']);
5+
fputcsv($fp, [$user->firstName, $user->lastName, $user?->age, $user?->address?->number, $user?->address?->addressLine1, $user?->address?->addressLine2]);
6+
fclose($fp);

0 commit comments

Comments
 (0)