om = Bootstrap::getObjectManager(); parent::__construct($name, $data, $dataName); } protected function setUp(): void { $this->lockGuardedCacheLoader = $this->om ->create( LockGuardedCacheLoader::class, [ 'locker' => $this->om->get(Database::class) ] ); } /** * @dataProvider dataProviderLockGuardedCacheLoader * * @param $lockName * @param $dataLoader * @param $dataCollector * @param $dataSaver * @param $expected * @return void */ public function testLockedLoadData( $lockName, $dataLoader, $dataCollector, $dataSaver, $expected ) { $result = $this->lockGuardedCacheLoader->lockedLoadData( $lockName, $dataLoader, $dataCollector, $dataSaver ); $this->assertEquals($expected, $result); } /** * @return array[] */ public function dataProviderLockGuardedCacheLoader(): array { return [ 'Data loader read' => [ 'lockName', function () { return ['data1', 'data2']; }, function () { return ['data3', 'data4']; }, function () { return new \stdClass(); }, ['data1', 'data2'], ], 'Data collector read' => [ 'lockName', function () { return false; }, function () { return ['data3', 'data4']; }, function () { return new \stdClass(); }, ['data3', 'data4'], ], ]; } }