From 675e89e9d1b5c4cf13d2e807ef94d938b083763a Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Tue, 17 Oct 2023 10:36:46 +0200 Subject: [PATCH] docs: DrupalCon updates --- .gitignore | 2 +- dist/.keep | 0 run | 4 +- test-driven-drupal/code/1.txt | 6 + test-driven-drupal/code/10.txt | 30 ++ test-driven-drupal/code/11.txt | 48 +++ test-driven-drupal/code/12.txt | 34 ++ test-driven-drupal/code/13.txt | 25 ++ test-driven-drupal/code/14.txt | 40 +++ test-driven-drupal/code/15.txt | 49 +++ test-driven-drupal/code/16.txt | 37 ++ test-driven-drupal/code/17.txt | 37 ++ test-driven-drupal/code/18.txt | 54 +++ test-driven-drupal/code/19.txt | 44 +++ test-driven-drupal/code/2.txt | 13 + test-driven-drupal/code/3.txt | 41 +++ test-driven-drupal/code/4.txt | 28 ++ test-driven-drupal/code/5.txt | 21 ++ test-driven-drupal/code/6.txt | 25 ++ test-driven-drupal/code/7.txt | 40 +++ test-driven-drupal/code/8.txt | 46 +++ test-driven-drupal/code/9.txt | 61 ++++ test-driven-drupal/demo.rst | 337 ++++++++++++++++++ test-driven-drupal/example.rst | 107 ++++++ .../images/override-node-options-1.png | Bin 0 -> 77525 bytes .../images/override-node-options-2.png | Bin 0 -> 93333 bytes .../images/override-node-options-3.png | Bin 0 -> 33958 bytes test-driven-drupal/slides.rst | 255 ++++++------- 28 files changed, 1240 insertions(+), 144 deletions(-) create mode 100644 dist/.keep create mode 100644 test-driven-drupal/code/1.txt create mode 100644 test-driven-drupal/code/10.txt create mode 100644 test-driven-drupal/code/11.txt create mode 100644 test-driven-drupal/code/12.txt create mode 100644 test-driven-drupal/code/13.txt create mode 100644 test-driven-drupal/code/14.txt create mode 100644 test-driven-drupal/code/15.txt create mode 100644 test-driven-drupal/code/16.txt create mode 100644 test-driven-drupal/code/17.txt create mode 100644 test-driven-drupal/code/18.txt create mode 100644 test-driven-drupal/code/19.txt create mode 100644 test-driven-drupal/code/2.txt create mode 100644 test-driven-drupal/code/3.txt create mode 100644 test-driven-drupal/code/4.txt create mode 100644 test-driven-drupal/code/5.txt create mode 100644 test-driven-drupal/code/6.txt create mode 100644 test-driven-drupal/code/7.txt create mode 100644 test-driven-drupal/code/8.txt create mode 100644 test-driven-drupal/code/9.txt create mode 100644 test-driven-drupal/demo.rst create mode 100644 test-driven-drupal/example.rst create mode 100644 test-driven-drupal/images/override-node-options-1.png create mode 100644 test-driven-drupal/images/override-node-options-2.png create mode 100644 test-driven-drupal/images/override-node-options-3.png diff --git a/.gitignore b/.gitignore index bd3bc9a..cb76843 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ # rst2df. /**/*.pdf /**/*.rst.build_temp -/dist/ +/dist/*.pdf # pdfpc. /**/*.pdfpc diff --git a/dist/.keep b/dist/.keep new file mode 100644 index 0000000..e69de29 diff --git a/run b/run index 538318d..04a2ed1 100755 --- a/run +++ b/run @@ -7,8 +7,8 @@ RST_FILENAME=slides.rst THUMBNAIL_FILENAME=thumbnail.jpg function clean { - mkdir -p dist rm -fr dist/* + touch dist/.keep find . \ -type f \( -name "${PDF_FILENAME}*" -o -name *.build_temp -o -name ${THUMBNAIL_FILENAME} \) \ @@ -34,7 +34,7 @@ function pdf:generate { --fit-background-mode scale \ --font-path ../fonts \ --output "../dist/${DIRECTORY_NAME}.pdf" \ - --stylesheets ../styles/style-light,tango \ + --stylesheets ../styles/style-light,vs \ "${@}" popd diff --git a/test-driven-drupal/code/1.txt b/test-driven-drupal/code/1.txt new file mode 100644 index 0000000..65a11bd --- /dev/null +++ b/test-driven-drupal/code/1.txt @@ -0,0 +1,6 @@ +# drupalcon.info.yml + +name: DrupalCon demo +type: module +core_version_requirement: ^10 +package: DrupalCon diff --git a/test-driven-drupal/code/10.txt b/test-driven-drupal/code/10.txt new file mode 100644 index 0000000..87cfd42 --- /dev/null +++ b/test-driven-drupal/code/10.txt @@ -0,0 +1,30 @@ +// start code +namespace Drupal\drupalcon\Repository; + +final class ArticleRepository { + + public function getAll(): array { + return []; + } + +} +// end code + +// start output +F 1 / 1 (100%) + +Time: 00:00.266, Memory: 6.00 MB + +There was 1 failure: + +1) Drupal\Tests\drupalcon\Kernel\ArticleRepositoryTest::it_returns_blog_posts +Failed asserting that actual size 0 matches expected size 1. +// end output + +/app/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php:121 +/app/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php:55 +/app/web/modules/custom/drupalcon/tests/src/ArticleRepositoryTest.php:20 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +FAILURES! +Tests: 1, Assertions: 5, Failures: 1. diff --git a/test-driven-drupal/code/11.txt b/test-driven-drupal/code/11.txt new file mode 100644 index 0000000..53a6900 --- /dev/null +++ b/test-driven-drupal/code/11.txt @@ -0,0 +1,48 @@ +nodeStorage = $this->entityTypeManager->getStorage('node'); + } + + + + public function getAll(): array { + return $this->nodeStorage->loadMultiple(); + } + +} +// end code + +--- + +E 1 / 1 (100%) + +Time: 00:00.401, Memory: 6.00 MB + +There was 1 error: + +1) Drupal\Tests\drupalcon\Kernel\ArticleRepositoryTest::it_returns_blog_posts +ArgumentCountError: Too few arguments to function Drupal\drupalcon\Repository\ArticleR +epository::__construct(), 0 passed and exactly 1 expected + +/app/web/modules/custom/drupalcon/src/Repository/ArticleRepository.php:9 +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:1140 +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:586 +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:531 +/app/web/modules/custom/drupalcon/tests/src/ArticleRepositoryTest.php:15 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +ERRORS! +Tests: 1, Assertions: 4, Errors: 1. diff --git a/test-driven-drupal/code/12.txt b/test-driven-drupal/code/12.txt new file mode 100644 index 0000000..2e1c9ef --- /dev/null +++ b/test-driven-drupal/code/12.txt @@ -0,0 +1,34 @@ +// start services +# drupalcon.services.yml + +services: + Drupal\drupalcon\Repository\ArticleRepository: + autowire: true +// end services + +--- + +// start output +E 1 / 1 (100%) + +Time: 00:00.405, Memory: 6.00 MB + +There was 1 error: + +1) Drupal\Tests\drupalcon\Kernel\ArticleRepositoryTest::it_returns_blog_posts +Drupal\Component\Plugin\Exception\PluginNotFoundException: +The "node" entity type does not exist. +// end output + +/app/web/core/lib/Drupal/Core/Entity/EntityTypeManager.php:139 +/app/web/core/lib/Drupal/Core/Entity/EntityTypeManager.php:253 +/app/web/core/lib/Drupal/Core/Entity/EntityTypeManager.php:192 +/app/web/modules/custom/drupalcon/src/Repository/ArticleRepository.php:12 +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:1140 +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:586 +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:531 +/app/web/modules/custom/drupalcon/tests/src/ArticleRepositoryTest.php:15 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +ERRORS! +Tests: 1, Assertions: 4, Errors: 1. diff --git a/test-driven-drupal/code/13.txt b/test-driven-drupal/code/13.txt new file mode 100644 index 0000000..13097c7 --- /dev/null +++ b/test-driven-drupal/code/13.txt @@ -0,0 +1,25 @@ +// start test +public static $modules = [ + 'drupalcon', + 'node', +]; +// end test + +// start output +F 1 / 1 (100%) + +Time: 00:00.421, Memory: 6.00 MB + +There was 1 failure: + +1) Drupal\Tests\drupalcon\Kernel\ArticleRepositoryTest::it_returns_blog_posts +Failed asserting that actual size 0 matches expected size 1. +// end output + +/app/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php:121 +/app/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php:55 +/app/web/modules/custom/drupalcon/tests/src/ArticleRepositoryTest.php:19 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +FAILURES! +Tests: 1, Assertions: 9, Failures: 1. diff --git a/test-driven-drupal/code/14.txt b/test-driven-drupal/code/14.txt new file mode 100644 index 0000000..b4e7e99 --- /dev/null +++ b/test-driven-drupal/code/14.txt @@ -0,0 +1,40 @@ +namespace Drupal\Tests\drupalcon\Kernel; + +use Drupal\drupalcon\Repository\ArticleRepository; +use Drupal\KernelTests\Core\Entity\EntityKernelTestBase; +use Drupal\Tests\node\Traits\NodeCreationTrait; + +class ArticleRepositoryTest extends EntityKernelTestBase { + + public static $modules = [ + 'drupalcon', + 'node', + ]; + +// start test + use NodeCreationTrait; + + /** @test */ + public function it_returns_blog_posts() { + $this->createNode(['type' => 'article']); + + /** @var ArticleRepository */ + $repository = $this->container->get(ArticleRepository::class); + + $articles = $repository->getAll(); + + $this->assertCount(1, $articles); + } +// end test + +} + +--- + +// start output +. 1 / 1 (100%) + +Time: 00:00.439, Memory: 6.00 MB + +OK (1 test, 11 assertions) +// end output diff --git a/test-driven-drupal/code/15.txt b/test-driven-drupal/code/15.txt new file mode 100644 index 0000000..984fee1 --- /dev/null +++ b/test-driven-drupal/code/15.txt @@ -0,0 +1,49 @@ +createNode([ + 'title' => 'Test post', + 'type' => 'article', + ]); + + $repository = $this->container->get(ArticleRepository::class); + + $articles = $repository->getAll(); + + $this->assertCount(1, $articles); + $this->assertIsObject($articles[1]); + + $this->assertInstanceOf(NodeInterface::class, $articles[1]); + $this->assertSame('article', $articles[1]->bundle()); + $this->assertSame('Test post', $articles[1]->label()); +// end test + } + +} + +--- + +Article Repository (Drupal\Tests\drupalcon\Kernel\ArticleRepository) + ✔ It returns blog posts + +Time: 00:00.449, Memory: 6.00 MB + +OK (1 test, 15 assertions) diff --git a/test-driven-drupal/code/16.txt b/test-driven-drupal/code/16.txt new file mode 100644 index 0000000..e25b91c --- /dev/null +++ b/test-driven-drupal/code/16.txt @@ -0,0 +1,37 @@ +public function only_published_articles_are_returned() { +// start test + $this->createNode(['type' => 'article', 'status' => Node::PUBLISHED]); + $this->createNode(['type' => 'article', 'status' => Node::NOT_PUBLISHED]); + $this->createNode(['type' => 'article', 'status' => Node::PUBLISHED]); + $this->createNode(['type' => 'article', 'status' => Node::NOT_PUBLISHED]); + $this->createNode(['type' => 'article', 'status' => Node::PUBLISHED]); + + $repository = $this->container->get(ArticleRepository::class); + + $articles = $repository->getAll(); + + $this->assertCount(3, $articles); +// end test +} + +--- + +// start output +.F 2 / 2 (100%) + +Time: 00:00.903, Memory: 6.00 MB + +There was 1 failure: + +1) Drupal\Tests\drupalcon\Kernel\ArticleRepositoryTest:: +only_published_articles_are_returned +Failed asserting that actual size 5 matches expected size 3. +// end output + +/app/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php:121 +/app/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php:55 +/app/web/modules/custom/drupalcon/tests/src/ArticleRepositoryTest.php:40 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +FAILURES! +Tests: 2, Assertions: 22, Failures: 1. diff --git a/test-driven-drupal/code/17.txt b/test-driven-drupal/code/17.txt new file mode 100644 index 0000000..843b65e --- /dev/null +++ b/test-driven-drupal/code/17.txt @@ -0,0 +1,37 @@ +nodeStorage = $this->entityTypeManager->getStorage('node'); + } + +// start code + public function getAll(): array { + return $this->nodeStorage->loadByProperties([ + 'status' => NodeInterface::PUBLISHED, + ]); + } +// end code + +} + +// start output +.. 2 / 2 (100%) + +Time: 00:00.891, Memory: 6.00 MB + +OK (2 tests, 22 assertions) +// end output diff --git a/test-driven-drupal/code/18.txt b/test-driven-drupal/code/18.txt new file mode 100644 index 0000000..3959d8a --- /dev/null +++ b/test-driven-drupal/code/18.txt @@ -0,0 +1,54 @@ +public function nodes_are_ordered_by_date_and_returned_newest_first(): void { +// start test + $this->createNode(['type' => 'article', + 'created' => (new DrupalDateTime('-2 days'))->getTimestamp()]); + $this->createNode(['type' => 'article', + 'created' => (new DrupalDateTime('-1 week'))->getTimestamp()]); + $this->createNode(['type' => 'article', + 'created' => (new DrupalDateTime('-1 hour'))->getTimestamp()]); + $this->createNode(['type' => 'article', + 'created' => (new DrupalDateTime('-1 year'))->getTimestamp()]); + $this->createNode(['type' => 'article', + 'created' => (new DrupalDateTime('-1 month'))->getTimestamp()]); + + $repository = $this->container->get(ArticleRepository::class); + $nodes = $repository->getAll(); + + $this->assertSame([3, 1, 2, 5, 4], array_keys($nodes)); +// end test +} + +// start output +F 1 / 1 (100%) + +Time: 00:00.449, Memory: 8.00 MB + +There was 1 failure: + +1) Drupal\Tests\drupalcon\Kernel\ArticleRepositoryTest::nodes_are_ordered_by_date_and_ +returned_newest_first +Failed asserting that two arrays are identical. +--- Expected ++++ Actual +@@ @@ + Array &0 ( +- 0 => 3 +- 1 => 1 +- 2 => 2 +- 3 => 5 +- 4 => 4 ++ 0 => 1 ++ 1 => 2 ++ 2 => 3 ++ 3 => 4 ++ 4 => 5 + ) + +/app/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php:121 +/app/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php:79 +/app/web/modules/custom/drupalcon/tests/src/ArticleRepositoryTest.php:60 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +FAILURES! +Tests: 1, Assertions: 11, Failures: 1. +// end output diff --git a/test-driven-drupal/code/19.txt b/test-driven-drupal/code/19.txt new file mode 100644 index 0000000..054b6f4 --- /dev/null +++ b/test-driven-drupal/code/19.txt @@ -0,0 +1,44 @@ +nodeStorage = $this->entityTypeManager->getStorage('node'); + } + + public function getAll(): array { +// start code + $articles = $this->nodeStorage->loadByProperties([ + 'status' => NodeInterface::PUBLISHED, + ]); + + uasort($articles, fn (NodeInterface $a, NodeInterface $b) => + $b->getCreatedTime() <=> $a->getCreatedTime()); + + return $articles; +// end code + } + +} + +--- + +// start output +. 1 / 1 (100%) + +Time: 00:00.462, Memory: 6.00 MB + +OK (1 test, 11 assertions) +// end output diff --git a/test-driven-drupal/code/2.txt b/test-driven-drupal/code/2.txt new file mode 100644 index 0000000..0528d63 --- /dev/null +++ b/test-driven-drupal/code/2.txt @@ -0,0 +1,13 @@ +// tests/src/Functional/BlogPageTest.php + +namespace Drupal\Tests\drupalcon\Functional; + +use Drupal\Tests\BrowserTestBase; + +final class BlogPageTest extends BrowserTestBase { + + public $defaultTheme = 'stark'; + + public static $modules = []; + +} diff --git a/test-driven-drupal/code/3.txt b/test-driven-drupal/code/3.txt new file mode 100644 index 0000000..d98b96f --- /dev/null +++ b/test-driven-drupal/code/3.txt @@ -0,0 +1,41 @@ +// tests/src/Functional/BlogPageTest.php + +/** @test */ +public function it_loads_the_blog_page(): void { + $this->drupalGet('/blog'); + + $this->assertSession()->statusCodeEquals(200); +} +// end test + +// start output +E 1 / 1 (100%) + +Time: 00:01.379, Memory: 6.00 MB + +There was 1 error: + +1) Drupal\Tests\drupalcon\Functional\BlogPageTest::it_loads_the_blog_page +Behat\Mink\Exception\ExpectationException: +Current response status code is 404, but 200 expected. + +/app/vendor/behat/mink/src/WebAssert.php:794 +/app/vendor/behat/mink/src/WebAssert.php:130 +/app/web/modules/custom/drupalcon/tests/src/BlogPageTest.php:16 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +ERRORS! +Tests: 1, Assertions: 2, Errors: 1. +// end output + +// start routing +# drupalcon.routing.yml + +blog.page: + path: /blog + defaults: + _controller: Drupal\drupalcon\Controller\BlogPageController + _title: Blog + requirements: + _permission: access content +// end routing diff --git a/test-driven-drupal/code/4.txt b/test-driven-drupal/code/4.txt new file mode 100644 index 0000000..0dc2a19 --- /dev/null +++ b/test-driven-drupal/code/4.txt @@ -0,0 +1,28 @@ +public static $modules = ['drupalcon'];// output + +E 1 / 1 (100%) + +Time: 00:01.532, Memory: 6.00 MB + +There was 1 error: + +1) Drupal\Tests\drupalcon\Functional\BlogPageTest::it_loads_the_blog_page +Behat\Mink\Exception\ExpectationException: +Current response status code is 403, but 200 expected. +// end output + +/app/vendor/behat/mink/src/WebAssert.php:794 +/app/vendor/behat/mink/src/WebAssert.php:130 +/app/web/modules/custom/drupalcon/tests/src/BlogPageTest.php:17 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +ERRORS! +Tests: 1, Assertions: 3, Errors: 1. + + /app/vendor/behat/mink/src/WebAssert.php:794 + /app/vendor/behat/mink/src/WebAssert.php:130 + /app/web/tests/src/Functional/BlogPageTest.php:23 + /app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + + ERRORS! + Tests: 1, Assertions: 3, Errors: 1. diff --git a/test-driven-drupal/code/5.txt b/test-driven-drupal/code/5.txt new file mode 100644 index 0000000..73ccc4a --- /dev/null +++ b/test-driven-drupal/code/5.txt @@ -0,0 +1,21 @@ +public static $modules = ['node', 'drupalcon']; // end code + +// start output +E 1 / 1 (100%) + +Time: 00:01.906, Memory: 6.00 MB + +There was 1 error: + +1) Drupal\Tests\drupalcon\Functional\BlogPageTest::it_loads_the_blog_page +Behat\Mink\Exception\ExpectationException: +Current response status code is 500, but 200 expected. +// end output + +/app/vendor/behat/mink/src/WebAssert.php:794 +/app/vendor/behat/mink/src/WebAssert.php:130 +/app/web/modules/custom/drupalcon/tests/src/BlogPageTest.php:17 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +ERRORS! +Tests: 1, Assertions: 3, Errors: 1. diff --git a/test-driven-drupal/code/6.txt b/test-driven-drupal/code/6.txt new file mode 100644 index 0000000..e62f1a8 --- /dev/null +++ b/test-driven-drupal/code/6.txt @@ -0,0 +1,25 @@ +// start code +// src/Controller/BlogPageController.php + +namespace Drupal\drupalcon\Controller; + +class BlogPageController { + + public function __invoke(): array { + return []; + } + +} +// end code + +// start output +. 1 / 1 (100%) + +Time: 00:01.916, Memory: 6.00 MB + +OK (1 test, 3 assertions) + +Task completed in 0m2.147s +// end output + +Task completed in 0m2.124s diff --git a/test-driven-drupal/code/7.txt b/test-driven-drupal/code/7.txt new file mode 100644 index 0000000..f52ccf9 --- /dev/null +++ b/test-driven-drupal/code/7.txt @@ -0,0 +1,40 @@ +// start test +/** @test */ +public function it_loads_the_blog_page(): void { + $this->drupalGet('/blog'); + + $session = $this->assertSession(); + $session->statusCodeEquals(200); + + $session->responseContains('

