From ec43d3486c6496c135e8ba4d13e8e4c4a351e0f6 Mon Sep 17 00:00:00 2001 From: dmason30 Date: Thu, 24 Feb 2022 23:28:54 +0000 Subject: [PATCH] Fix exception for variables without context --- src/Generators/TestGenerator.php | 8 ++-- .../Feature/Generators/TestGeneratorTest.php | 1 + .../drafts/controllers-only-no-context.yaml | 8 ++++ .../tests/controllers-only-no-context.php | 48 +++++++++++++++++++ 4 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 tests/fixtures/drafts/controllers-only-no-context.yaml create mode 100644 tests/fixtures/tests/controllers-only-no-context.php diff --git a/src/Generators/TestGenerator.php b/src/Generators/TestGenerator.php index cbc8bb4c..3a975182 100644 --- a/src/Generators/TestGenerator.php +++ b/src/Generators/TestGenerator.php @@ -125,7 +125,7 @@ protected function buildTestCases(Controller $controller) $assertion .= ', function ($notification)'; foreach ($statement->data() as $data) { - if (Str::studly(Str::singular($data)) === $context) { + if (Str::studly(Str::singular($data)) === $context || ! Str::contains($data, '.')) { $variables[] .= '$' . $data; $conditions[] .= sprintf('$notification->%s->is($%s)', $data, $data); } else { @@ -166,7 +166,7 @@ protected function buildTestCases(Controller $controller) } foreach ($statement->data() as $data) { - if (Str::studly(Str::singular($data)) === $context) { + if (Str::studly(Str::singular($data)) === $context || ! Str::contains($data, '.')) { $variables[] .= '$' . $data; $conditions[] .= sprintf('$mail->%s->is($%s)', $data, $data); } else { @@ -262,7 +262,7 @@ protected function buildTestCases(Controller $controller) $assertion .= ', function ($job)'; foreach ($statement->data() as $data) { - if (Str::studly(Str::singular($data)) === $context) { + if (Str::studly(Str::singular($data)) === $context || ! Str::contains($data, '.')) { $variables[] .= '$' . $data; $conditions[] .= sprintf('$job->%s->is($%s)', $data, $data); } else { @@ -305,7 +305,7 @@ protected function buildTestCases(Controller $controller) $assertion .= ', function ($event)'; foreach ($statement->data() as $data) { - if (Str::studly(Str::singular($data)) === $context) { + if (Str::studly(Str::singular($data)) === $context || ! Str::contains($data, '.')) { $variables[] .= '$' . $data; $conditions[] .= sprintf('$event->%s->is($%s)', $data, $data); } else { diff --git a/tests/Feature/Generators/TestGeneratorTest.php b/tests/Feature/Generators/TestGeneratorTest.php index cb8e82f3..96356273 100644 --- a/tests/Feature/Generators/TestGeneratorTest.php +++ b/tests/Feature/Generators/TestGeneratorTest.php @@ -220,6 +220,7 @@ public function controllerTreeDataProvider() ['drafts/respond-statements.yaml', 'tests/Feature/Http/Controllers/Api/PostControllerTest.php', 'tests/respond-statements.php'], ['drafts/full-crud-example.yaml', 'tests/Feature/Http/Controllers/PostControllerTest.php', 'tests/full-crud-example.php'], ['drafts/model-reference-validate.yaml', 'tests/Feature/Http/Controllers/CertificateControllerTest.php', 'tests/api-shorthand-validation.php'], + ['drafts/controllers-only-no-context.yaml', 'tests/Feature/Http/Controllers/ReportControllerTest.php', 'tests/controllers-only-no-context.php'], ['drafts/call-to-a-member-function-columns-on-null.yaml', [ 'tests/Feature/Http/Controllers/SubscriptionControllerTest.php', 'tests/Feature/Http/Controllers/TelegramControllerTest.php', diff --git a/tests/fixtures/drafts/controllers-only-no-context.yaml b/tests/fixtures/drafts/controllers-only-no-context.yaml new file mode 100644 index 00000000..f99bf463 --- /dev/null +++ b/tests/fixtures/drafts/controllers-only-no-context.yaml @@ -0,0 +1,8 @@ +controllers: + Report: + invokable: + dispatch: GenerateReport with:event + fire: ExportReport with:event + notify: auth.user ReportGenerated with:event + send: SendReport with:event + render: report diff --git a/tests/fixtures/tests/controllers-only-no-context.php b/tests/fixtures/tests/controllers-only-no-context.php new file mode 100644 index 00000000..48bb863d --- /dev/null +++ b/tests/fixtures/tests/controllers-only-no-context.php @@ -0,0 +1,48 @@ +get(route('report.__invoke')); + + $response->assertOk(); + $response->assertViewIs('report'); + + Queue::assertPushed(GenerateReport::class, function ($job) use ($event) { + return $job->event->is($event); + }); + Event::assertDispatched(ExportReport::class, function ($event) use ($event) { + return $event->event->is($event); + }); + Notification::assertSentTo($auth->user, ReportGenerated::class, function ($notification) use ($event) { + return $notification->event->is($event); + }); + Mail::assertSent(SendReport::class, function ($mail) use ($event) { + return $mail->event->is($event); + }); + } +}