230 lines
7.5 KiB
PHP
230 lines
7.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Unit\Domain\Entities;
|
|
|
|
use Domain\Models\Entities\Inco\Composition\IncoComposition;
|
|
use Domain\Models\ValueObjects\Inco\Composition\AminoAcids;
|
|
use Domain\Models\ValueObjects\Inco\Composition\CarbohydratesDetail;
|
|
use Domain\Models\ValueObjects\Inco\Composition\Energy;
|
|
use Domain\Models\ValueObjects\Inco\Composition\EnergyValues;
|
|
use Domain\Models\ValueObjects\Inco\Composition\FattyAcids;
|
|
use Domain\Models\ValueObjects\Inco\Composition\FreshProduceAndNuts;
|
|
use Domain\Models\ValueObjects\Inco\Composition\FruitAndNutAmount;
|
|
use Domain\Models\ValueObjects\Inco\Composition\Identification;
|
|
use Domain\Models\ValueObjects\Inco\Composition\IncoCompositionId;
|
|
use Domain\Models\ValueObjects\Inco\Composition\Minerals;
|
|
use Domain\Models\ValueObjects\Inco\Composition\NutrientValue;
|
|
use Domain\Models\ValueObjects\Inco\Composition\NutriScore;
|
|
use Domain\Models\ValueObjects\Inco\Composition\NutriScorePoints;
|
|
use Domain\Models\ValueObjects\Inco\Composition\PercentageValue;
|
|
use Domain\Models\ValueObjects\Inco\Composition\PortionMacronutrients;
|
|
use Domain\Models\ValueObjects\Inco\Composition\ReferenceIntakes;
|
|
use Domain\Models\ValueObjects\Inco\Composition\ReferenceMacronutrients;
|
|
use Domain\Models\ValueObjects\Inco\Composition\SpecialCompounds;
|
|
use Domain\Models\ValueObjects\Inco\Composition\Vitamins;
|
|
use Domain\Models\ValueObjects\Inco\IncoId;
|
|
use Shared\DDD\Model\Entity;
|
|
|
|
covers(IncoComposition::class);
|
|
|
|
describe('IncoComposition Domain Entity Unit Tests', function (): void {
|
|
it('instantiates IncoCompo entity and returns correct id', function (): void {
|
|
// GIVEN
|
|
$id = new IncoCompositionId('67890');
|
|
$idInco = new IncoId('12345');
|
|
$identification = new Identification('Poulet Rôti', '12345', 'LDC');
|
|
$zeroNutrient = new NutrientValue('0');
|
|
$zeroPercent = new PercentageValue('0');
|
|
|
|
$energyValues = new EnergyValues('100g', '750', '180');
|
|
$energy = new Energy($energyValues, $energyValues);
|
|
|
|
$refMacronutrients = new ReferenceMacronutrients(
|
|
fat: $zeroNutrient,
|
|
saturatedFat: $zeroNutrient,
|
|
carbohydrates: $zeroNutrient,
|
|
sugars: $zeroNutrient,
|
|
fiber: $zeroNutrient,
|
|
protein: $zeroNutrient,
|
|
salt: $zeroNutrient,
|
|
);
|
|
|
|
$portionMacronutrients = new PortionMacronutrients(
|
|
fat: $zeroNutrient,
|
|
saturatedFat: $zeroNutrient,
|
|
carbohydrates: $zeroNutrient,
|
|
sugars: $zeroNutrient,
|
|
fiber: $zeroNutrient,
|
|
protein: $zeroNutrient,
|
|
salt: $zeroNutrient,
|
|
);
|
|
|
|
$fruitNutAmount = new FruitAndNutAmount();
|
|
$freshProduce = new FreshProduceAndNuts(
|
|
reference: $fruitNutAmount,
|
|
portion: $fruitNutAmount,
|
|
freshFnlPercentage: $zeroPercent,
|
|
fruitsPercentage: $zeroPercent,
|
|
);
|
|
|
|
$referenceIntakes = new ReferenceIntakes(
|
|
energyE14: $zeroPercent,
|
|
energyKj: $zeroPercent,
|
|
fat: $zeroPercent,
|
|
saturatedFat: $zeroPercent,
|
|
carbohydrates: $zeroPercent,
|
|
sugars: $zeroPercent,
|
|
protein: $zeroPercent,
|
|
salt: $zeroPercent,
|
|
portionAmount: '100g',
|
|
);
|
|
|
|
$nutriScorePoints = new NutriScorePoints('0', '0', '0', '0', '0', '0', '0');
|
|
|
|
$minerals = new Minerals(
|
|
calcium: '0',
|
|
magnesium: '0',
|
|
potassium: '0',
|
|
phosphorus: '0',
|
|
chloride: '0',
|
|
iron: '0',
|
|
zinc: '0',
|
|
copper: '0',
|
|
manganese: '0',
|
|
selenium: '0',
|
|
iodine: '0',
|
|
chromium: '0',
|
|
molybdenum: '0',
|
|
sulfur: '0',
|
|
nitrates: '0',
|
|
);
|
|
|
|
$vitamins = new Vitamins(
|
|
vitaminA: '0',
|
|
vitaminB6: '0',
|
|
vitaminB12: '0',
|
|
vitaminC: '0',
|
|
vitaminD: '0',
|
|
vitaminE: '0',
|
|
vitaminK: '0',
|
|
cholecalciferol: '0',
|
|
niacin: '0',
|
|
riboflavin: '0',
|
|
thiamine: '0',
|
|
pantothenicAcid: '0',
|
|
biotin: '0',
|
|
folates: '0',
|
|
);
|
|
|
|
$carbohydratesDetail = new CarbohydratesDetail(
|
|
starch: '0',
|
|
maltodextrin: '0',
|
|
sucrose: '0',
|
|
glucose: '0',
|
|
lactose: '0',
|
|
maltose: '0',
|
|
galactose: '0',
|
|
carbohydrateHydrates: '0',
|
|
boundFructose: '0',
|
|
freeFructose: '0',
|
|
oligosaccharides: '0',
|
|
polyols: '0',
|
|
solubleFiber: '0',
|
|
inositol: '0',
|
|
);
|
|
|
|
$fattyAcids = new FattyAcids(
|
|
fd: '0',
|
|
cholesterol: '0',
|
|
transFat: '0',
|
|
formic: '0',
|
|
acetic: '0',
|
|
propionic: '0',
|
|
butyric: '0',
|
|
valeric: '0',
|
|
caproic: '0',
|
|
enanthic: '0',
|
|
caprylic: '0',
|
|
pelargonic: '0',
|
|
capric: '0',
|
|
undecylic: '0',
|
|
lauric: '0',
|
|
tridecylic: '0',
|
|
myristic: '0',
|
|
pentadecylic: '0',
|
|
f16d0: '0',
|
|
margaric: '0',
|
|
stearic: '0',
|
|
arachidic: '0',
|
|
heneicosylic: '0',
|
|
behenic: '0',
|
|
tricosylic: '0',
|
|
lignoceric: '0',
|
|
carboceric: '0',
|
|
cerotic: '0',
|
|
ceroplastic: '0',
|
|
montanic: '0',
|
|
nonacosylic: '0',
|
|
melissic: '0',
|
|
laceric: '0',
|
|
hentriacontylic: '0',
|
|
hextriacontylic: '0',
|
|
heptatriacontylic: '0',
|
|
octatriacontylic: '0',
|
|
nonadylie: '0',
|
|
psyllic: '0',
|
|
palmitic: '0',
|
|
oleic: '0',
|
|
f18d: '0',
|
|
f19d: '0',
|
|
f11eico: '0',
|
|
geddic: '0',
|
|
erucic: '0',
|
|
nervonic: '0',
|
|
hyenic: '0',
|
|
amscis: '0',
|
|
f18d2cn6: '0',
|
|
f18d3n3: '0',
|
|
f20d4: '0',
|
|
f20d5n3: '0',
|
|
f22d6n3: '0',
|
|
fapun3: '0',
|
|
fapun6: '0',
|
|
fapun9: '0',
|
|
fapucis: '0',
|
|
fapulc: '0',
|
|
);
|
|
|
|
$aminoAcids = new AminoAcids('0', '0', '0');
|
|
$specialCompounds = new SpecialCompounds('0', '0', '0', '0');
|
|
|
|
// WHEN
|
|
$compo = IncoComposition::hydrate(
|
|
id: $id,
|
|
idInco: $idInco,
|
|
identification: $identification,
|
|
energy: $energy,
|
|
referenceMacronutrients: $refMacronutrients,
|
|
portionMacronutrients: $portionMacronutrients,
|
|
freshProduceAndNuts: $freshProduce,
|
|
referenceIntakes: $referenceIntakes,
|
|
nutriScore: new NutriScore('0', grade: 'D'),
|
|
nutriScorePoints: $nutriScorePoints,
|
|
minerals: $minerals,
|
|
vitamins: $vitamins,
|
|
carbohydratesDetail: $carbohydratesDetail,
|
|
fattyAcids: $fattyAcids,
|
|
aminoAcids: $aminoAcids,
|
|
specialCompounds: $specialCompounds,
|
|
);
|
|
|
|
// THEN
|
|
expect($compo)->toBeInstanceOf(Entity::class)
|
|
->and($compo->id())->toBe($id)
|
|
->and($compo->idInco)->toBe($idInco)
|
|
->and($compo->identification->name)->toBe('Poulet Rôti')
|
|
->and($compo->nutriScore->grade)->toBe('D');
|
|
});
|
|
});
|