65 lines
2.0 KiB
PHP
65 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace NoccyLabs\Juicer\Recipe\Exporter;
|
|
|
|
use NoccyLabs\Juicer\Recipe\Recipe;
|
|
use NoccyLabs\Juicer\Ingredient\Ingredient;
|
|
|
|
class JsonExporterTest extends \PhpUnit\Framework\TestCase
|
|
{
|
|
public function testThatRecipesCanBeExportedToJson()
|
|
{
|
|
$recipe = new Recipe();
|
|
$recipe->setRecipeName("foo");
|
|
$recipe->setRecipeAuthor("bar");
|
|
|
|
$this->assertInstanceOf(Recipe::class, $recipe);
|
|
$this->assertEquals("foo", $recipe->getRecipeName());
|
|
$this->assertEquals("bar", $recipe->getRecipeAuthor());
|
|
|
|
$exporter = new JsonExporter();
|
|
|
|
$exported = $exporter->export($recipe);
|
|
$expected = json_encode([
|
|
'recipe' => 'foo',
|
|
'author' => 'bar',
|
|
'tags' => [],
|
|
'description' => null,
|
|
'extra' => [],
|
|
'ingredients' => []
|
|
], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
|
|
|
|
$this->assertEquals($expected, $exported);
|
|
}
|
|
|
|
public function testThatRecipesWithIngredientsCanBeExportedToJson()
|
|
{
|
|
$recipe = new Recipe();
|
|
$recipe->setRecipeName("foo");
|
|
$recipe->setRecipeAuthor("bar");
|
|
$recipe->addIngredient(new Ingredient("Cherry", "FA", 1));
|
|
$recipe->addIngredient(new Ingredient("Vanilla Swirl", "TFA", 2));
|
|
|
|
$this->assertInstanceOf(Recipe::class, $recipe);
|
|
$this->assertEquals("foo", $recipe->getRecipeName());
|
|
$this->assertEquals("bar", $recipe->getRecipeAuthor());
|
|
|
|
$exporter = new JsonExporter();
|
|
|
|
$exported = $exporter->export($recipe);
|
|
$expected = json_encode([
|
|
'recipe' => 'foo',
|
|
'author' => 'bar',
|
|
'tags' => [],
|
|
'description' => null,
|
|
'extra' => [],
|
|
'ingredients' => [
|
|
[ 'brand' => 'FA', 'flavor' => 'Cherry', 'percent' => 1 ],
|
|
[ 'brand' => 'TFA', 'flavor' => 'Vanilla Swirl', 'percent' => 2 ]
|
|
]
|
|
], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
|
|
|
|
$this->assertEquals($expected, $exported);
|
|
}
|
|
|
|
} |