From 4d9e569882b63d8597c6b6e12a2a6ff26499f70d Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver@oliverdavies.uk>
Date: Wed, 23 Apr 2025 22:14:41 +0100
Subject: [PATCH] Add an example module

---
 web/modules/example/example.info.yml          |  3 +++
 web/modules/example/example.routing.yml       |  7 ++++++
 .../src/Controller/ExamplePageController.php  | 17 +++++++++++++
 .../tests/src/Functional/ExampleTest.php      | 24 +++++++++++++++++++
 4 files changed, 51 insertions(+)
 create mode 100644 web/modules/example/example.info.yml
 create mode 100644 web/modules/example/example.routing.yml
 create mode 100644 web/modules/example/src/Controller/ExamplePageController.php
 create mode 100644 web/modules/example/tests/src/Functional/ExampleTest.php

diff --git a/web/modules/example/example.info.yml b/web/modules/example/example.info.yml
new file mode 100644
index 0000000..45cf496
--- /dev/null
+++ b/web/modules/example/example.info.yml
@@ -0,0 +1,3 @@
+name: Example
+type: module
+core_version_requirement: ^11
diff --git a/web/modules/example/example.routing.yml b/web/modules/example/example.routing.yml
new file mode 100644
index 0000000..82ce49d
--- /dev/null
+++ b/web/modules/example/example.routing.yml
@@ -0,0 +1,7 @@
+example.page:
+  path: /example
+  defaults:
+    _controller: Drupal\example\Controller\ExamplePageController
+  methods: [GET]
+  requirements:
+    _permission: access content
diff --git a/web/modules/example/src/Controller/ExamplePageController.php b/web/modules/example/src/Controller/ExamplePageController.php
new file mode 100644
index 0000000..08b6043
--- /dev/null
+++ b/web/modules/example/src/Controller/ExamplePageController.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Drupal\example\Controller;
+
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+
+final class ExamplePageController {
+
+  use StringTranslationTrait;
+
+  public function __invoke(): array {
+    return [
+      '#markup' => $this->t('This page is powered by Drupal and Nix.'),
+    ];
+  }
+
+}
diff --git a/web/modules/example/tests/src/Functional/ExampleTest.php b/web/modules/example/tests/src/Functional/ExampleTest.php
new file mode 100644
index 0000000..bc230c9
--- /dev/null
+++ b/web/modules/example/tests/src/Functional/ExampleTest.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\Tests\example\Functional;
+
+use Drupal\Tests\BrowserTestBase;
+
+class ExampleTest extends BrowserTestBase {
+
+  public $defaultTheme = 'stark';
+
+  public static $modules = [
+    'example',
+    'node',
+  ];
+
+  public function test_it_loads_the_page(): void {
+    $this->drupalGet('/example');
+
+    $assert = $this->assertSession();
+
+    $assert->statusCodeEquals(200);
+    $assert->pageTextContains('This page is powered by Drupal and Nix.');
+  }
+}