Blog

'); + $session->pageTextContains('Welcome to my blog!'); +} +// end test + +// start code +namespace Drupal\drupalcon\Controller; + +use Drupal\Core\StringTranslation\StringTranslationTrait; + +class BlogPageController { + + use StringTranslationTrait; + + public function __invoke(): array { + return [ + '#markup' => $this->t('Welcome to my blog!'), + ]; + } + +} +// end code + +// start output +. 1 / 1 (100%) + +Time: 00:01.911, Memory: 6.00 MB + +OK (1 test, 3 assertions) +// end output + +Task completed in 0m2.124s diff --git a/test-driven-drupal/code/8.txt b/test-driven-drupal/code/8.txt new file mode 100644 index 0000000..56976dd --- /dev/null +++ b/test-driven-drupal/code/8.txt @@ -0,0 +1,46 @@ +// start code +// tests/src/ArticleRepositoryTest.php + +namespace Drupal\Tests\drupalcon\Kernel; + +use Drupal\KernelTests\Core\Entity\EntityKernelTestBase; + +class ArticleRepositoryTest extends EntityKernelTestBase { + + /** @test */ + public function it_returns_blog_posts(): void { + $repository = $this->container->get(ArticleRepository::class); + + $articles = $repository->getAll(); + + $this->assertCount(1, $articles); + } +// end code + +} + +--- + +// start output +E 1 / 1 (100%) + +Time: 00:00.405, Memory: 6.00 MB + +There was 1 error: + +1) Drupal\Tests\drupalcon\Kernel\ArticleRepositoryTest::it_returns_blog_posts +Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: +You have requested a non-existent service +"Drupal\Tests\drupalcon\Kernel\ArticleRepository". +// end output + +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:992 +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:568 +/app/vendor/symfony/dependency-injection/ContainerBuilder.php:531 +/app/web/modules/custom/drupalcon/tests/src/ArticleRepositoryTest.php:11 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +ERRORS! +Tests: 1, Assertions: 4, Errors: 1. + +Time: 00:00.409, Memory: 8.00 MB diff --git a/test-driven-drupal/code/9.txt b/test-driven-drupal/code/9.txt new file mode 100644 index 0000000..c7ecdde --- /dev/null +++ b/test-driven-drupal/code/9.txt @@ -0,0 +1,61 @@ +// start code +// src/Repository/ArticleNodeRepository.php + +namespace Drupal\drupalcon\Repository; + +final class ArticleRepository { +} +// end code + +--- + +// start services +# drupalcon.services.yml + +services: + Drupal\drupalcon\Repository\ArticleRepository: ~ +// end services + +--- + +namespace Drupal\Tests\drupalcon\Kernel; + +use Drupal\drupalcon\Repository\ArticleRepository; +use Drupal\KernelTests\Core\Entity\EntityKernelTestBase; + +class ArticleRepositoryTest extends EntityKernelTestBase { + +// start test + public static $modules = [ + 'drupalcon', + ]; + + /** @test */ + public function it_returns_blog_posts() { + /** @var ArticleRepository */ + $repository = $this->container->get(ArticleRepository::class); + + $articles = $repository->getAll(); + + $this->assertCount(1, $articles); + } +// end test + +} + +// start output +E 1 / 1 (100%) + +Time: 00:00.403, Memory: 6.00 MB + +There was 1 error: + +1) Drupal\Tests\drupalcon\Kernel\ArticleRepositoryTest::it_returns_blog_posts +Error: Call to undefined method Drupal\drupalcon\Repository\ArticleRepository::getAll() + +/app/web/modules/custom/drupalcon/tests/src/ArticleRepositoryTest.php:18 +/app/vendor/phpunit/phpunit/src/Framework/TestResult.php:728 + +ERRORS! +Tests: 1, Assertions: 4, Errors: 1. +// end output diff --git a/test-driven-drupal/demo.rst b/test-driven-drupal/demo.rst new file mode 100644 index 0000000..6ef6cdc --- /dev/null +++ b/test-driven-drupal/demo.rst @@ -0,0 +1,337 @@ +.. page:: titlePage + +.. class:: centredtitle + +Demo: Building a blog module + +.. raw:: pdf + + TextAnnotation "Shortened and simplified example." + TextAnnotation "I'd use Views for this in a real situation." + +.. page:: standardPage + +Acceptance criteria +=================== + +- As a site visitor +- I want to see a list of published articles at ``/blog`` +- Ordered by post date, most recent first + +Tasks +===== + +- Ensure the blog page exists +- Ensure only published articles are shown +- Ensure the articles are shown in the correct order + +.. page:: + +.. Creating the test class. + +.. code-block:: php + :include: code/2.txt + :linenos: + :startinline: true + +.. page:: + +.. Adding the first test. + +.. code-block:: php + :end-before: // end test + :include: code/3.txt + :linenos: + :startinline: true + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/3.txt + :start-after: // start output + :startinline: true + +.. page:: + +.. code-block:: yaml + :end-before: // end routing + :include: code/3.txt + :linenos: + :start-after: // start routing + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/3.txt + :start-after: // start output + :startinline: true + +.. raw:: pdf + + TextAnnotation "Same result as the module isn't enabled." + +.. page:: + +.. code-block:: php + :include: code/4.txt + :end-before: // output + :linenos: + :startinline: true + +| + +.. code-block:: plain + :include: code/4.txt + :end-before: // end output + :start-after: // output + :startinline: true + +.. page:: + +.. Enable the node module. + +.. code-block:: php + :include: code/5.txt + :linenos: + :end-before: // end code + :startinline: true + +| + +.. code-block:: php + :include: code/5.txt + :end-before: // end output + :start-after: // start output + +.. page:: + +.. Create the Controller. + +.. code-block:: php + :end-before: // end code + :include: code/6.txt + :linenos: + :startinline: true + :start-after: // start code + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/6.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end test + :include: code/7.txt + :linenos: + :startinline: true + :start-after: // start test + +.. raw:: pdf + + TextAnnotation "Adding extra assertions." + +.. page:: + +.. code-block:: php + :end-before: // end code + :include: code/7.txt + :linenos: + :startinline: true + :start-after: // start code + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/7.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end code + :include: code/8.txt + :linenos: + :start-after: // start code + :startinline: true + + +.. code-block:: php + :end-before: // end output + :include: code/8.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end code + :include: code/9.txt + :linenos: + :start-after: // start code + :startinline: true + +| + +.. code-block:: yaml + :end-before: // end services + :include: code/9.txt + :linenos: + :start-after: // start services + +.. page:: + +.. code-block:: yaml + :end-before: // end output + :include: code/9.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end code + :include: code/10.txt + :linenos: + :start-after: // start code + :startinline: true + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/10.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end code + :include: code/11.txt + :linenos: + :startinline: true + :start-after: // start code + +.. code-block:: yaml + :end-before: // end services + :include: code/12.txt + :linenos: + :start-after: // start services + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/12.txt + :start-after: // start output + +| + +.. code-block:: php + :end-before: // end test + :include: code/13.txt + :linenos: + :start-after: // start test + :startinline: true + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/13.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end test + :include: code/14.txt + :linenos: + :start-after: // start test + :startinline: true + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/14.txt + :start-after: // start output + +.. page:: + + +.. code-block:: php + :end-before: // end test + :include: code/15.txt + :linenos: + :start-after: // start test + :startinline: true + +.. page:: + +.. code-block:: php + :end-before: // end test + :include: code/16.txt + :linenos: + :start-after: // start test + :startinline: true + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/16.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end code + :include: code/17.txt + :linenos: + :start-after: // start code + :startinline: true + +| + +.. code-block:: plain + :end-before: // end output + :include: code/17.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end test + :include: code/18.txt + :linenos: + :start-after: // start test + :startinline: true + +.. page:: + +.. code-block:: plain + :end-before: // end output + :include: code/18.txt + :start-after: // start output + +.. page:: + +.. code-block:: php + :end-before: // end code + :include: code/19.txt + :linenos: + :start-after: // start code + :startinline: true + +| + +.. code-block:: plain + :end-before: // end output + :include: code/19.txt + :start-after: // start output + diff --git a/test-driven-drupal/example.rst b/test-driven-drupal/example.rst new file mode 100644 index 0000000..97184ff --- /dev/null +++ b/test-driven-drupal/example.rst @@ -0,0 +1,107 @@ +.. page:: titlePage + +.. class:: centredtitle + +Example + +.. page:: imagePage + +.. image:: images/broadbean-website.png + :width: 20cm + +.. page:: standardPage + +Specification +============= + +* Job adverts created in Broadbean UI, create nodes in Drupal. +* Application URL links users to separate application system. +* Constructed from domain, includes role ID as a GET parameter and optionally UTM parameters. +* Jobs need to be linked to offices. +* Job length specified in number of days. +* Path is specified as a field in the API. + +.. raw:: pdf + + TextAnnotation "Jobs added to a different system by the client, data POSTed to Drupal." + TextAnnotation "Job applicants would visit the job on the Drupal site, click the application URL and go to another (CRM) system to apply." + TextAnnotation "Client wanted to be able to specify the Drupal path in advance." + +.. page:: imagePage + +| +| + +.. image:: images/broadbean-drupal-flow-2.png + :width: 20cm + +.. page:: standardPage + +Implementation +============== + +* Added route to accept data from API as XML +* Added system user with API role to authenticate +* ``active_for`` converted from number of days to UNIX timestamp +* ``branch_name`` and ``locations`` converted from plain text to entity reference (job node to office node) +* ``url_alias`` property mapped to ``path`` + +.. raw:: pdf + + TextAnnotation "Required field missing." + TextAnnotation "Incorrect branch name." + +Incoming data +============= + +.. code-block:: php + :startinline: true + + $data = [ + 'command' => 'add', + 'username' => 'bobsmith', + 'password' => 'p455w0rd', + 'active_for' => '365', + 'details' => 'This is the detailed description.', + 'job_title' => 'Healthcare Assistant (HCA)', + 'locations' => 'Bath, Devizes', + 'role_id' => 'A/52/86', + 'summary' => 'This is the short description.', + 'url_alias' => 'healthcare-assistant-aldershot-june17', + // ... + ]; + +.. raw:: pdf + + TextAnnotation "Some pf the information sent to our endpoint." + +Implementation +============== + +* If no error, create the job node, return OK response to Broadbean +* If an Exception is thrown, return an error code and message + +.. raw:: pdf + + TextAnnotation "Required field missing." + TextAnnotation "Branch name incorrect, Exception caught." + +Types of tests +============== + +* **Functional**: job nodes are created with the correct URL and the correct response code is returned +* **FunctionalJavaScript**: application URL is updated with JavaScript based on UTM parameters (hosting) +* **Kernel**: job nodes can be added and deleted, expired job nodes are deleted, application URL is generated correctly +* **Unit**: ensure number of days are converted to timestamps correctly + +Results +======= + +* 0 bugs! +* Easier to identify where issues occurred and responsibilities +* Reduced debugging time + +.. raw:: pdf + + TextAnnotation "Best case scenario." + TextAnnotation "Just because there are tests, it doesn't mean that everything works and everything's passing - just the tests that you wrote are passing." diff --git a/test-driven-drupal/images/override-node-options-1.png b/test-driven-drupal/images/override-node-options-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2b69070c7a64670384a87a04ba430c7b88abc576 GIT binary patch literal 77525 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ͮV{x7B)sUUgm$wL#PT0|0Zqk^0yZu{$%zrc4TH{ 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 literal 0 HcmV?d00001 diff --git a/test-driven-drupal/images/override-node-options-2.png b/test-driven-drupal/images/override-node-options-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d876b07bc1b1d88bf523d10cc88a42415e41912 GIT binary patch literal 93333 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%0DG_Z*SjDnwpxF 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�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 Ll2oyTN#Oqi&aO|q literal 0 HcmV?d00001 diff --git a/test-driven-drupal/slides.rst b/test-driven-drupal/slides.rst index e8b3e6f..d0a7645 100644 --- a/test-driven-drupal/slides.rst +++ b/test-driven-drupal/slides.rst @@ -7,18 +7,23 @@ TDD: Test Driven Drupal .. class:: titleslideinfo -Oliver Davies, Inviqa +Oliver Davies (@opdavies) + +| +.. class:: centred + +https://opdavi.es/tdd-test-driven-drupal .. page:: titlePage .. class:: centredtitle -Software Engineer, open-source maintainer and contributor +Software Engineer, Full Stack Development Consultant, Open-Source Maintainer .. raw:: pdf - TextAnnotation "I develop Drupal applications for clients, including custom modules and themes." - TextAnnotation "I contribute to open source projects including Drupal core." + TextAnnotation "I develop and consult on Drupal applications for clients." + TextAnnotation "I contribute to and maintain open source projects including Drupal core." TextAnnotation "Different perspectives." .. page:: imagePage @@ -29,21 +34,30 @@ Software Engineer, open-source maintainer and contributor .. raw:: pdf TextAnnotation "Become maintainer in 2012" - TextAnnotation "~223 most used module on Drupal.org" - TextAnnotation "~30,000 sites - ~20,000 D7 and ~10,000 D8/9" - - TextAnnotation "Had some existing tests, crucial to preventing regressions" .. page:: imagePage -.. image:: images/override-node-options-2012-4.png +.. image:: images/override-node-options-1.png :width: 18cm .. page:: -.. image:: images/override-node-options-2020-2.png +| + +.. image:: images/override-node-options-2.png :width: 22cm +| + +.. image:: images/override-node-options-3.png + :width: 22cm + +.. raw:: pdf + + TextAnnotation "173rd most used module on Drupal.org" + TextAnnotation "~38,000 sites - ~13,000 D7 and ~24,000 D8/9/10" + TextAnnotation "Had some existing tests, crucial to preventing regressions" + .. page:: standardPage Why write tests? @@ -59,10 +73,10 @@ Why write tests? .. raw:: pdf - TextAnnotation "I don't want to break 30,000 Drupal sites when rolling a new release, or causing a regression in a client codebase." + TextAnnotation "I don't want to break 38,000 Drupal sites when rolling a new release, or causing a regression in a client codebase." TextAnnotation "TDD often results in writing less code as you're figuring things out whilst writing the test, only writing code that's needed for the tests." TextAnnotation "Drupal core gates. Testing gate requires new tests for new features, failing test cases for bug fixes, and code coverage when refactoring code." - TextAnnotation "Same projects can work for Drupal 8 and 9, and in theory 10." + TextAnnotation "Same projects can work for Drupal 8, 9 and 10 etc." Testing in Drupal ================= @@ -71,8 +85,8 @@ Testing in Drupal * **Drupal 8** - PHPUnit added as a core dependency, later became the default via the PHPUnit initiative * **Drupal 9** - SimpleTest removed from core, moved back to contrib -Writing Tests (Drupal 8/9) -========================== +Writing PHPUnit Tests for Drupal +================================ * PHP class with ``.php`` extension * ``tests/src`` directory within each module @@ -83,6 +97,7 @@ Writing Tests (Drupal 8/9) .. raw:: pdf + TextAnnotation "Tests per module." TextAnnotation "PSR-4 autoloading." TextAnnotation "Different to D7." @@ -92,6 +107,10 @@ Writing Tests (Drupal 8/9) Arrange, Act, Assert +.. raw:: pdf + + TextAnnotation "Set up the world, perform an action, then make assertions." + .. page:: .. class:: centredtitle @@ -119,10 +138,12 @@ What to test? .. raw:: pdf - TextAnnotation "Examples of some things that I tested on a previous project." + TextAnnotation "Examples of some things that I tested on previous projects." .. page:: imagePage +| + .. image:: images/matt-stauffer-tweet.png :width: 20cm @@ -151,6 +172,10 @@ Types of Tests * **Kernel** (integration) * **Unit** +.. raw:: pdf + + TextAnnotation "Not just unit tests." + Functional Tests ================ @@ -197,26 +222,80 @@ Core script .. code-block:: shell - $ php core/scripts/run-tests.sh + $ php web/core/scripts/run-tests.sh - $ php core/scripts/run-tests.sh --module example + $ php web/core/scripts/run-tests.sh \ + --all - $ php core/scripts/run-tests.sh --class ExampleTest + $ php web/core/scripts/run-tests.sh \ + --module example + + $ php web/core/scripts/run-tests.sh \ + --class ExampleTest + +Core script +=========== + +.. code-block:: shell + + $ php web/core/scripts/run-tests.sh \ + --module example \ + --sqlite /dev/shm/test.sqlite \ + --url http://web + +.. raw:: pdf + + PageBreak + +.. code-block:: + + Drupal test run + --------------- + + Tests to be run: + - Drupal\Tests\example\Functional\ExamplePageTest + + Test run started: + Saturday, October 14, 2023 - 10:28 + + Test summary + ------------ + + Drupal\Tests\example\Functional\ExamplePageTest 1 passes + + Test run duration: 7 sec PHPUnit ======= .. code-block:: shell - $ vendor/bin/phpunit \ - -c core \ - modules/contrib/examples/phpunit_example + $ export SIMPLETEST_BASE_URL=http://web + + $ web/vendor/bin/phpunit \ + -c web/core \ + modules/contrib/examples/modules/phpunit_example .. raw:: pdf TextAnnotation "Update the phpunit path and config file path for your project." TextAnnotation "-c not needed if the phpunit.xml.dist or phpunit.xml is in the same directory." +.. raw:: pdf + + PageBreak + +.. code-block:: plain + + PHPUnit 9.6.13 by Sebastian Bergmann and contributors. + + Testing /app/web/modules/contrib/examples/modules/phpunit_example + ................................. 33 / 33 (100%) + + Time: 00:08.660, Memory: 10.00 MB + + OK (33 tests, 43 assertions) + Creating a phpunit.xml file =========================== @@ -229,111 +308,11 @@ Creating a phpunit.xml file - ``SIMPLETEST_BASE_URL``, ``SIMPLETEST_DB``, ``BROWSERTEST_OUTPUT_DIRECTORY`` - ``stopOnFailure="true"`` -.. page:: titlePage - -.. class:: centredtitle - -Example - -.. page:: imagePage - -.. image:: images/broadbean-website.png - :width: 20cm - -.. page:: standardPage - -Specification -============= - -* Job adverts created in Broadbean UI, create nodes in Drupal. -* Application URL links users to separate application system. -* Constructed from domain, includes role ID as a GET parameter and optionally UTM parameters. -* Jobs need to be linked to offices. -* Job length specified in number of days. -* Path is specified as a field in the API. - .. raw:: pdf - TextAnnotation "Jobs added to a different system by the client, data POSTed to Drupal." - TextAnnotation "Job applicants would visit the job on the Drupal site, click the application URL and go to another (CRM) system to apply." - TextAnnotation "Client wanted to be able to specify the Drupal path in advance." + TextAnnotation "For core. For projects, I create a customised phpunit.xml.dist in my project." -.. page:: imagePage - -.. image:: images/broadbean-drupal-flow-2.png - :width: 20cm - -.. page:: standardPage - -Implementation -============== - -* Added route to accept data from API as XML -* Added system user with API role to authenticate -* ``active_for`` converted from number of days to UNIX timestamp -* ``branch_name`` and ``locations`` converted from plain text to entity reference (job node to office node) -* ``url_alias`` property mapped to ``path`` - -.. raw:: pdf - - TextAnnotation "Required field missing." - TextAnnotation "Incorrect branch name." - -Incoming data -============= - -.. code-block:: php - :startinline: true - - $data = [ - 'command' => 'add', - 'username' => 'bobsmith', - 'password' => 'p455w0rd', - 'active_for' => '365', - 'details' => 'This is the detailed description.', - 'job_title' => 'Healthcare Assistant (HCA)', - 'locations' => 'Bath, Devizes', - 'role_id' => 'A/52/86', - 'summary' => 'This is the short description.', - 'url_alias' => 'healthcare-assistant-aldershot-june17', - // ... - ]; - -.. raw:: pdf - - TextAnnotation "Some pf the information sent to our endpoint." - -Implementation -============== - -* If no error, create the job node, return OK response to Broadbean -* If an Exception is thrown, return an error code and message - -.. raw:: pdf - - TextAnnotation "Required field missing." - TextAnnotation "Branch name incorrect, Exception caught." - -Types of tests -============== - -* **Functional**: job nodes are created with the correct URL and the correct response code is returned -* **FunctionalJavaScript**: application URL is updated with JavaScript based on UTM parameters (hosting) -* **Kernel**: job nodes can be added and deleted, expired job nodes are deleted, application URL is generated correctly -* **Unit**: ensure number of days are converted to timestamps correctly - -Results -======= - -* 0 bugs! -* Easier to identify where issues occurred and responsibilities -* Reduced debugging time -* Added more tests for any bugs to prevent regressions - -.. raw:: pdf - - TextAnnotation "Best case scenario." - TextAnnotation "Just because there are tests, it doesn't mean that everything works and everything's passing - just the tests that you wrote are passing." +.. include:: example.rst Test Driven Development ======================= @@ -384,27 +363,19 @@ How I Write Tests - "Outside In" TextAnnotation "Write the code in your test that you wish you had, and let the tests tell you what's missing." -.. page:: titlePage -.. class:: centredtitle +How I Write Tests - "Outside In" +================================ -Demo: Building a blog module +* Functional - 57 tests, 180 assertions +* Kernel - 38 tests, 495 assertions +* Unit - 5 tests, 18 assertions -.. page:: standardPage +| -Acceptance criteria -=================== +Run in 2-3 minutes in a CI pipeline with GitHub Actions. -- As a site visitor -- I want to see a list of published articles at ``/blog`` -- Ordered by post date, most recent first - -Tasks -===== - -- Ensure the blog page exists -- Ensure only published articles are shown -- Ensure the articles are shown in the correct order +.. include:: demo.rst .. page:: imagePage @@ -421,11 +392,13 @@ Thanks! References: -* https://opdavi.es/testing-workshop -* https://testdrivendrupal.com +* https://phpunit.de +* https://docs.phpunit.de +* https://www.drupal.org/docs/automated-testing | Me: * https://www.oliverdavies.uk +* https://www.oliverdavies.uk/atdc