Change Character to no longer handle creating its own CharacterViewpoint if it's empty
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user