calc/tests/Json/FromJsonTest.php
2025-06-24 11:57:42 +02:00

42 lines
1.6 KiB
PHP

<?php
namespace PSC\Library\Calc\Tests\Json;
use PHPUnit\Framework\TestCase;
use PSC\Library\Calc\Engine;
use PSC\Library\Calc\Option\Type\Input;
use PSC\Library\Calc\PaperContainer\Container;
class FromJsonTest extends TestCase
{
public function testFromJson()
{
$engine1 = new Engine();
self::assertTrue($engine1->loadJson(file_get_contents(__DIR__ .'/from.json')));
self::assertCount(1, $engine1->getArticles());
self::assertInstanceOf(Input::class, $engine1->getArticle()->getOptionById('auflage'));
$engine2 = new Engine();
self::assertTrue($engine2->loadString(file_get_contents(__DIR__ .'/from.xml')));
self::assertCount(1, $engine2->getArticles());
self::assertInstanceOf(Input::class, $engine2->getArticle()->getOptionById('auflage'));
self::assertSame(1011.42, $engine1->getPrice());
self::assertSame($engine1->getPrice(), $engine2->getPrice());
self::assertEqualsCanonicalizing($engine1->getArticle(), $engine2->getArticle());
$tempXML = tempnam(sys_get_temp_dir(), 'calc');
$tempJson = tempnam(sys_get_temp_dir(), 'calc');
file_put_contents($tempXML, $engine1->generateXML());
file_put_contents($tempJson, $engine2->generateJson());
self::assertJsonFileEqualsJsonFile(__DIR__.'/from.json', $tempJson);
self::assertXmlFileEqualsXmlFile(__DIR__.'/from.xml', $tempXML);
self::assertCount(5, $engine1->getArticle()->getOptionById('farbigkeit')->getOptions());
self::assertCount(5, $engine2->getArticle()->getOptionById('farbigkeit')->getOptions());
@unlink($tempXML);
@unlink($tempJson);
}
}