Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add reset message queues before scenario #41

Open
wants to merge 22 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
a001716
Add reset message queues before scenario
serhiidonii Oct 20, 2024
f22f90d
Merge branch 'develop' into feat/add-in-memory-transport-reset-before…
Yozhef Oct 20, 2024
3ebc30d
Add reset message queues before scenario
serhiidonii Oct 20, 2024
eb8a3ec
Add reset message queues before scenario
serhiidonii Oct 20, 2024
12e944d
Add reset message queues before scenario
serhiidonii Oct 20, 2024
7ca6e7f
Add reset message queues before scenario
serhiidonii Oct 20, 2024
47b11a3
Add reset message queues before scenario
serhiidonii Oct 20, 2024
7916391
Add reset message queues before scenario
serhiidonii Oct 20, 2024
fe61e0a
Add reset message queues before scenario
serhiidonii Oct 20, 2024
42396f5
Add reset message queues before scenario
serhiidonii Oct 20, 2024
3be5013
Add reset message queues before scenario
serhiidonii Oct 20, 2024
1ec1e8f
Add reset message queues before scenario
serhiidonii Oct 20, 2024
1640b33
Add reset message queues before scenario
serhiidonii Oct 20, 2024
ab34cbb
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Oct 20, 2024
d10f1b7
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Oct 20, 2024
af563da
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Oct 20, 2024
bf48975
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Oct 20, 2024
5307f6d
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Nov 18, 2024
4e57a79
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Nov 18, 2024
ec8e8ef
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Nov 18, 2024
a747b43
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Nov 18, 2024
e242316
Add reset message queues before scenario with zentruck/messenger-test
serhiidonii Nov 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ jobs:
- '6.3.*'
- '6.4.*'
- '7.0.*'
- '7.1.*'
include:
- php: '8.2'
coverage: 'xdebug'
symfony-versions: '7.0.*'
symfony-versions: '7.1.*'


