Transmogrifier
Database fixture library, commmand-line tools and Behat vocab. If you are a tester, you need this :-)
Install / Use
/learn @linkorb/TransmogrifierREADME
Transmogrifier
<img src="http://www.linkorb.com/d/online/linkorb/upload/transmogrifier.gif" align="right" />Transmogrifier is a tool to help setup your database fixtures before running your tests.
You can use it in the following ways:
- As a simple command-line utility (great for your build scripts and continuous integration)
- As a PHP library
- As a Behat extension, enabling Gherkin statements for automated BDD database testing
1. Command-line utility
You can use Transmogrifier as a command-line utility (stand-alone, or as part of your PHP project through composer).
Standalone
- clone this git repository
- run
composer installto install all dependencies - run
bin/transmogrifier --helpfor a list of available commands
Through composer, in your PHP project:
Open your composer.json file, and add this to the require section:
"linkorb/transmogrifier": "dev-master"
You can now run vendor/bin/transmogrifier.
Adding transmogrifier commands to an existing Symfony/Console application
Add the following line to an existing Symfony/Console application in order to enable the Transmogrifier commands to it:
$application->add(new \LinkORB\Transmogrifier\Command\DatasetApplyCommand());
Available commands
transmogrifier:datasetapply
The most interesting usage through the command-line is the transmogrifier:applydataset command.
You can use it like this:
bin/transmogrifier transmogrifier:applydataset --dbname=test example/user.yml
This command will ensure that the dbname database contains the dataset specified in example/user.yml
2. PHP Library
You can use the Transmogrifier very easily from within your own PHP projects as a library.
Installing the library through composer
pen your composer.json file, and add this to the require section:
"linkorb/transmogrifier": "dev-master"
How to use the library
The 2 main classes are:
Dataset: A class that can load datasets from files, and apply them to databases.Database: A connection to a database, providing helpers for initializing the connection.
Here's an example usage:
$db = new Database();
// Optionally initialize db parameters by file, cli options, or explicit values
$db->parseConf('/path/to/my/dbconf/test.conf');
$db->connect();
$dataset = new Dataset();
$dataset->loadDatasetFile('/path/to/my/dataset.yml');
$dataset->applyTo($db);
3. Behat Extension
There is a Transmogrifier Extension available for Behat!
This allows you to use Transmogrifier directly from your Behat .feature files.
Check out the extension and it's documentation here:
Supported file-formats
The dataset importer is based on phpunit/dbunit. It currently supports the following file-formats:
- YAML
- Flat XML
- XML
- CSV
The Dataset loader guesses the format based on the file-extension.
Please refer to the example/ directory for datasets in these formats.
The PHPUnit documentation contains further information about the loaders:
Database .conf files
To simplify connecting to your database, Transmogrify can load conneciton settings from a simple .conf file.
An example file looks like this:
name=test
server=127.0.0.1
username=susie
password=mrbun
driver=mysql
You can use these .conf files in all Transmogrifier modes: Command-line, Behat, or library.
The connection is established through PDO, so all PDO supported databases will work.
Example datasets
The examples/ directory contains a few datasets you can use to try out Transmogrifier,
see how it works, and copy as a starting-point for your own datasets.
Create the schema
The examples will ensure 2 users, 'Calvin' and 'Hobbes', are registed in your user table.
Before you can try these out, use the following SQL to generate the user table in your test database:
CREATE TABLE user (id int, name varchar(16), email varchar(32), password varchar(32));
Brought to you by the LinkORB Engineering team
<img src="http://www.linkorb.com/d/meta/tier1/images/linkorbengineering-logo.png" width="200px" /><br /> Check out our other projects at linkorb.com/engineering.
Btw, we're hiring!
Related Skills
feishu-drive
342.5k|
things-mac
342.5kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
342.5kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
postkit
PostgreSQL-native identity, configuration, metering, and job queues. SQL functions that work with any language or driver
