Get support for vincentchalamon/api-extension
If you're new to LTH, please see our FAQ for more information on what it is we do.
Support Options
Unfortunately, there are currently no active helpers for this repository on the platform. Until they become available, we reccomend the following actions:
View Open IssuesTake a look to see if anyone else has experienced the same issue as you and if they managed to solve it.
Open an IssueMake sure to read any relevant guidelines for opening issues on this repo before posting a new issue.
Sponsor directlyCheck out the page and see if there are any options to sponsor this project or it's developers directly.
vincentchalamon/api-extension
ApiExtension
This Behat extension requires following extensions, check their documentations for installation & usage:
This extension is just a shortcut to write some steps, it doesn't replace your custom steps. For instance, if you
want to test that updating a user updates its password, you still need to add a customer step like
And the user password has been successfully updated
.
Install
composer require --dev vincentchalamon/api-extension
Declare required extensions in your Behat configuration:
# behat.yml.dist
default:
# ...
suites:
default:
contexts:
- Behat\MinkExtension\Context\MinkContext
- Behatch\Context\RestContext
- Behatch\Context\JsonContext
- ApiExtension\Context\ApiContext
- ApiExtension\Context\FixturesContext
extensions:
Behat\Symfony2Extension:
kernel:
bootstrap: features/bootstrap/bootstrap.php
class: App\Kernel
Behat\MinkExtension:
base_url: 'http://www.example.com/'
sessions:
default:
symfony2: ~
Behatch\Extension: ~
# ...
ApiExtension: ~
Using custom guessers for populator
# behat.yml.dist
default:
# ...
extensions:
# ...
ApiExtension:
guessers:
- App\Populator\Guesser\AcustomGuesser
- App\Populator\Guesser\AnotherCustomGuesser
Usage with Symfony FrameworkBundle < 4.1
Running with Symfony FrameworkBundle < 4.1, you need to override some private services:
# config/services_test.yaml
# Hack for Behat: allow to inject some private services
services:
test.property_info:
parent: property_info
public: true
test.api_platform.metadata.resource.metadata_factory.annotation:
parent: api_platform.metadata.resource.metadata_factory.annotation
public: true
test.api_platform.iri_converter:
parent: api_platform.iri_converter
public: true
test.annotation_reader:
parent: annotation_reader
public: true
test.router:
parent: router
public: true
# behat.yml.dist
default:
# ...
extensions:
# ...
ApiExtension:
services:
metadataFactory: '@test.api_platform.metadata.resource.metadata_factory.annotation'
iriConverter: '@test.api_platform.iri_converter'
registry: '@doctrine'
propertyInfo: '@test.property_info'
annotationReader: '@test.annotation_reader'
router: '@test.router'
Usage
FixturesContext provides the following steps:
-
the following <name>
-
there is <nb> <name>
-
there is a <name>
-
there is an <name>
-
there are <nb> <name>
-
there are <name>
-
there are <nb> <name> with:
ApiContext provides the following steps:
-
I get a list of <name>
-
I get a list of <name> filtered by <filter>
-
I get a list of <name> ordered by <filter>
-
I create a <name>
-
I create an <name>
-
I create a <name> using group <serialization-group>
-
I create a <name> using groups <serialization-groups>
-
I create an <name> using group <serialization-group>
-
I create an <name> using groups <serialization-groups>
-
I create a <name> with:
-
I create an <name> with:
-
I create a <name> using group <serialization-group> with:
-
I create a <name> using groups <serialization-groups> with:
-
I create an <name> using group <serialization-group> with:
-
I create an <name> using groups <serialization-groups> with:
-
I get a <name>
-
I get an <name>
-
I get the <name> <value>
-
I delete a <name>
-
I delete an <name>
-
I delete the <name> <value>
-
I update a <name>
-
I update an <name>
-
I update the <name> <value>
-
I update a <name> with:
-
I update an <name> with:
-
I update the <name> <value> with:
-
the request is invalid
-
the <name> is not found
-
the method is not allowed
-
I see a <name>
-
I see an <name>
-
I see a list of <name>
-
I see a list of <nb> <name>
-
I don't see any <name>
-
print <name> list JSON schema
-
print <name> item JSON schema
-
print last JSON request
Example:
Feature: Using API-Platform, I can get, create, update & delete beers.
Scenario: I can get a list of beers
Given there are beers
When I get a list of beers
Then I see a list of beers
Scenario: I can get a list of beers filtered by name
Given there are beers
When I get a list of beers filtered by name=Chouffe
Then I don't see any beer
Scenario: I can create a beer
When I create a beer
Then I see a beer
Scenario: I can create a beer
When I create a beer with:
| name |
| Chouffe |
Then I see a beer
Scenario: I can update a beer
Given there is a beer
When I update a beer
Then I see a beer
Scenario: I can update a beer and fill its new name
Given there is a beer
When I update a beer with:
| name |
| Chouffe |
Then I see a beer
Scenario: I can update a beer by its name
Given the following beer:
| name |
| Chouffe |
When I update the beer Chouffe
Then I see a beer
Scenario: I can update a beer by its name and fill its new name
Given the following beer:
| name |
| Chouffe |
When I update the beer Chouffe with:
| name |
| Kwak |
Then I see a beer
Scenario: I can get a beer
Given there is a beer
When I get a beer
Then I see a beer
Scenario: I can get a beer by its name
Given the following beer:
| name |
| Chouffe |
When I get the beer Chouffe
Then I see a beer
Scenario: I cannot get a non-existing beer
When I get a beer
Then the beer is not found
Scenario: I can delete a beer
Given there is a beer
When I delete a beer
Then the beer has been successfully deleted
Scenario: I can delete a beer by its name
Given the following beer:
| name |
| Chouffe |
When I delete the beer Chouffe
Then the beer has been successfully deleted
Add faker provider
To use a custom faker provider from fzaninotto/Faker, update your Behat configuration as following:
# behat.yml.dist
default:
# ...
extensions:
# ...
ApiExtension:
# ...
providers:
- App\Faker\Provider\MiscellaneousProvider
Our Mission
We want to make open source more sustainable. The entire platform was born from this and everything we do is in aid of this.
From the Blog
Interesting Articles
-
Generating income from open source
Jun 23 • 8 min read
-
2023 State of OSS
Apr 23 • 45 min read ★
-
A funding experiment...
Aug 19 • 10 min read
-
But You Said I could
Aug 19 • 2 min read
Thank you for checking out LiveTechHelper |
2025 © lth-dev incorporated
p-e622a1a2