name: PHP ${{ matrix.php }} Symfony ${{ matrix.symfony-versions }} ${{ matrix.description }}
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@
/node_modules/
/.idea/
/package-lock.json
/reports
/clover.xml
21 changes: 17 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
# Behat Messenger Context Bundle
[![Latest Stable Version](http://poser.pugx.org/macpaw/behat-messenger-context/v)](https://packagist.org/packages/macpaw/behat-messenger-context)
[![Total Downloads](http://poser.pugx.org/macpaw/behat-messenger-context/downloads)](https://packagist.org/packages/macpaw/behat-messenger-context)
[![Latest Unstable Version](http://poser.pugx.org/macpaw/behat-messenger-context/v/unstable)](https://packagist.org/packages/macpaw/behat-messenger-context)
[![License](http://poser.pugx.org/macpaw/behat-messenger-context/license)](https://packagist.org/packages/macpaw/behat-messenger-context)
[![PHP Version Require](http://poser.pugx.org/macpaw/behat-messenger-context/require/php)](https://packagist.org/packages/macpaw/behat-messenger-context)

| Version | Build Status | Coverage |
|------------|------------------------------------------------------------|--------------------------------------------------------------------------|
| `master` | [![CI][master Build Status Image]][master Build Status] | [![Coverage Status][master Code Coverage Image]][master Code Coverage] |
| `develop` | [![CI][develop Build Status Image]][develop Build Status] | [![Coverage Status][develop Code Coverage Image]][develop Code Coverage] |

| Version | Build Status | Code Coverage |
|:---------:|:-------------:|:-----:|
| `master`| [![CI][master Build Status Image]][master Build Status] | [![Coverage Status][master Code Coverage Image]][master Code Coverage] |
| `develop`| [![CI][develop Build Status Image]][develop Build Status] | [![Coverage Status][develop Code Coverage Image]][develop Code Coverage] |

This repository provides custom Behat step definitions for working with Symfony Messenger transports. It includes functionality for checking messages in transports, validating them against expected JSON structures, and working with variable fields.

Expand All @@ -26,9 +32,16 @@ You can use regular expressions to validate messages that contain dynamic or var
* Documentation for specific message: [Check Transport Message with Regexp](docs/MessengerContext/check_transport_message_regexp.md)
* Documentation for all messages: [Check All Transport Messages with Regexp](docs/MessengerContext/check_all_transport_message_regexp.md)

### Check Every Messages with Mask Regular Expressions
You can use regular expression to validate all messages messages that contain dynamic or variable data.
* Documentation for all specific message: [Check Transport Messages with Regexp](docs/MessengerContext/check_transport_messages_regexp_mask.md)

### Verify Message Count in a Transport
Ensure that a specific number of messages exist in a given transport.

### Auto clean queue messages before scenario
Check details in [documentation](docs/MessengerContext/clear_transport_with_zentruck.md)

* Documentation: [Count Messages in Transport](docs/MessengerContext/count_message_transport.md)

[master Build Status]: https://github.com/macpaw/behat-messenger-context/actions?query=workflow%3ACI+branch%3Amaster
Expand Down
3 changes: 3 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@
"slevomat/coding-standard": "^7.0",
"squizlabs/php_codesniffer": "^3.6"
},
"suggest": {
"zenstruck/messenger-test": "To use Zentruck messages clearing"
},
"autoload": {
"psr-4": {
"BehatMessengerContext\\": "src"
Expand Down
1 change: 1 addition & 0 deletions docs/MessengerContext/check_transport_message_regexp.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# Behat Custom Step: Transport JSON Message Assertion with Regexp Fields

This documentation outlines the purpose and usage of the custom Behat step definition for verifying if a Symfony Messenger transport contains a message with a specific JSON structure, using regular expressions to handle dynamic fields.

## Purpose

This function is designed to check if a given transport (such as an asynchronous queue) contains a message that matches a particular JSON structure, while allowing certain fields to be validated using regular expressions. It is particularly useful when testing messages with dynamic data, such as timestamps, unique identifiers, or payloads, where the exact value cannot be guaranteed.
Expand Down
37 changes: 37 additions & 0 deletions docs/MessengerContext/check_transport_messages_regexp_mask.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@

# Behat Custom Step: Transport JSON Message Assertion with Regexp Fields

This documentation outlines the purpose and usage of the custom Behat step definition for verifying if a Symfony Messenger transport contains a message with a specific JSON mask for every message, using regular expressions to handle dynamic fields.

## Purpose

This function is designed to check if a given transport (such as an asynchronous queue) contains a message that matches a message with a specific JSON mask for every message, while allowing certain fields to be validated using regular expressions. It is particularly useful when testing messages with dynamic data, such as timestamps, unique identifiers, or payloads, where the exact value cannot be guaranteed.
## Function Overview

### Signature:
```php
/**
* @Then all transport :transportName messages have JSON by :fields with mask :mask:
*/
public function allTransportMessagesHaveJsonByFieldsWithMask(
string $transportName,
string $variableFields,
PyStringNode $expectedMessageList,
): void {
```

### Parameters:
- `transportName` (string): The name of the transport (e.g., 'webhook') where the message is expected to be found.
- `variableFields` (string): A comma-separated list of field names where values should be matched using regular expressions.
- `expectedMessage` (PyStringNode): The expected message content in JSON format, where fields marked with `~` in their values will be treated as regular expressions.

```gherkin
And all transport "webhook" messages should contain message with JSON and variable fields "time, payload" by mask:
"""
{
"event": "customer_agreement_status_updated",
"time": "~^\\d{13}$",
"payload": "~^\\{.*\\}$"
}
"""
```
58 changes: 58 additions & 0 deletions docs/MessengerContext/clear_transport.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Clean with in-memory transport
Switch all your queue to in-memory transport

example:

```yaml
# config/packages/messenger.yaml

# ...

when@test:
framework:
messenger:
transports:
async: in-memory://
some-another: in-memory://
# ...
```

All this transport will be cleared automatically before start every scenario.

# Clear queues messages before scenario with zentruck

We also support auto clear message queue with [zenstruck/messenger-test](https://github.com/zenstruck/messenger-test)

## Installation

1. Install the library:

```bash
composer require --dev zenstruck/messenger-test
```
2. If not added automatically by Symfony Flex, add the bundle in `config/bundles.php`:

```php
Zenstruck\Messenger\Test\ZenstruckMessengerTestBundle::class => ['test' => true],
```

3. Update `config/packages/messenger.yaml` and override your transport(s)
in your `test` environment with `test://`:

```yaml
# config/packages/messenger.yaml

# ...

when@test:
framework:
messenger:
transports:
async: test://
```

More details you can see in [origin package repository](https://github.com/zenstruck/messenger-test)

> **Note**:Zentruck will be used automatically after installation.


2 changes: 1 addition & 1 deletion phpcs.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,5 @@
<rule ref="Squiz.Arrays.ArrayBracketSpacing"/>

<file>src/</file>
<file>tests/</file>
<file>tests/Unit</file>
</ruleset>
1 change: 1 addition & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ parameters:
excludes_analyse:
paths:
- src
- tests/Unit
level: 5
treatPhpDocTypesAsCertain: false
2 changes: 1 addition & 1 deletion phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
stopOnFailure="false">
<testsuites>
<testsuite name="Symfony Behat Context Test Suite">
<directory>tests</directory>
<directory>tests/Unit</directory>
</testsuite>
</testsuites>
<coverage>
Expand Down
Loading
Loading