loginAsAdmin($client); // 1. modify dates (owner) $crawler = $client->request('GET', self::ROUTE_OK); $form = $crawler->selectButton(self::MODIFY_CONFIRM_BUTTON)->form(); $date = new \DateTimeImmutable('+ 2 weeks'); // @see fixtures product_availability_user_1 $client->submit($form, [ $form->getName().'[startAt]' => $date->format('Y-m-d'), $form->getName().'[endAt]' => $date->modify('+1 week')->format('Y-m-d'), ]); self::assertEmailCount(0); self::assertResponseIsUnprocessable(); self::assertSelectorTextContains('body', 'validator.product.productavailabilitynooverlap'); } /** * Nominal case. */ public function testTransitionsSuccess(): void { $client = self::createClient(); $this->loginAsAdmin($client); // 1. modify dates (owner) $crawler = $client->request('GET', self::ROUTE_OK); $form = $crawler->selectButton(self::MODIFY_CONFIRM_BUTTON)->form(); $date = new \DateTimeImmutable('+ 3 days'); $client->submit($form, [ $form->getName().'[startAt]' => $date->format('Y-m-d'), $form->getName().'[endAt]' => $date->modify('+3 days')->format('Y-m-d'), ]); self::assertEmailCount(1); self::assertNotificationCount(1); self::assertResponseRedirects(); $client->followRedirect(); self::assertResponseIsSuccessful(); self::assertSelectorTextContains('body', self::FLASH_SUCCESS.'.object.modify_owner'); } }