46 lines
1.9 KiB
PHP
46 lines
1.9 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()->getOptionById('farbe1')->getSelectedOption(),
|
|
$engine2->getArticle()->getOptionById('farbe1')->getSelectedOption(),
|
|
);
|
|
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);
|
|
}
|
|
}
|