setSession(new Session(new MockArraySessionStorage())); $requestStack = new RequestStack([$request]); $this->handler = new TeamerMailingDraftHandler($requestStack); } public function testANewMailingOpensWithTheGreeting(): void { $draft = $this->handler->getDraft(); $this->assertNull($draft->getSubject()); $this->assertSame(TeamerMailingDraftHandler::NEW_MESSAGE, $draft->getMessage()); } public function testSavedDraftSurvivesUntilItIsReset(): void { $this->handler->saveDraft( (new TeamerMailingDto()) ->setSubject('Wintersaison {{vorname}}') ->setMessage("Hallo {{vorname}},\n\nzweite Zeile.") ); $draft = $this->handler->getDraft(); $this->assertSame('Wintersaison {{vorname}}', $draft->getSubject()); $this->assertSame("Hallo {{vorname}},\n\nzweite Zeile.", $draft->getMessage()); $this->handler->resetDraft(); // discarding brings back the starting point of a new mailing, not a blank page $this->assertNull($this->handler->getDraft()->getSubject()); $this->assertSame(TeamerMailingDraftHandler::NEW_MESSAGE, $this->handler->getDraft()->getMessage()); $this->assertFalse($this->handler->hasDraft()); } public function testAHalfWrittenDraftIsKeptAsItIs(): void { $this->handler->saveDraft((new TeamerMailingDto())->setSubject('nur ein Betreff')); $draft = $this->handler->getDraft(); // an emptied message stays empty, the greeting is only the starting point $this->assertSame('nur ein Betreff', $draft->getSubject()); $this->assertNull($draft->getMessage()); $this->assertTrue($this->handler->hasDraft()); } }