createMock(IConfig::class); $dispatcher = $this->createMock(IEventDispatcher::class); $logger = $this->createMock(LoggerInterface::class); $connection = \OC::$server->getDatabaseConnection(); $this->mountCache = \OC::$server->getUserMountCache(); $this->scanFiles = $this->getMockBuilder('\OCA\Files\BackgroundJob\ScanFiles') ->setConstructorArgs([ $config, $dispatcher, $logger, $connection, $this->createMock(ITimeFactory::class) ]) ->setMethods(['runScanner']) ->getMock(); } private function runJob() { $this->invokePrivate($this->scanFiles, 'run', [[]]); } private function getUser(string $userId): IUser { $user = $this->createMock(IUser::class); $user->method('getUID') ->willReturn($userId); return $user; } private function setupStorage(string $user, string $mountPoint) { $storage = new Temporary([]); $storage->mkdir('foo'); $storage->getScanner()->scan(''); $this->createUser($user, ''); $this->mountCache->registerMounts($this->getUser($user), [ new MountPoint($storage, $mountPoint) ]); return $storage; } public function testAllScanned() { $this->setupStorage('foouser', '/foousers/files/foo'); $this->scanFiles->expects($this->never()) ->method('runScanner'); $this->runJob(); } public function testUnscanned() { $storage = $this->setupStorage('foouser', '/foousers/files/foo'); $storage->getCache()->put('foo', ['size' => -1]); $this->scanFiles->expects($this->once()) ->method('runScanner') ->with('foouser'); $this->runJob(); } }