Skip to content

Commit

Permalink
Merge pull request #66 from youvo/project-tests
Browse files Browse the repository at this point in the history
Add tests for project event subscribers and resources
  • Loading branch information
simonbaese authored Dec 23, 2024
2 parents 1c13f5d + 1f48ea8 commit dfc576c
Show file tree
Hide file tree
Showing 77 changed files with 2,821 additions and 682 deletions.
161 changes: 94 additions & 67 deletions .ddev/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,61 +10,65 @@ additional_hostnames: []
additional_fqdns: []
database:
type: mariadb
version: "10.3"
nfs_mount_enabled: false
mutagen_enabled: false
version: "10.6"
host_db_port: "59002"
use_dns_when_possible: true
composer_version: "2"
web_environment: []
nodejs_version: "16"
corepack_enable: false

# Key features of ddev's config.yaml:
# Key features of DDEV's config.yaml:

# name: <projectname> # Name of the project, automatically provides
# http://projectname.ddev.site and https://projectname.ddev.site

# type: <projecttype> # drupal6/7/8, backdrop, typo3, wordpress, php
# type: <projecttype> # backdrop, cakephp, craftcms, drupal, drupal6, drupal7, drupal8, drupal9, drupal10, drupal11, laravel, magento, magento2, php, shopware6, silverstripe, symfony, typo3, wordpress
# See https://ddev.readthedocs.io/en/stable/users/quickstart/ for more
# information on the different project types

# docroot: <relative_path> # Relative path to the directory containing index.php.

# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"
# php_version: "8.3" # PHP version to use, "5.6" through "8.4"

# You can explicitly specify the webimage but this
# is not recommended, as the images are often closely tied to ddev's' behavior,
# is not recommended, as the images are often closely tied to DDEV's' behavior,
# so this can break upgrades.

# webimage: <docker_image> # nginx/php docker image.

# database:
# type: <dbtype> # mysql, mariadb
# version: <version> # database version, like "10.3" or "8.0"
# Note that mariadb_version or mysql_version from v1.18 and earlier
# will automatically be converted to this notation with just a "ddev config --auto"
# type: <dbtype> # mysql, mariadb, postgres
# version: <version> # database version, like "10.11" or "8.0"
# MariaDB versions can be 5.5-10.8, 10.11, and 11.4.
# MySQL versions can be 5.5-8.0.
# PostgreSQL versions can be 9-17.

# router_http_port: <port> # Port to be used for http (defaults to port 80)
# router_https_port: <port> # Port for https (defaults to 443)
# router_http_port: <port> # Port to be used for http (defaults to global configuration, usually 80)
# router_https_port: <port> # Port for https (defaults to global configuration, usually 443)

# xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart"
# xdebug_enabled: false # Set to true to enable Xdebug and "ddev start" or "ddev restart"
# Note that for most people the commands
# "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better,
# as leaving xdebug enabled all the time is a big performance hit.
# "ddev xdebug" to enable Xdebug and "ddev xdebug off" to disable it work better,
# as leaving Xdebug enabled all the time is a big performance hit.

# xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart"
# xhprof_enabled: false # Set to true to enable Xhprof and "ddev start" or "ddev restart"
# Note that for most people the commands
# "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better,
# as leaving xhprof enabled all the time is a big performance hit.
# "ddev xhprof" to enable Xhprof and "ddev xhprof off" to disable it work better,
# as leaving Xhprof enabled all the time is a big performance hit.

# webserver_type: nginx-fpm # or apache-fpm
# webserver_type: nginx-fpm or apache-fpm

# timezone: Europe/Berlin
# If timezone is unset, DDEV will attempt to derive it from the host system timezone
# using the $TZ environment variable or the /etc/localtime symlink.
# This is the timezone used in the containers and by PHP;
# it can be set to any valid timezone,
# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# For example Europe/Dublin or MST7MDT

# composer_root: <relative_path>
# Relative path to the composer root directory from the project root. This is
# Relative path to the Composer root directory from the project root. This is
# the directory which contains the composer.json and where all Composer related
# commands are executed.

