Skip to content

Commit

Permalink
Add isdefault to environment
Browse files Browse the repository at this point in the history
  • Loading branch information
goten4 committed Jul 31, 2014
1 parent 5c719d9 commit 0ff3ddd
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 25 deletions.
3 changes: 2 additions & 1 deletion data/migrations/mysql/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ CREATE TABLE `users` (
DROP TABLE IF EXISTS `environments`;
CREATE TABLE `environments` (
`id` INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(256)
`name` VARCHAR(256),
`isdefault` TINYINT NOT NULL DEFAULT 0
);

DROP TABLE IF EXISTS `environments_paths`;
Expand Down
3 changes: 2 additions & 1 deletion data/migrations/postgresql/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ CREATE TABLE users (
DROP TABLE IF EXISTS environments;
CREATE TABLE environments (
id SERIAL PRIMARY KEY,
name VARCHAR(256)
name VARCHAR(256),
isdefault SMALLINT NOT NULL DEFAULT 0
);

DROP TABLE IF EXISTS environments_paths;
Expand Down
3 changes: 2 additions & 1 deletion data/migrations/sqlite/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ CREATE TABLE `users` (
DROP TABLE IF EXISTS `environments`;
CREATE TABLE `environments` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`name` VARCHAR(256)
`name` VARCHAR(256),
`isdefault` TINYINT NOT NULL DEFAULT 0
);

DROP TABLE IF EXISTS `environments_paths`;
Expand Down
2 changes: 2 additions & 0 deletions src/KmbZendDbInfrastructure/Model/EnvironmentHydrator.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public function extract($object)
$data['id'] = $object->getId();
}
$data['name'] = $object->getName();
$data['isdefault'] = $object->isDefault() ? 1 : 0;
return $data;
}

Expand All @@ -52,6 +53,7 @@ public function hydrate(array $data, $object)
{
$object->setId($data['id']);
$object->setName($data['name']);
$object->setDefault($data['isdefault'] == 1);
return $object;
}
}
5 changes: 5 additions & 0 deletions src/KmbZendDbInfrastructure/Service/EnvironmentRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,11 @@ function (UserInterface $user) use ($aggregateRoot) {
);
$connection = $this->getDbAdapter()->getDriver()->getConnection()->beginTransaction();
try {
$initDefault = $this->getMasterSql()->update($this->getTableName())->set([
'isdefault' => 0
]);
$this->performWrite($initDefault);

parent::update($aggregateRoot);

$delete = $this->getMasterSql()->delete('environments_users');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ public function canExtract()
$environment = new Environment();
$environment->setId(1);
$environment->setName('STABLE');
$environment->setDefault(true);
$hydrator = new EnvironmentHydrator();

$this->assertEquals([
'id' => 1,
'name' => 'STABLE'
'name' => 'STABLE',
'isdefault' => 1
], $hydrator->extract($environment));
}

Expand All @@ -28,7 +30,8 @@ public function canExtractWithNullId()
$hydrator = new EnvironmentHydrator();

$this->assertEquals([
'name' => 'STABLE'
'name' => 'STABLE',
'isdefault' => 0,
], $hydrator->extract($environment));
}

Expand All @@ -41,9 +44,11 @@ public function canHydrate()
$hydratedEnvironment = $hydrator->hydrate([
'id' => 1,
'name' => 'STABLE',
'isdefault' => 1
], $environment);

$this->assertEquals(1, $hydratedEnvironment->getId());
$this->assertEquals('STABLE', $hydratedEnvironment->getName());
$this->assertTrue($hydratedEnvironment->isDefault());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,13 @@ public function canUpdate()
$aggregateRoot->setParent($newParent);
$aggregateRoot->setName('PF4');
$aggregateRoot->addUsers([$mike, $nick]);
$aggregateRoot->setDefault(true);

static::$repository->update($aggregateRoot);

$this->assertEquals('PF4', static::$connection->query('SELECT name FROM environments WHERE id = 4')->fetchColumn());
$this->assertEquals('1', static::$connection->query('SELECT isdefault FROM environments WHERE id = 4')->fetchColumn());
$this->assertEquals('0', static::$connection->query('SELECT isdefault FROM environments WHERE id = 3')->fetchColumn());
$this->assertEquals('UNSTABLE', static::$connection->query('select name from environments join environments_paths on id = ancestor_id where length = 1 and descendant_id = 4')->fetchColumn());
$this->assertEquals('PF4', static::$connection->query('select name from environments join environments_paths on id = ancestor_id where length = 1 and descendant_id = 7')->fetchColumn());
$this->assertEquals([[3], [4], [6]], static::$connection->query('SELECT user_id FROM environments_users WHERE environment_id = 4')->fetchAll(\PDO::FETCH_NUM));
Expand Down Expand Up @@ -131,9 +134,10 @@ public function cannotGetRootByUnknownRootName()
/** @test */
public function canGetRootByName()
{
$environment = static::$repository->getRootByName('STABLE');
$environment = static::$repository->getRootByName('DEFAULT');

$this->assertEquals(1, $environment->getId());
$this->assertEquals(3, $environment->getId());
$this->assertTrue($environment->isDefault());
}

/** @test */
Expand Down
36 changes: 18 additions & 18 deletions test/data/fixtures.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,24 @@
<environments_users environment_id="14" user_id="4" />
<environments_users environment_id="6" user_id="4" />
<environments_users environment_id="16" user_id="4" />
<environments id="1" name="STABLE" />
<environments id="2" name="UNSTABLE" />
<environments id="3" name="DEFAULT" />
<environments id="4" name="PF1" />
<environments id="5" name="PF2" />
<environments id="6" name="PF3" />
<environments id="7" name="ITG" />
<environments id="8" name="PRP" />
<environments id="9" name="PROD" />
<environments id="10" name="ITG" />
<environments id="11" name="PRP" />
<environments id="12" name="PROD" />
<environments id="13" name="PROD" />
<environments id="14" name="PF1" />
<environments id="15" name="PF2" />
<environments id="16" name="PF3" />
<environments id="17" name="ITG1" />
<environments id="18" name="ITG2" />
<environments id="1" name="STABLE" isdefault="0" />
<environments id="2" name="UNSTABLE" isdefault="0" />
<environments id="3" name="DEFAULT" isdefault="1" />
<environments id="4" name="PF1" isdefault="0" />
<environments id="5" name="PF2" isdefault="0" />
<environments id="6" name="PF3" isdefault="0" />
<environments id="7" name="ITG" isdefault="0" />
<environments id="8" name="PRP" isdefault="0" />
<environments id="9" name="PROD" isdefault="0" />
<environments id="10" name="ITG" isdefault="0" />
<environments id="11" name="PRP" isdefault="0" />
<environments id="12" name="PROD" isdefault="0" />
<environments id="13" name="PROD" isdefault="0" />
<environments id="14" name="PF1" isdefault="0" />
<environments id="15" name="PF2" isdefault="0" />
<environments id="16" name="PF3" isdefault="0" />
<environments id="17" name="ITG1" isdefault="0" />
<environments id="18" name="ITG2" isdefault="0" />
<environments_paths ancestor_id="1" descendant_id="1" length="0" />
<environments_paths ancestor_id="1" descendant_id="4" length="1" />
<environments_paths ancestor_id="1" descendant_id="5" length="1" />
Expand Down

0 comments on commit 0ff3ddd

Please sign in to comment.