* Powered by PhpStorm * Created on 2023/4/10 */ namespace HyperfTest\Unit\Common; use Singularity\HDK\Core\Service\XmlService; use Symfony\Component\Serializer\Encoder\XmlEncoder; use function Hyperf\Support\make; /** @var XmlService $service */ $service = make( XmlService::class, ['encoder' => make(XmlEncoder::class)] ); test( 'assert Xml can be encoded', function (array $data, string $expect, string $rootNodeName) use ($service) { $result = $service->encode($data, $rootNodeName); expect($result)->toBe($expect); } )->with([ 'normal' => [ 'data' => [ '@version' => '1.0', '@descripe' => 'Luxcreo', 'UserName' => 'zhm', 'Email' => 'haimei.zheng@luxcreo.ai', 'BiosId' => '420036H32020120279', 'validTime' => '2099/03/27', ], 'expect' => <<<'XML' zhm haimei.zheng@luxcreo.ai 420036H32020120279 2099/03/27 XML, 'xmlRootNodeName' => 'ClientInfo', ], 'normal attribute' => [ 'data' => [ '@version' => '1.0', '@descripe' => 'Luxcreo', 'UserName' => 'zhm', 'Email' => [ '@type' => 'Business', '#' => 'haimei.zheng@luxcreo.ai', ], 'BiosId' => '420036H32020120279', 'validTime' => '2099/03/27', ], 'expect' => <<<'XML' zhm haimei.zheng@luxcreo.ai 420036H32020120279 2099/03/27 XML , 'ClientInfo', ], 'normal comment' => [ 'data' => [ '@version' => '1.0', '@descripe' => 'Luxcreo', 'UserName' => 'zhm', 'Email' => [ '@type' => 'Business', '#' => 'haimei.zheng@luxcreo.ai', ], 'BiosId' => '420036H32020120279', 'validTime' => [ '#comment' => '到期时间', ], ], 'expect' => <<<'XML' zhm haimei.zheng@luxcreo.ai 420036H32020120279 XML , 'ClientInfo', ], ]); test('assert Xml can be parsed', function (string $xml, array $expected) use ($service) { $data = $service->decode($xml); expect($data)->toBe($expected); })->with([ 'normal' => [ 'xml' => << zhm haimei.zheng@luxcreo.ai 420036H32020120279 XML, 'expected' => [ '@version' => 1.0, '@descripe' => 'LuxAlignAuthentication', 'UserName' => 'zhm', 'Email' => 'haimei.zheng@luxcreo.ai', 'BiosId' => '420036H32020120279', ], ], ]);