Expand All @@ -77,12 +81,17 @@ nodejs_version: "16"
# - preview
# - snapshot
# Alternatively, an explicit Composer version may be specified, for example "2.2.18".
# To reinstall Composer after the image was built, run "ddev debug refresh".
# To reinstall Composer after the image was built, run "ddev debug rebuild".

# nodejs_version: "16"
# change from the default system Node.js version to another supported version, like 12, 14, 17, 18.
# Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any
# Node.js version, including v6, etc.
# nodejs_version: "22"
# change from the default system Node.js version to any other version.
# See https://ddev.readthedocs.io/en/stable/users/configuration/config/#nodejs_version for more information
# and https://www.npmjs.com/package/n#specifying-nodejs-versions for the full documentation,
# Note that using of 'ddev nvm' is discouraged because "nodejs_version" is much easier to use,
# can specify any version, and is more robust than using 'nvm'.

# corepack_enable: false
# Change to 'true' to 'corepack enable' and gain access to latest versions of yarn/pnpm

# additional_hostnames:
# - somename
Expand All @@ -96,10 +105,26 @@ nodejs_version: "16"
# would provide http and https URLs for "example.com" and "sub1.example.com"
# Please take care with this because it can cause great confusion.

# upload_dir: custom/upload/dir
# would set the destination path for ddev import-files to <docroot>/custom/upload/dir
# When mutagen is enabled this path is bind-mounted so that all the files
# in the upload_dir don't have to be synced into mutagen
# upload_dirs: "custom/upload/dir"
#
# upload_dirs:
# - custom/upload/dir
# - ../private
#
# would set the destination paths for ddev import-files to <docroot>/custom/upload/dir
# When Mutagen is enabled this path is bind-mounted so that all the files
# in the upload_dirs don't have to be synced into Mutagen.

# disable_upload_dirs_warning: false
# If true, turns off the normal warning that says
# "You have Mutagen enabled and your 'php' project type doesn't have upload_dirs set"

# ddev_version_constraint: ""
# Example:
# ddev_version_constraint: ">= 1.22.4"
# This will enforce that the running ddev version is within this constraint.
# See https://github.com/Masterminds/semver#checking-version-constraints for
# supported constraint formats

# working_dir:
# web: /var/www/html
Expand All @@ -108,20 +133,25 @@ nodejs_version: "16"
# These values specify the destination directory for ddev ssh and the
# directory in which commands passed into ddev exec are run.

# omit_containers: [db, dba, ddev-ssh-agent]
# omit_containers: [db, ddev-ssh-agent]
# Currently only these containers are supported. Some containers can also be
# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit
# the "db" container, several standard features of ddev that access the
# the "db" container, several standard features of DDEV that access the
# database container will be unusable. In the global configuration it is also
# possible to omit ddev-router, but not here.

# nfs_mount_enabled: false
# Great performance improvement but requires host configuration first.
# See https://ddev.readthedocs.io/en/latest/users/install/performance/#nfs

# mutagen_enabled: false
# Performance improvement using mutagen asynchronous updates.
# See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen
# performance_mode: "global"
# DDEV offers performance optimization strategies to improve the filesystem
# performance depending on your host system. Should be configured globally.
#
# If set, will override the global config. Possible values are:
# - "global": uses the value from the global config.
# - "none": disables performance optimization for this project.
# - "mutagen": enables Mutagen for this project.
# - "nfs": enables NFS for this project.
#
# See https://ddev.readthedocs.io/en/stable/users/install/performance/#nfs
# See https://ddev.readthedocs.io/en/stable/users/install/performance/#mutagen

# fail_on_hook_fail: False
# Decide whether 'ddev start' should be interrupted by a failing hook
Expand All @@ -142,20 +172,12 @@ nodejs_version: "16"
# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic
# unless explicitly specified.

# phpmyadmin_port: "8036"
# phpmyadmin_https_port: "8037"
# The PHPMyAdmin ports can be changed from the default 8036 and 8037

# host_phpmyadmin_port: "8036"
# The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed
# through ddev-router, but it can be specified and bound.

