|
| 1 | +<?php |
| 2 | +namespace Cubex\Mv\Tests; |
| 3 | + |
| 4 | +use Cubex\Mv\ArrayModel; |
| 5 | +use Cubex\Mv\JsonView; |
| 6 | +use Cubex\Mv\Model; |
| 7 | +use Cubex\Mv\ViewModel; |
| 8 | +use PHPUnit\Framework\TestCase; |
| 9 | + |
| 10 | +class JsonViewTest extends TestCase |
| 11 | +{ |
| 12 | + /** |
| 13 | + * @dataProvider viewResults |
| 14 | + */ |
| 15 | + public function testResults($testName, $model, $flags, $expect) |
| 16 | + { |
| 17 | + $view = new JsonView($model); |
| 18 | + if(is_int($flags)) |
| 19 | + { |
| 20 | + $view->setFlags($flags); |
| 21 | + } |
| 22 | + self::assertEquals($expect, $view->render(), $testName . " - Render"); |
| 23 | + self::assertEquals($expect, $view->produceSafeHTML()->getContent(), $testName . " - SafeHtml"); |
| 24 | + } |
| 25 | + |
| 26 | + public function viewResults() |
| 27 | + { |
| 28 | + return [ |
| 29 | + ["Null Check", null, null, "null"], |
| 30 | + ["Simple Json", new JsonViewTestData(), 0, '{"a":"b"}'], |
| 31 | + ["Empty", new ViewModel(), 0, '{}'], |
| 32 | + ["Array", $this->_arrayModel(), 0, '["a","b","c"]'], |
| 33 | + ]; |
| 34 | + } |
| 35 | + |
| 36 | + protected function _arrayModel() |
| 37 | + { |
| 38 | + $model = new ArrayModel(); |
| 39 | + $model->addItem("a"); |
| 40 | + $model->addItem("b"); |
| 41 | + $model->addItem("c"); |
| 42 | + return $model; |
| 43 | + } |
| 44 | +} |
| 45 | + |
| 46 | +class JsonViewTestData implements Model |
| 47 | +{ |
| 48 | + public function jsonSerialize() |
| 49 | + { |
| 50 | + return ["a" => "b"]; |
| 51 | + } |
| 52 | +} |
0 commit comments