Skip to content

Commit

Permalink
feat: update documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
Yozhef committed Oct 10, 2024
1 parent 145236e commit 2b7c76a
Show file tree
Hide file tree
Showing 11 changed files with 198 additions and 88 deletions.
98 changes: 12 additions & 86 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,95 +8,21 @@ Symfony Behat Redis Context

Installation
============
[Installation Steps](docs/install.md)

Step 1: Download the Bundle
----------------------------------
Open a command console, enter your project directory and execute:

### Applications that use Symfony Flex [in progress](https://github.com/MacPaw/BehatRedisContext/issues/2)

```console
$ composer require --dev macpaw/behat-redis-context
```

### Applications that don't use Symfony Flex

Open a command console, enter your project directory and execute the
following command to download the latest stable version of this bundle:

```console
$ composer require --dev macpaw/behat-redis-context
```

This command requires you to have Composer installed globally, as explained
in the [installation chapter](https://getcomposer.org/doc/00-intro.md)
of the Composer documentation.


Then, enable the bundle by adding it to the list of registered bundles
in the `app/AppKernel.php` file of your project:

```php
<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
BehatRedisContextBundle\BehatRedisContextBundle::class => ['test' => true],
);

// ...
}

// ...
}
```

Create configuration for behat redis context:

`config/packages/test/behat_redis_context.yaml `
```yaml
behat_redis_context:
dataFixturesPath: ""
```
Step 2: Change path to directory with your fixtures
----------------------------------
`config/packages/test/behat_redis_context.yaml `
```yaml
behat_redis_context:
dataFixturesPath: "your path"
```

Step 3: Change path to directory with your fixtures
----------------------------------
`config/services_test.yaml`
```yaml
Predis\ClientInterface: 'Your Redis Client'
```

Example if you use [Symfony Redis Bundle](https://github.com/symfony-bundles/redis-bundle):
```yaml
Predis\ClientInterface: '@SymfonyBundles\RedisBundle\Redis\ClientInterface'
```
Documentation how use:
============
RedisContext:
* [How Check Any Value By Redis Key](docs/RedisContext/check-any-value-by-key.md)
* [How Check Array Value Store in Redis](docs/RedisContext/check-array.md)
* [How Check Key Exist in Redis](docs/RedisContext/check-key-exist.md)
* [How Check Serialized Value in Redis](docs/RedisContext/check-serialized-value.md)
* [How Check String Value in Redis](docs/RedisContext/check-value-in-redis.md)
* [How Clean Redis in Test](docs/RedisContext/clean-db.md)
* [How Store Serialized Value in Redis](docs/RedisContext/store-seralized-value.md)
* [How Store String Value in Redis](docs/RedisContext/store-string-value.md)

Step 4: Configure Behat
=============
Go to `behat.yml`

```yaml
...
contexts:
- BehatRedisContext\Context\RedisContext
- BehatRedisContext\Context\RedisFixturesContext
...
```

[main Build Status]: https://github.com/macpaw/BehatRedisContext/actions?query=workflow%3ACI+branch%3Amain
[main Build Status Image]: https://github.com/macpaw/BehatRedisContext/workflows/CI/badge.svg?branch=main
Expand Down
10 changes: 10 additions & 0 deletions docs/RedisContext/check-any-value-by-key.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Check Any Value in Redis

#### Step Definition:

This step checks if any value exists in Redis under a specified key.

#### Gherkin Example:

```gherkin
When I see in redis any value by key "testKey"
16 changes: 16 additions & 0 deletions docs/RedisContext/check-array.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
### Check an Array in Redis

#### Step Definition:

This step checks if the data stored in Redis as a hash matches the expected JSON structure.

#### Gherkin Example:

```gherkin
Then I see in redis array by key "arrayKey":
"""
{
"key1": "value1",
"key2": "value2"
}
"""
10 changes: 10 additions & 0 deletions docs/RedisContext/check-key-exist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Check the Absence of a Value in Redis

#### Step Definition:

This step checks that no exists under a specific key in Redis.

#### Gherkin Example:

```gherkin
When I don't see in redis key "testKey"
10 changes: 10 additions & 0 deletions docs/RedisContext/check-serialized-value.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Check a Serialized Value in Redis

#### Step Definition:

This step checks if a serialized value in Redis matches the expected value. It unserializes the value before comparing.

#### Gherkin Example:

```gherkin
When I see in redis serialized value "testSerializedValue" by key "serializedKey"
10 changes: 10 additions & 0 deletions docs/RedisContext/check-value-in-redis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Check a Value in Redis

#### Step Definition:

This step checks if a specific value exists in Redis under the specified key. If the value is missing or does not match, the step will throw an error.

#### Gherkin Example:

```gherkin
When I see in redis value "testValue" by key "testKey"
17 changes: 17 additions & 0 deletions docs/RedisContext/clean-db.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## Redis Database Cleanup

### Before Each Scenario

The Redis database is automatically flushed before each scenario using the `@BeforeScenario` hook. This ensures that each scenario starts with a clean database, preventing test pollution from previous scenarios.

#### Example Usage:

There is no specific Gherkin step required; this happens automatically before each test scenario.

### After Each Feature

After all scenarios in a feature are completed, the system performs garbage collection to free up memory.

#### Example Usage:

There is no specific Gherkin step required; this happens automatically after the last test in a feature.
10 changes: 10 additions & 0 deletions docs/RedisContext/store-seralized-value.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Save a Serialized Value to Redis

#### Step Definition:

This step serializes a value and saves it in Redis under the given key.

#### Gherkin Example:

```gherkin
When I save serialized value "testSerializedValue" to redis by "serializedKey"
10 changes: 10 additions & 0 deletions docs/RedisContext/store-string-value.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Save a String Value to Redis

#### Step Definition:

This step saves a string value in Redis with a specified key.

#### Gherkin Example:

```gherkin
When I save string value "testValue" to redis by "testKey"
91 changes: 91 additions & 0 deletions docs/install.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
Installation
============

Step 1: Download the Bundle
----------------------------------
Open a command console, enter your project directory and execute:

### Applications that use Symfony Flex [in progress](https://github.com/MacPaw/BehatRedisContext/issues/2)

```console
$ composer require --dev macpaw/behat-redis-context
```

### Applications that don't use Symfony Flex

Open a command console, enter your project directory and execute the
following command to download the latest stable version of this bundle:

```console
$ composer require --dev macpaw/behat-redis-context
```

This command requires you to have Composer installed globally, as explained
in the [installation chapter](https://getcomposer.org/doc/00-intro.md)
of the Composer documentation.


Then, enable the bundle by adding it to the list of registered bundles
in the `app/AppKernel.php` file of your project:

```php
<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
BehatRedisContextBundle\BehatRedisContextBundle::class => ['test' => true],
);

// ...
}

