Merge pull request #5 from DanielSiepmann/bugfix/do-not-cache-skills-across-sets

Prevent skill sets from sharing their skills
This commit is contained in:
Markus Klein 2020-10-19 16:07:32 +02:00 committed by GitHub
commit 53f3e75dc2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 6 deletions

View file

@ -30,6 +30,11 @@ class SkillSet
*/
private $data;
/**
* @var array
*/
private $skills = [];
private function __construct(array $data)
{
$this->data = $data;
@ -55,17 +60,15 @@ class SkillSet
*/
public function getSkills(): array
{
static $skills = [];
if ($skills !== []) {
return $skills;
if ($this->skills !== []) {
return $this->skills;
}
foreach ($this->data['skills'] as $skill) {
$skills[] = Skill::createFromJson(json_encode($skill));
$this->skills[] = Skill::createFromJson(json_encode($skill));
}
return $skills;
return $this->skills;
}
public function toArray(): array

View file

@ -101,6 +101,18 @@ class SkillSetTest extends TestCase
static::assertSame($skillsFirstCall, $skillsSecondCall);
}
/**
* @test
*/
public function twoDifferentInstancesProvideTheirOwnSkills()
{
$subject1 = SkillSet::createFromJson('{"skills":[{"uid":90,"title":"Example title 1"},{"goals":"<p>Example goals</p>","uid":91,"title":"Example title 2"}]}');
$subject2 = SkillSet::createFromJson('{"skills":[{"uid":80,"title":"Example title 10"},{"goals":"<p>Example goals</p>","uid":81,"title":"Example title 11"}]}');
static::assertSame(90, $subject1->getSkills()[0]->getId());
static::assertSame(80, $subject2->getSkills()[0]->getId());
}
/**
* @test
*/