From 9e9529c320bb9eec74ab5f91f367b948bab25e38 Mon Sep 17 00:00:00 2001 From: Kamil Kokot Date: Tue, 12 Feb 2019 22:56:16 +0100 Subject: [PATCH] Add tests for context initializers --- ...ction.feature => mink_integration.feature} | 2 +- ...tegration_with_context_initializer.feature | 78 ------------------- .../context_initializer_compatibility.feature | 71 +++++++++++++++++ 3 files changed, 72 insertions(+), 79 deletions(-) rename features/mink_integration/{mink_integration_with_dependency_injection.feature => mink_integration.feature} (98%) delete mode 100644 features/mink_integration/mink_integration_with_context_initializer.feature create mode 100644 features/sanity_checks/context_initializer_compatibility.feature diff --git a/features/mink_integration/mink_integration_with_dependency_injection.feature b/features/mink_integration/mink_integration.feature similarity index 98% rename from features/mink_integration/mink_integration_with_dependency_injection.feature rename to features/mink_integration/mink_integration.feature index 3318d94..fbe9290 100644 --- a/features/mink_integration/mink_integration_with_dependency_injection.feature +++ b/features/mink_integration/mink_integration.feature @@ -1,4 +1,4 @@ -Feature: Mink integration with dependency injection +Feature: Mink integration Background: Given a working Symfony application with SymfonyExtension configured diff --git a/features/mink_integration/mink_integration_with_context_initializer.feature b/features/mink_integration/mink_integration_with_context_initializer.feature deleted file mode 100644 index e2264c6..0000000 --- a/features/mink_integration/mink_integration_with_context_initializer.feature +++ /dev/null @@ -1,78 +0,0 @@ -Feature: Mink integration with context initializer - - Scenario: Passing Mink instance and parameters through context initializer - Given a working Symfony application with SymfonyExtension configured - And a Behat configuration containing: - """ - default: - extensions: - Behat\MinkExtension: - base_url: "http://localhost:8080/" - default_session: symfony - sessions: - symfony: - symfony: ~ - suites: - default: - contexts: - - App\Tests\SomeContext - """ - And a feature file containing: - """ - Feature: - Scenario: - When I visit the page "/hello-world" - Then I should see "Hello world!" on the page - And the base url from Mink parameters should be "http://localhost:8080/" - - # Doubling the scenario to account for some weird error connected to Mink's session - Scenario: - When I visit the page "/hello-world" - Then I should see "Hello world!" on the page - And the base url from Mink parameters should be "http://localhost:8080/" - """ - And a context file "tests/SomeContext.php" containing: - """ - mink = $mink; - } - - public function setMinkParameters(array $minkParameters): void - { - $this->parameters = $minkParameters; - } - - /** @When I visit the page :page */ - public function visitPage(string $page): void - { - $this->mink->getSession()->visit($page); - } - - /** @Then I should see :content on the page */ - public function shouldSeeContentOnPage(string $content): void - { - assert(false !== strpos($this->mink->getSession()->getPage()->getContent(), $content)); - } - - /** @Then the base url from Mink parameters should be :expected */ - public function baseUrlShouldBe(string $expected): void - { - assert(isset($this->parameters['base_url'])); - assert($this->parameters['base_url'] === $expected); - } - } - """ - When I run Behat - Then it should pass diff --git a/features/sanity_checks/context_initializer_compatibility.feature b/features/sanity_checks/context_initializer_compatibility.feature new file mode 100644 index 0000000..df545f2 --- /dev/null +++ b/features/sanity_checks/context_initializer_compatibility.feature @@ -0,0 +1,71 @@ +Feature: Context initializer compatibility + + Scenario: Using class resolvers while handling context environment + Given a working Symfony application with SymfonyExtension configured + And a Behat configuration containing: + """ + default: + extensions: + FriendsOfBehat\ServiceContainerExtension: + imports: + - "tests/context_initializer.yml" + + suites: + default: + contexts: + - App\Tests\SomeContext + """ + And a Behat services definition file "tests/context_initializer.yml" containing: + """ + services: + App\Tests\CustomContextInitializer: + tags: ["context.initializer"] + """ + And a Behat service implementation file "tests/CustomContextInitializer.php" containing: + """ + makeItPass(true); + } + } + """ + And a feature file containing: + """ + Feature: + Scenario: + Then it should pass + """ + And a context file "tests/SomeContext.php" containing: + """ + shouldPass = $shouldPass; + } + + /** @Then it should pass */ + public function itShouldPass(): void + { + assert($this->shouldPass === true); + } + } + """ + When I run Behat + Then it should pass