wakeonweb / behat-contexts
Provide some behat contexts
Installs: 150
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 1
Open Issues: 1
pkg:composer/wakeonweb/behat-contexts
Requires
- php: ^7.1
- behat/behat: ~3.0
README
Provide some simple behat contexts
default:
    suites:
        default:
            contexts:
                - WakeOnWeb\BehatContexts\AmqpContext:
                    transports: 
                        # I intentionally did not use syntax %env()% because BEHAT doesn't fully
                        # support this case since Behat and Symfony kernel are not the sames.
                        async_internal: "env(MESSENGER_TRANSPORT_ASYNC_INTERNAL_DSN)"
                        my_second_queue: "DIRECT_DSN"
                    # you can define your own Adapter, it musts implements \WakeOnWeb\BehatContexts\AmqpAdapter\AdapterInterface;
                    # adapterClass: \WakeOnWeb\BehatContexts\AmqpAdapter\SymfonyMessengerAdapter
                    # Create queues if they don't exist.
                    # setupQueuesAutomatically: 1
                - WakeOnWeb\BehatContexts\FidryAliceFixturesContext:
                    # optional
                    # default is %kernel.project_dir%/tests/fixtures
                    # basepath: /var/www/.... 
                - WakeOnWeb\BehatContexts\DoctrineORMSchemaReloadContext
                - WakeOnWeb\BehatContexts\HttpMockContext:
                    # basepath is %kernel.project_dir%/
                    # optional
                    # mockServers:                    
                        - {serverName: 'user', port: 8870, host: 'localhost', basePath: '/admin'}
                        - {serverName: 'mailer'}
                    # bodyRequestPath: tests/functional/fixtures/request (default)
                - WakeOnWeb\BehatContexts\SwaggerContext:
                    # basepath is %kernel.project_dir%/
                    # swaggerFile: doc/mySwaggerFile.yaml
                - WakeOnWeb\BehatContexts\FileContext:
                    # optional
                    # basePath: 'test/funtional/fixtures/file'
            paths:
                - tests/Features
AmqpContext
If feature/scenario has tag @amqp, it'll automatically remove messages in all queues defined on context.
FidryAliceFixturesContext
Needs AliceDataFixtures and its bundle to be installed.
DoctrineORMSchemaReloadContext
Needs [DoctrineBundle] to be installed.
If feature/scenario has tag @database, it'll automatically delete/create doctrine schema for all managers.
You have to create database before by yourself.
HttpMockContext
Needs BehatSymfony2Extension, InternationHttpMock
Configuration:
- mockServers: A mock server set up list. Only name is mandatory.
- bodyRequestPath: Base path for target json response file.
Usage:
You have two way for set up a list of mock.
- 
Configuration with tag Add your mocks in the suit configuration and use the @mockable tag on the feature or scenario. 
- 
Steps Use "I set up mock servers:" step and don't forget "I tear down mock servers" after use it. 
Steps available:
Given I set up mock servers:
    | name | port | host | basePath |
Then I tear down mock servers
Given A :method request on :path to the mock server :serverName must be return a :responseCode response
Given A :method request on :path to the mock server :serverName must be return a :responseCode response with content :body
Given A :method request on :path to the mock server :serverName must be return a :responseCode response with file :bodyFileName as content   
Given A :method request on path matching :regex to the mock server :serverName must be return a :responseCode response
Given A :method request on path matching :regex to the mock server :serverName must be return a :responseCode response with content :body
Given A :method request on path matching :regex to the mock server :serverName must be return a :responseCode response with file :bodyFileName as content
SwaggerContext
Needs: BehatSymfony2Extension, UbirakRestApiBehatExtension, SwaggerValidator,
How to use:
- Set the path of your yaml swagger file (V2 only) in the behat.yml file.
- Use the step after call the endpoint with UbirakRestApi
Steps available:
Then I validate Swagger response on :path with :method method and statusCode :statusCode
FileContext
Needs: BehatSymfony2Extension,
How to use:
- Set the base path of your fixture file folder (optional, default: tests/functional/fixtures/file)
- Use steps
- Use the @clean-files-after or @clean-files-before tag for clean file created with step "I create file in :path from :file"
- If the scenario generate files, you can clean it with step "I clean all files from folder :folder"
Steps available:
Given I create file in :path from :file
Then The file :file must be a copy of :fileExpected
Then One of file present in :path must be a copy of :fileExpected
Then The file :file size is less or equal to :size octet
Then The file :file size is equal to :size octet
Then The file :file mime type must be equal to :mimeType
Then The file :file mime type must be equal to one of following:
Then :number files must be present in folder :path
Then The file with name :fileName must be present in :path
Then I clean all files from folder :folder
Then I clean generated files