--- layout: doc title: Sequence - Codeception - Documentation ---
Sequence solves data cleanup issue in alternative way. Instead cleaning up the database between tests, you can use generated unique names, that should not conflict. When you create article on a site, for instance, you can assign it a unique name and then check it. This module has no actions, but introduces a function `sq` for generating unique sequences within test and `sqs` for generating unique sequences across suite. #### Usage Function `sq` generates sequence, the only parameter it takes, is id. You can get back to previously generated sequence using that id: {% highlight php %} {% endhighlight %} Example: {% highlight php %} wantTo('create article'); $I->click('New Article'); $I->fillField('Title', 'Article'.sq('name')); $I->fillField('Body', 'Demo article with Lorem Ipsum'); $I->click('save'); $I->see('Article'.sq('name') ,'#articles') ?> {% endhighlight %} Populating Database: {% highlight php %} haveInDatabase('users', array('login' => 'user'.sq($i), 'email' => 'user'.sq($i).'@email.com'); } ?> {% endhighlight %} Cest Suite tests: {% highlight php %} createUser('email' . sqs('user') . '@mailserver.com', sqs('login'), sqs('pwd')); } public function checkEmail(AcceptanceTester $I) { $I->seeInEmailTo('email' . sqs('user') . '@mailserver.com', sqs('login')); } public function removeUser(AcceptanceTester $I) { $I->removeUser('email' . sqs('user') . '@mailserver.com'); } } ?> {% endhighlight %}