site = 'moysklad'; $request->note = new CustomerNote(); $request->note->customer = new Customer(); $request->note->customer->externalId = '10'; $request->note->managerId = 21; $request->note->text = 'Text'; $encoded = $formEncoder->encode($request); self::assertNotEmpty($encoded); $annotationReader = ReflectionUtils::getProperty($formEncoder, 'annotationReader'); self::assertInstanceOf(PsrCachedReader::class, $annotationReader); $cache = ReflectionUtils::getProperty($annotationReader, 'cache'); $cacheDir = ReflectionUtils::getProperty($cache, 'directory'); self::assertInstanceOf(FilesystemAdapter::class, $cache); self::assertStringStartsWith($dir, $cacheDir); self::assertDirectoryExists($cacheDir); self::assertTrue(is_readable($cacheDir) && count(scandir($cacheDir)) > 2); static::recursiveRmdir($dir); } /** * @param \RetailCrm\Api\Interfaces\HandlerInterface $handler * * @return \RetailCrm\Api\Handler\Request\RequestDataHandler */ private static function findModelDataHandler(HandlerInterface $handler): RequestDataHandler { if ($handler instanceof RequestDataHandler) { return $handler; } while ($handler = $handler->getNext()) { if ($handler instanceof RequestDataHandler) { return $handler; } } throw new RuntimeException('RequestDataHandler is not present in the chain.'); } /** * @param string $dir */ private static function recursiveRmdir(string $dir): void { $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST ); foreach ($files as $fileInfo) { $todo = ($fileInfo->isDir() ? 'rmdir' : 'unlink'); $todo($fileInfo->getRealPath()); } rmdir($dir); } }