jetzt(); $gegessenAm = $jetzt->modify('+1 day'); $model = new Mahlzeit( id: 0, name: 'Bolognese', notiz: 'süß', wochentage: [Wochentag::Mo, Wochentag::Do, Wochentag::Fr], sortOrder: 2, status: MahlzeitStatus::Gegessen, erstelltAm: $jetzt, aktualisiertAm: $jetzt, gegessenAm: $gegessenAm, ); $entity = $this->mapper()->createEntity($model); self::assertSame('Bolognese', $entity->getName()); self::assertSame('süß', $entity->getNotiz()); self::assertSame('mo,do,fr', $entity->getWochentage()); self::assertSame(2, $entity->getSortOrder()); self::assertSame('gegessen', $entity->getStatus()); self::assertSame($gegessenAm, $entity->getGegessenAm()); self::assertSame($jetzt, $entity->getErstelltAm()); } public function testLeereWochentageWerdenNull(): void { $jetzt = $this->jetzt(); $model = new Mahlzeit(1, 'X', '', [], 0, MahlzeitStatus::Geplant, $jetzt, $jetzt, null); $entity = $this->mapper()->createEntity($model); self::assertNull($entity->getWochentage()); } public function testLeereNotizWirdNull(): void { $jetzt = $this->jetzt(); $model = new Mahlzeit(1, 'X', '', [], 0, MahlzeitStatus::Geplant, $jetzt, $jetzt, null); $entity = $this->mapper()->createEntity($model); self::assertNull($entity->getNotiz()); } public function testEntityZuModelMapptAlleFelder(): void { $jetzt = $this->jetzt(); $gegessenAm = $jetzt->modify('+1 day'); $entity = new MahlzeitEntity(); $entity->setName('Linsen'); $entity->setNotiz('scharf'); $entity->setWochentage('mi,sa'); $entity->setSortOrder(4); $entity->setStatus('gegessen'); $entity->setGegessenAm($gegessenAm); $entity->setErstelltAm($jetzt); $entity->setAktualisiertAm($jetzt); $model = $this->mapper()->toModel($entity); self::assertSame('Linsen', $model->name); self::assertSame('scharf', $model->notiz); self::assertSame([Wochentag::Mi, Wochentag::Sa], $model->wochentage()); self::assertSame(4, $model->sortOrder); self::assertSame(MahlzeitStatus::Gegessen, $model->status); self::assertSame($gegessenAm, $model->gegessenAm); self::assertTrue($model->istGegessen()); } public function testEntityMitLeerenWochentageLiefertLeeresArray(): void { $jetzt = $this->jetzt(); $entity = new MahlzeitEntity(); $entity->setName('X'); $entity->setNotiz(null); $entity->setWochentage(null); $entity->setSortOrder(0); $entity->setStatus('geplant'); $entity->setGegessenAm(null); $entity->setErstelltAm($jetzt); $entity->setAktualisiertAm($jetzt); $model = $this->mapper()->toModel($entity); self::assertSame([], $model->wochentage()); self::assertSame('', $model->notiz); self::assertTrue($model->istGeplant()); } public function testUngültigeWochentagswerteWerdenGefiltert(): void { $jetzt = $this->jetzt(); $entity = new MahlzeitEntity(); $entity->setName('X'); $entity->setWochentage('mo,xx,di'); $entity->setSortOrder(0); $entity->setStatus('geplant'); $entity->setErstelltAm($jetzt); $entity->setAktualisiertAm($jetzt); $model = $this->mapper()->toModel($entity); self::assertSame([Wochentag::Mo, Wochentag::Di], $model->wochentage()); } public function testUpdateEntitySchreibtNeueWerte(): void { $jetzt = $this->jetzt(); $entity = new MahlzeitEntity(); $entity->setSortOrder(0); $entity->setErstelltAm($jetzt); $entity->setAktualisiertAm($jetzt); $model = new Mahlzeit(5, 'Neu', 'notiz', [Wochentag::So], 9, MahlzeitStatus::Geplant, $jetzt, $jetzt, null); $this->mapper()->updateEntity($model, $entity); self::assertSame('Neu', $entity->getName()); self::assertSame('so', $entity->getWochentage()); self::assertSame(9, $entity->getSortOrder()); } }