#37 add external link to foodvendor #56

Merged
lubiana merged 1 commit from #37_uploadstuff into main 2024-08-16 19:54:25 +00:00
6 changed files with 79 additions and 4 deletions
Showing only changes of commit 56206acd8a - Show all commits

View file

@ -0,0 +1,35 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240816193410 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE food_vendor ADD COLUMN menu_link VARCHAR(255) DEFAULT NULL');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TEMPORARY TABLE __temp__food_vendor AS SELECT name, id FROM food_vendor');
$this->addSql('DROP TABLE food_vendor');
$this->addSql('CREATE TABLE food_vendor (name VARCHAR(50) NOT NULL, id BLOB NOT NULL, PRIMARY KEY(id))');
$this->addSql('INSERT INTO food_vendor (name, id) SELECT name, id FROM __temp__food_vendor');
$this->addSql('DROP TABLE __temp__food_vendor');
}
}

View file

@ -28,6 +28,9 @@ class FoodVendor
#[ORM\OneToMany(targetEntity: MenuItem::class, mappedBy: 'foodVendor', orphanRemoval: true)] #[ORM\OneToMany(targetEntity: MenuItem::class, mappedBy: 'foodVendor', orphanRemoval: true)]
private Collection $menuItems; private Collection $menuItems;
#[ORM\Column(length: 255, nullable: true)]
private string|null $menuLink = null;
public function __construct( public function __construct(
#[ORM\Id] #[ORM\Id]
#[ORM\GeneratedValue(strategy: 'CUSTOM')] #[ORM\GeneratedValue(strategy: 'CUSTOM')]
@ -116,4 +119,16 @@ class FoodVendor
return $this; return $this;
} }
public function getMenuLink(): string|null
{
return $this->menuLink;
}
public function setMenuLink(string|null $menuLink): static
{
$this->menuLink = $menuLink;
return $this;
}
} }

View file

@ -15,6 +15,7 @@ final class FoodVendorType extends AbstractType
{ {
$builder $builder
->add('name') ->add('name')
->add('menuLink')
; ;
} }

View file

@ -11,6 +11,10 @@
<th>Name</th> <th>Name</th>
<td>{{ food_vendor.name }}</td> <td>{{ food_vendor.name }}</td>
</tr> </tr>
<tr>
<th>Menu</th>
<td><a href="{{ food_vendor.menuLink }}" target="_blank">{{ food_vendor.menuLink }}</a></td>
</tr>
</tbody> </tbody>
</table> </table>

View file

@ -7,6 +7,14 @@
{{ include('order_item/_form.html.twig') }} {{ include('order_item/_form.html.twig') }}
<hr />
{% if food_order.foodVendor.menuLink != '' %}
<a href="{{ food_order.foodVendor.menuLink }}" target="_blank">
External link to Menu
</a>
{% endif %}
<div> <div>
<b>click a button to select a given menuitem</b> <b>click a button to select a given menuitem</b>
</div> </div>

View file

@ -38,6 +38,7 @@ final class FoodVendorControllerTest extends DbWebTest
{ {
$fixture = new FoodVendor; $fixture = new FoodVendor;
$fixture->setName('My Title'); $fixture->setName('My Title');
$fixture->setMenuLink('https://example.com/');
$this->manager->persist($fixture); $this->manager->persist($fixture);
$this->manager->flush(); $this->manager->flush();
@ -45,9 +46,17 @@ final class FoodVendorControllerTest extends DbWebTest
$crawler = $this->client->request('GET', sprintf('%s%s', $this->path, $fixture->getId())); $crawler = $this->client->request('GET', sprintf('%s%s', $this->path, $fixture->getId()));
$this->assertResponseIsSuccessful(); $this->assertResponseIsSuccessful();
$nameNode = $crawler->filter('td') $nameNode = $crawler->filter('td')
->last(); ->last();
$this->assertSame('My Title', $nameNode->text()); $nameNode = $crawler->filter(
'.table > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2)'
)->text();
$menuLinkNode = $crawler->filter(
'.table > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(2) > a:nth-child(1)'
)->text();
$this->assertSame('My Title', $nameNode);
$this->assertSame('https://example.com/', $menuLinkNode);
} }
public function testShowMenuItems(): void public function testShowMenuItems(): void
@ -91,9 +100,10 @@ final class FoodVendorControllerTest extends DbWebTest
$crawler = $this->client->request('GET', sprintf('%s%s', $this->path, $fixture->getId())); $crawler = $this->client->request('GET', sprintf('%s%s', $this->path, $fixture->getId()));
$this->assertResponseIsSuccessful(); $this->assertResponseIsSuccessful();
$nameNode = $crawler->filter('td') $nameNode = $crawler->filter(
->last(); '.table > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2)'
$this->assertSame('My Title', $nameNode->text()); )->text();
$this->assertSame('My Title', $nameNode);
$itemNodes = $crawler->filter('li'); $itemNodes = $crawler->filter('li');
@ -112,6 +122,7 @@ final class FoodVendorControllerTest extends DbWebTest
$this->client->submitForm('Update', [ $this->client->submitForm('Update', [
'food_vendor[name]' => 'Something New', 'food_vendor[name]' => 'Something New',
'food_vendor[menuLink]' => 'https://example.com/',
]); ]);
self::assertResponseRedirects('/food/vendor/'); self::assertResponseRedirects('/food/vendor/');
@ -119,6 +130,7 @@ final class FoodVendorControllerTest extends DbWebTest
$fixture = $this->repository->findAll(); $fixture = $this->repository->findAll();
self::assertSame('Something New', $fixture[0]->getName()); self::assertSame('Something New', $fixture[0]->getName());
self::assertSame('https://example.com/', $fixture[0]->getMenuLink());
} }
#[Override] #[Override]