private static function createPhysicalSkillEntities(Tables $tables, ProfessionFirstLevel $firstLevel) { $physicalSkillClasses = self::getListOfSkillClasses(PhysicalSkill::class); $physicalSkillPoint = PhysicalSkillPoint::createFromFirstLevelBackgroundSkillPoints($firstLevel, BackgroundSkillPoints::getIt(3, Heritage::getIt(5)), $tables); $requiredRankValue = new PositiveIntegerObject(1); $physicalSkillList = array_map(function ($physicalSkillClass) use($firstLevel, $physicalSkillPoint, $requiredRankValue) { /** @var PhysicalSkill $physicalSkill */ $physicalSkill = new $physicalSkillClass($firstLevel); $physicalSkill->addSkillRank($physicalSkillPoint); return $physicalSkill; }, $physicalSkillClasses); $physicalSkills = new PhysicalSkills(); foreach ($physicalSkillList as $physicalSkill) { $physicalSkills->addPhysicalSkill($physicalSkill); } $physicalSkillPoint = PhysicalSkillPoint::createFromFirstLevelBackgroundSkillPoints($firstLevel, BackgroundSkillPoints::getIt(3, Heritage::getIt(5)), $tables); $physicalSkillRank = new PhysicalSkillRank(new Swimming($firstLevel), PhysicalSkillPoint::createFromFirstLevelBackgroundSkillPoints($firstLevel, BackgroundSkillPoints::getIt(4, Heritage::getIt(5)), $tables), new PositiveIntegerObject(1)); return array_merge($physicalSkillList, [$physicalSkills, $physicalSkillPoint, $physicalSkillRank]); }
/** * @test */ public function I_can_get_malus_to_cover_with_shield() { $missingShieldSkillsTable = $this->createMissingShieldSkillsTable(); /*$missingShieldSkillsTable->shouldReceive('getCoverMalusForSkill') ->with(\Mockery::type(PhysicalSkillRank::class)) ->andReturnUsing(function (PhysicalSkillRank $physicalSkillRank) { self::assertSame(0, $physicalSkillRank->getValue()); return 'foo'; });*/ $missingShieldSkillsTable->shouldReceive('getCoverMalusForSkill')->with(0)->andReturn('foo'); self::assertSame('foo', (new PhysicalSkills())->getMalusToCoverWithShield($missingShieldSkillsTable)); $physicalSkills = new PhysicalSkills(); $physicalSkills->addPhysicalSkill($this->createPhysicalSkill(1, 1, ShieldUsage::class)); $missingShieldSkillsTable = $this->createMissingShieldSkillsTable(); $missingShieldSkillsTable->shouldReceive('getCoverMalusForSkill')->with(\Mockery::type(PhysicalSkillRank::class))->andReturnUsing(function (PhysicalSkillRank $physicalSkillRank) { self::assertSame(1, $physicalSkillRank->getValue()); return 'bar'; }); self::assertSame('bar', $physicalSkills->getMalusToCoverWithShield($missingShieldSkillsTable)); $physicalSkills = new PhysicalSkills(); $physicalSkills->addPhysicalSkill($this->createPhysicalSkill(2, 1, ShieldUsage::class)); $missingShieldSkillsTable = $this->createMissingShieldSkillsTable(); $missingShieldSkillsTable->shouldReceive('getCoverMalusForSkill')->with(\Mockery::type(PhysicalSkillRank::class))->andReturnUsing(function (PhysicalSkillRank $physicalSkillRank) { self::assertSame(2, $physicalSkillRank->getValue()); return 'baz'; }); self::assertSame('baz', $physicalSkills->getMalusToCoverWithShield($missingShieldSkillsTable)); $physicalSkills = new PhysicalSkills(); $physicalSkills->addPhysicalSkill($this->createPhysicalSkill(3, 2, ShieldUsage::class)); $missingShieldSkillsTable = $this->createMissingShieldSkillsTable(); $missingShieldSkillsTable->shouldReceive('getCoverMalusForSkill')->with(\Mockery::type(PhysicalSkillRank::class))->andReturnUsing(function (PhysicalSkillRank $physicalSkillRank) { self::assertSame(3, $physicalSkillRank->getValue()); return 'qux'; }); self::assertSame('qux', $physicalSkills->getMalusToCoverWithShield($missingShieldSkillsTable)); }