https://github.com/wieni/wmmodel_factory
Define factories that allow you to generate entities with certain fields, filled with random data
https://github.com/wieni/wmmodel_factory
Last synced: 3 months ago
JSON representation
Define factories that allow you to generate entities with certain fields, filled with random data
- Host: GitHub
- URL: https://github.com/wieni/wmmodel_factory
- Owner: wieni
- License: mit
- Created: 2020-02-28T10:18:20.000Z (about 5 years ago)
- Default Branch: release/v1
- Last Pushed: 2024-01-07T10:20:07.000Z (over 1 year ago)
- Last Synced: 2025-01-27T16:49:27.430Z (4 months ago)
- Language: PHP
- Size: 43.9 KB
- Stars: 0
- Watchers: 9
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
wmmodel_factory
======================[](https://packagist.org/packages/wieni/wmmodel_factory)
[](https://packagist.org/packages/wieni/wmmodel_factory)
[](https://packagist.org/packages/wieni/wmmodel_factory)> Define factories that allow you to generate entities with certain fields,
> filled with random data## Why?
- The built-in way to generate random entities, `ContentEntityStorageInterface::createWithSampleValues`, is lacking in a lot of ways: it is untested, has a lot of issues and is not very flexible.
- Use the same API as [Laravel's model factories](https://laravel.com/docs/master/database-testing#writing-factories)
- Generate realistic content tailored to the entity type using the [Faker](https://github.com/fzaninotto/Faker) library.## Installation
This package requires PHP 7.1 and Drupal 8 or higher. It can be
installed using Composer:```bash
composer require wieni/wmmodel_factory
```## How does it work?
### Creating factories
Factories are the classes responsible for generating the data that will be
used to fill the fields of the newly created entity.
Factories for certain entity type / bundle combinations can be added by
creating plugins with the `@EntityFactory` annotation, defining the entity
type ID in the `entity_type` parameter and the bundle in the `bundle`
parameter. The class should also implement the `EntityFactoryInterface`
interface.It's also possible to create multiple factories for the same entity type /
bundle combination by giving them unique names through the `name`
annotation parameter.#### Example
```php
$this->faker->sentence(4),
'menu_link' => null,
'field_meta' => [
'entity' => $this->faker->entity(Meta::class),
],
'field_intro' => $this->faker->optional()->text(320),
];
}
}
```### Creating states
States allow you to define discrete modifications that can be applied to
your model factories in any combination. For example, your Page model might
have an `unpublished` state that modifies one of its default attribute values.
States for certain entity type / bundle combinations can be added by
creating plugins with the `@EntityState` annotation, defining the entity
type ID in the `entity_type` parameter, the bundle in the `bundle`
parameter and a unique name in the `name` parameter. The class should also
implement the `EntityStateInterface` interface.#### Example
```php
0,
];
}
}
```### Generating entities
_TODO_## Changelog
All notable changes to this project will be documented in the
[CHANGELOG](CHANGELOG.md) file.## Security
If you discover any security-related issues, please email
[[email protected]](mailto:[email protected]) instead of using the issue
tracker.## License
Distributed under the MIT License. See the [LICENSE](LICENSE) file
for more information.