# mailhog_port: "8025"
# mailhog_https_port: "8026"
# The MailHog ports can be changed from the default 8025 and 8026
# mailpit_http_port: "8025"
# mailpit_https_port: "8026"
# The Mailpit ports can be changed from the default 8025 and 8026

# host_mailhog_port: "8025"
# The mailhog port is not normally bound on the host at all, instead being routed
# host_mailpit_port: "8025"
# The mailpit port is not normally bound on the host at all, instead being routed
# through ddev-router, but it can be bound directly to localhost if specified here.

# webimage_extra_packages: [php7.4-tidy, php-bcmath]
Expand All @@ -178,32 +200,32 @@ nodejs_version: "16"

# ngrok_args: --basic-auth username:pass1234
# Provide extra flags to the "ngrok http" command, see
# https://ngrok.com/docs#http or run "ngrok http -h"
# https://ngrok.com/docs/ngrok-agent/config or run "ngrok http -h"

# disable_settings_management: false
# If true, ddev will not create CMS-specific settings files like
# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php
# If true, DDEV will not create CMS-specific settings files like
# Drupal's settings.php/settings.ddev.php or TYPO3's additional.php
# In this case the user must provide all such settings.

# You can inject environment variables into the web container with:
# web_environment:
# - SOMEENV=somevalue
# - SOMEOTHERENV=someothervalue
# - SOMEENV=somevalue
# - SOMEOTHERENV=someothervalue

# no_project_mount: false
# (Experimental) If true, ddev will not mount the project into the web container;
# (Experimental) If true, DDEV will not mount the project into the web container;
# the user is responsible for mounting it manually or via a script.
# This is to enable experimentation with alternate file mounting strategies.
# For advanced users only!

# bind_all_interfaces: false
# If true, host ports will be bound on all network interfaces,
# not just the localhost interface. This means that ports
# not the localhost interface only. This means that ports
# will be available on the local network if the host firewall
# allows it.

# default_container_timeout: 120
# The default time that ddev waits for all containers to become ready can be increased from
# The default time that DDEV waits for all containers to become ready can be increased from
# the default 120. This helps in importing huge databases, for example.

#web_extra_exposed_ports:
Expand All @@ -216,12 +238,16 @@ nodejs_version: "16"
# https_port: 4000
# http_port: 3999
# Allows a set of extra ports to be exposed via ddev-router
# Fill in all three fields even if you don’t intend to use the https_port!
# If you don’t add https_port, then it defaults to 0 and ddev-router will fail to start.
#
# The port behavior on the ddev-webserver must be arranged separately, for example
# using web_extra_daemons.
# For example, with a web app on port 3000 inside the container, this config would
# expose that web app on https://<project>.ddev.site:9999 and http://<project>.ddev.site:9998
# web_extra_exposed_ports:
# - container_port: 3000
# - name: myapp
# container_port: 3000
# http_port: 9998
# https_port: 9999

Expand All @@ -236,10 +262,10 @@ nodejs_version: "16"
# override_config: false
# By default, config.*.yaml files are *merged* into the configuration
# But this means that some things can't be overridden
# For example, if you have 'nfs_mount_enabled: true'' you can't override it with a merge
# For example, if you have 'use_dns_when_possible: true'' you can't override it with a merge
# and you can't erase existing hooks or all environment variables.
# However, with "override_config: true" in a particular config.*.yaml file,
# 'nfs_mount_enabled: false' can override the existing values, and
# 'use_dns_when_possible: false' can override the existing values, and
# hooks:
# post-start: []
# or
Expand All @@ -249,13 +275,14 @@ nodejs_version: "16"
# can have their intended affect. 'override_config' affects only behavior of the
# config.*.yaml file it exists in.