// ...
}
```

Create configuration for behat redis context:

`config/packages/test/behat_redis_context.yaml `
```yaml
behat_redis_context:
dataFixturesPath: ""
```
Step 2: Change path to directory with your fixtures
----------------------------------
`config/packages/test/behat_redis_context.yaml `
```yaml
behat_redis_context:
dataFixturesPath: "your path"
```

Step 3: Change path to directory with your fixtures
----------------------------------
`config/services_test.yaml`
```yaml
Predis\ClientInterface: 'Your Redis Client'
```

Example if you use [Symfony Redis Bundle](https://github.com/symfony-bundles/redis-bundle):
```yaml
Predis\ClientInterface: '@SymfonyBundles\RedisBundle\Redis\ClientInterface'
```

Step 4: Configure Behat
=============
Go to `behat.yml`

```yaml
...
contexts:
- BehatRedisContext\Context\RedisContext
- BehatRedisContext\Context\RedisFixturesContext
...
```
4 changes: 2 additions & 2 deletions src/Context/RedisContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@ public function iSeeInRedisValueByKey(string $value, string $key): void
}

/**
* @When /^I don't see in redis value by key "([^"]*)"$/
* @When /^I don't see in redis key "([^"]*)"$/
*/
public function iDontSeeInRedisValueByKey(string $key): void
public function iDontSeeInRedisKey(string $key): void

Check warning on line 87 in src/Context/RedisContext.php

View check run for this annotation

Codecov / codecov/patch

src/Context/RedisContext.php#L87

Added line #L87 was not covered by tests
{
$found = $this->redis->get($key);

Expand Down

0 comments on commit 2b7c76a

Please sign in to comment.