Skip to content

Commit

Permalink
Merge branch '2.0'
Browse files Browse the repository at this point in the history
* 2.0:
  Bringing 2.0 up to date with 1.0 changes from #10
  • Loading branch information
codemedic committed Jun 17, 2016
2 parents e311315 + e924e85 commit c533202
Show file tree
Hide file tree
Showing 7 changed files with 672 additions and 80 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"type": "library",
"require": {
"php": ">=5.4.0",
"codeception/codeception": "~2.1"
"codeception/codeception": "~2.1.0"
},
"license": "MIT",
"authors": [
Expand Down
68 changes: 0 additions & 68 deletions examples/tests/_data/dump.sql

This file was deleted.

463 changes: 463 additions & 0 deletions examples/tests/_data/primary.sql

Large diffs are not rendered by default.

125 changes: 125 additions & 0 deletions examples/tests/_data/secondary.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
-- schema

--
-- Table structure for table `Audit`
--

CREATE TABLE IF NOT EXISTS `DemoWarehouse`.`Audit` (
`OrganisationID` int(10) unsigned NOT NULL,
`UserID` int(10) unsigned DEFAULT NULL,
`Time` datetime NOT NULL,
`JSON` text NOT NULL,

KEY `UserID` (`UserID`),
KEY `OrganisationID` (`OrganisationID`),
KEY `Time` (`Time`)
);

ALTER TABLE `Audit`
ADD FOREIGN KEY (`OrganisationID`) REFERENCES `DemoConfig`.`Organisation`(`ID`)
ON DELETE CASCADE ON UPDATE CASCADE;

-- data

-- `DemoWarehouse`.`Audit`
INSERT INTO `DemoWarehouse`.`Audit` VALUES
(1,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(2,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(3,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(4,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(5,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(6,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(7,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(8,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(9,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(10,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(11,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(12,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(13,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(14,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(15,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(16,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(17,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(18,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(19,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(20,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(21,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(22,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(23,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(24,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(25,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(26,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(27,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(28,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(29,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(30,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(31,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(32,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(33,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(34,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(35,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(36,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(37,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(38,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(39,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(40,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(41,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(42,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(43,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(44,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(45,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(46,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(47,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(48,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(49,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(50,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(51,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(52,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(53,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(54,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(55,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(56,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(57,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(58,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(59,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(60,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(61,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(62,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(63,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(64,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(65,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(66,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(67,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(68,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(69,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(70,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(71,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(72,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(73,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(74,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(75,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(76,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(77,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(78,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(79,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(80,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(81,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(82,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(83,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(84,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(85,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(86,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(87,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(88,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(89,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(90,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(91,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(92,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(93,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(94,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(95,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(96,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(97,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(98,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(99,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}'),
(100,NULL,'2016-06-17 12:35:59','{\"Description\": \"Organisation created\", \"OrderNumber\": 15371}');
18 changes: 12 additions & 6 deletions examples/tests/acceptance.suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,16 @@ modules:
Codeception\Extension\MultiDb:
connectors:
Primary:
dsn: "mysql:host=server1.db.example.com;port=3306;dbname=Config"
user: 'demo_primary'
password: ''
dsn: "mysql:host=primary.db.example.com;port=3306;dbname=DemoConfig"
user: 'demo'
password: 'notsecure'
dump: 'tests/_data/primary.sql'
populate: true
cleanup: true
Secondary:
dsn: "mysql:host=server2.db.example.com;port=3306;dbname=Warehouse"
user: 'demo_secondary'
password: ''
dsn: "mysql:host=secondary.db.example.com;port=3306;dbname=DemoWarehouse"
user: 'demo'
password: 'notsecure'
dump: 'tests/_data/secondary.sql'
populate: true
cleanup: true
11 changes: 6 additions & 5 deletions examples/tests/acceptance/DemoCest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public function demo(AcceptanceTester $I)

private function createOrganisation(AcceptanceTester $I, array $details = [])
{
return $I->haveInDb('Config.Organisation', array_merge([
return $I->haveInDb('DemoConfig.Organisation', array_merge([
'Name' => $this->faker->name.' & Co. Ltd.',
'Address' => str_replace("\n", ', ', $this->faker->address),
'Active' => 'YES'
Expand All @@ -42,7 +42,7 @@ private function createOrganisation(AcceptanceTester $I, array $details = [])

private function createUser(AcceptanceTester $I, array $details = [])
{
return $I->haveInDb('Config.User', array_merge([
return $I->haveInDb('DemoConfig.User', array_merge([
'Name' => $this->faker->name,
'Email' => $this->faker->email,
'Address' => str_replace("\n", ', ', $this->faker->address),
Expand All @@ -56,7 +56,7 @@ private function createUserPassword(AcceptanceTester $I, $user_id, $password = n
$password = $this->faker->password;
}

$I->haveInDb('Config.UserPassword', [
$I->haveInDb('DemoConfig.UserPassword', [
'UserID' => $user_id,
'Hash' => sha1($password, true),
'CreatedAt' => '@asis NOW()',
Expand All @@ -66,10 +66,11 @@ private function createUserPassword(AcceptanceTester $I, $user_id, $password = n

private function createAudit(AcceptanceTester $I, $organisation_id, $user_id, array $data)
{
$I->haveInDb('Warehouse.Audit', [
$I->haveInDb('DemoWarehouse.Audit', [
'OrganisationID'=>$organisation_id,
'UserID'=>$user_id,
'JSON'=>json_encode($data)
'JSON'=>json_encode($data),
'Time'=>'@asis NOW()'
], 'OrganisationID', $organisation_id);
}
}
65 changes: 65 additions & 0 deletions src/Codeception/Extension/MultiDb.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

namespace Codeception\Extension;

use Codeception\Configuration;
use Codeception\Exception\TestRuntimeException;
use Codeception\Extension\MultiDb\Utils\AsIs;
use Codeception\Extension\MultiDb\Utils\CleanupAction;
Expand Down Expand Up @@ -85,6 +86,70 @@ public function _initialize()
$this->timezone = $this->config['timezone'];

parent::_initialize();

foreach ($this->config['connectors'] as $connector => $connectorConfig) {
if ($connectorConfig['populate']) {
if ($connectorConfig['cleanup']) {
$this->cleanup($connector);
}
$this->loadDump($connector);
}
}
}

/**
* Load SQL dump for a connector
*
* @param string $connector
*
* @throws ModuleConfigException
* @throws ModuleException
*/
protected function loadDump($connector)
{
$config = $this->config['connectors'][$connector];

if ($config['dump'] && ($config['cleanup'] || $config['populate'])) {
if (!file_exists(Configuration::projectDir() . $config['dump'])) {
throw new ModuleConfigException(
__CLASS__,
"\n{$connector} - Dump file doesn't exist. Please check path: {$config['dump']}"
);
}
$sql = file_get_contents(Configuration::projectDir() . $config['dump']);
// remove any comments of the form /* ... */
$sql = preg_replace('%/\*(?!!\d+)(?:(?!\*/).)*\*/%s', '', $sql);
if ($sql) {
$sql = explode("\n", $sql);
}

try {
$this->debugSection(__CLASS__, "{$connector} - Loading dump from {$config['dump']}");
$this->getDriver($connector)->load($sql);
} catch (\PDOException $e) {
throw new ModuleException(
__CLASS__,
$e->getMessage() . "\nSQL query being executed: " . $sql
);
}
}
}

/**
* Cleanup databases
*
* @param $connector
*
* @throws ModuleException
*/
protected function cleanup($connector)
{
try {
$this->debugSection(__CLASS__, "$connector - Cleaning up");
$this->getDriver($connector)->cleanup();
} catch (\Exception $e) {
throw new ModuleException(__CLASS__, $e->getMessage());
}
}

// HOOK: before scenario
Expand Down

0 comments on commit c533202

Please sign in to comment.