# Many ddev commands can be extended to run tasks before or after the
# ddev command is executed, for example "post-start", "post-import-db",
# Many DDEV commands can be extended to run tasks before or after the
# DDEV command is executed, for example "post-start", "post-import-db",
# "pre-composer", "post-composer"
# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more
# information on the commands that can be extended and the tasks you can define
# for them. Example:
#hooks:
# post-import-db:
# - exec: drush cr
# - exec: drush updb
# - exec: drush sql:sanitize
# - exec: drush updatedb
# - exec: drush cache:rebuild
1 change: 1 addition & 0 deletions .ddev/php/xdebug_client_port.ini
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
[PHP]
xdebug.client_port=9003
xdebug.mode=debug
2 changes: 1 addition & 1 deletion .github/workflows/phpanalysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,4 @@ jobs:
- name: Run PHPUnit tests
run: |
vendor/bin/phpunit
vendor/bin/phpunit --testsuite unit,kernel
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,14 @@ You may use the DDEV Integration plugin or configure the database connection as
- User: `db`
- Password: `db`

### PHPUnit Tests

We have four different testsuites: `unit`, `kernel`, `functional` and `existing-site`. You can run them locally with the following command.

```
vendor/bin/phpunit --testsuite unit --configuration phpunit.ddev.xml
```

### PHPStorm CodeSniffer configuration

* https://www.drupal.org/node/1419988
Expand Down
11 changes: 6 additions & 5 deletions composer-manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ packages:
drupal/entity: 1.5.0
drupal/file_mdm: 3.1.0
drupal/filefield_paths: 1.0.0-beta8
drupal/gin: 3.0.0-rc16
drupal/gin_toolbar: 1.0.0-rc8
drupal/gin: 4.0.0
drupal/gin_toolbar: 1.0.0
drupal/image_style_warmer: 1.3.0-rc1
drupal/imagemagick: 4.0.2
drupal/jsonapi_boost: 2.0.4
Expand Down Expand Up @@ -91,13 +91,13 @@ packages:
guzzlehttp/promises: 2.0.4
guzzlehttp/psr7: 2.7.0
jangregor/phpstan-prophecy: 1.0.2
joachim-n/composer-manifest: 1.1.6
joachim-n/composer-manifest: 1.1.7
justinrainbow/json-schema: 5.3.0
lcobucci/clock: 3.0.0
lcobucci/jwt: 4.3.0
league/container: 4.2.4
league/event: 2.2.0
league/oauth2-server: 8.5.4
league/oauth2-server: 8.5.5
league/uri: 7.5.1
league/uri-interfaces: 7.5.0
lullabot/mink-selenium2-driver: v1.7.4
Expand Down Expand Up @@ -160,7 +160,7 @@ packages:
ramsey/collection: 2.0.0
ramsey/uuid: 4.7.6
react/promise: v3.2.0
roave/security-advisories: 'dev-latest:4aa68d3ea343b9576b5fdebef1332f701a7bc994'
roave/security-advisories: 'dev-latest:abbccc97f36a9c78f033525c019d310433f22b57'
sebastian/cli-parser: 1.0.2
sebastian/code-unit: 1.0.8
sebastian/code-unit-reverse-lookup: 2.0.3
Expand Down Expand Up @@ -229,3 +229,4 @@ packages:
vipnytt/sitemapparser: v1.3.0
webflo/drupal-finder: 1.3.1
webmozart/assert: 1.11.0
weitzman/drupal-test-traits: 2.5.0
8 changes: 6 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"drupal/core-vendor-hardening": "^10.4",
"drupal/entity": "^1.4",
"drupal/filefield_paths": "^1.0@beta",
"drupal/gin": "^3.0@RC",
"drupal/gin": "^4.0",
"drupal/image_style_warmer": "^1.3",
"drupal/imagemagick": "^4.0",
"drupal/jsonapi_boost": "^2.0",
Expand Down Expand Up @@ -68,6 +68,9 @@
},
"extra": {
"drupal-scaffold": {
"allowed-packages": {
"weitzman/drupal-test-traits": true
},
"locations": {
"web-root": "web/"
}
Expand Down Expand Up @@ -149,7 +152,8 @@
"phpstan/extension-installer": "^1.2",
"phpstan/phpstan": "^1.10",
"phpstan/phpstan-deprecation-rules": "^1.1",
"roave/security-advisories": "dev-latest"
"roave/security-advisories": "dev-latest",
"weitzman/drupal-test-traits": "^2.5"
},
"scripts": {
"post-drupal-scaffold-cmd": [
Expand Down
Loading

0 comments on commit dfc576c

Please sign in to comment.