Change Character to no longer handle creating its own CharacterViewpoint if it's empty

This commit is contained in:
Austen McDonald
2016-08-01 06:55:25 +00:00
parent 1d24aa973f
commit 3c3f5c970c
3 changed files with 23 additions and 33 deletions
+4 -5
View File
@@ -248,14 +248,13 @@ class Character implements CharacterInterface, CreateableInterface
}
/**
* Returns the current character scene and creates one if it is non-existant
* @return \LotGD\Core\Models\CharacterViewpoint
* Returns the current character viewpoint or null if one is not set.
* @return \LotGD\Core\Models\CharacterViewpoint|null
*/
public function getCharacterViewpoint(): CharacterViewpoint
public function getCharacterViewpoint()
{
if (count($this->characterViewpoint) === 0) {
$characterScene = CharacterViewpoint::Create(["owner" => $this]);
$this->characterViewpoint->add($characterScene);
return null;
}
return $this->characterViewpoint->first();
+1 -1
View File
@@ -13,6 +13,6 @@ interface CharacterInterface extends FighterInterface
public function getDisplayName(): string;
public function getHealth(): int;
public function getMaxHealth(): int;
public function getCharacterViewpoint(): CharacterViewpoint;
public function getCharacterViewpoint();
public function getProperty(string $name, $default = null);
}
+18 -27
View File
@@ -15,54 +15,45 @@ class CharacterViewpointTest extends ModelTestCase
{
/** @var string default data set */
protected $dataset = "characterViewpoints";
public function testGetters()
{
$em = $this->getEntityManager();
// Test character with a characterScene
$testCharacter = $em->getRepository(Character::class)->find(2);
$this->assertSame(2, $testCharacter->getId());
$characterScene = $testCharacter->getCharacterViewpoint();
$this->assertInstanceOf(CharacterViewpoint::class, $characterScene);
$this->assertSame("The Village", $characterScene->getTitle());
$this->assertSame("This is the village.", $characterScene->getDescription());
// Test character without a characterScene
$testCharacter = $em->getRepository(Character::class)->find(1);
$this->assertSame(1, $testCharacter->getId());
$characterScene = $testCharacter->getCharacterViewpoint();
$this->assertInstanceOf(CharacterViewpoint::class, $characterScene);
$this->assertNull($characterScene);
$em->flush();
}
// Tests if a scene can be changed correctly.
public function testSceneChange()
{
$em = $this->getEntityManager();
$testCharacters = [
$em->getRepository(Character::class)->find(1),
$em->getRepository(Character::class)->find(2)
];
$testScenes = [
$em->getRepository(Scene::class)->find(1),
$em->getRepository(Scene::class)->find(2),
];
$this->assertSame("{No scene set}", $testCharacters[0]->getCharacterViewpoint()->getTitle());
$this->assertSame("The Village", $testCharacters[1]->getCharacterViewpoint()->getTitle());
$testCharacters[0]->getCharacterViewpoint()->changeFromScene($testScenes[0]);
$testCharacters[1]->getCharacterViewpoint()->changeFromScene($testScenes[1]);
$this->assertSame("The Village", $testCharacters[0]->getCharacterViewpoint()->getTitle());
$this->assertSame("The Forest", $testCharacters[1]->getCharacterViewpoint()->getTitle());
$testCharacter = $em->getRepository(Character::class)->find(2);
$testScene = $em->getRepository(Scene::class)->find(2);
$this->assertSame("The Village", $testCharacter->getCharacterViewpoint()->getTitle());
$testCharacter->getCharacterViewpoint()->changeFromScene($testScene);
$this->assertSame("The Forest", $testCharacter->getCharacterViewpoint()->getTitle());
$em->flush();
}
}