-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add unit tests and Github action set-up * Only include the pipeline and index, if set * Add E2E test, fix namespaces in tests * More assertions on the search results being as expected * Refactor some methods to have a lower line-count and higher readability * Test the synonymset is created * Test onAfterWrite for publish or not, and it's indexing * onAfterDelete test * Try to add coverage tests
- Loading branch information
1 parent
eafcd45
commit 8d5e745
Showing
24 changed files
with
838 additions
and
151 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
name: elasticsearch | ||
repository: ddev/ddev-elasticsearch | ||
version: v0.2.0 | ||
install_date: "2023-10-13T15:08:20+13:00" | ||
project_files: | ||
- docker-compose.elasticsearch.yaml | ||
global_files: [] | ||
removal_actions: [] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,263 @@ | ||
name: elastictest | ||
type: silverstripe | ||
docroot: public | ||
php_version: "8.1" | ||
webserver_type: apache-fpm | ||
xdebug_enabled: false | ||
additional_hostnames: [] | ||
additional_fqdns: [] | ||
database: | ||
type: mariadb | ||
version: "10.4" | ||
use_dns_when_possible: false | ||
composer_version: "2" | ||
web_environment: [] | ||
nodejs_version: "18" | ||
|
||
# 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 | ||
|
||
# docroot: <relative_path> # Relative path to the directory containing index.php. | ||
|
||
# php_version: "8.1" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3" | ||
|
||
# You can explicitly specify the webimage but this | ||
# 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, postgres | ||
# version: <version> # database version, like "10.4" or "8.0" | ||
# MariaDB versions can be 5.5-10.8 and 10.11, MySQL versions can be 5.5-8.0 | ||
# PostgreSQL versions can be 9-15. | ||
|
||
# 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" | ||
# 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. | ||
|
||
# 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. | ||
|
||
# webserver_type: nginx-fpm, apache-fpm, or nginx-gunicorn | ||
|
||
# timezone: Europe/Berlin | ||
# 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 | ||
# the directory which contains the composer.json and where all Composer related | ||
# commands are executed. | ||
|
||
# composer_version: "2" | ||
# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1 | ||
# to use the latest major version available at the time your container is built. | ||
# It is also possible to use each other Composer version channel. This includes: | ||
# - 2.2 (latest Composer LTS version) | ||
# - stable | ||
# - 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". | ||
|
||
# nodejs_version: "18" | ||
# change from the default system Node.js version to another supported version, like 14, 16, 18, 20. | ||
# Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any | ||
# Node.js version, including v6, etc. | ||
|
||
# additional_hostnames: | ||
# - somename | ||
# - someothername | ||
# would provide http and https URLs for "somename.ddev.site" | ||
# and "someothername.ddev.site". | ||
|
||
# additional_fqdns: | ||
# - example.com | ||
# - sub1.example.com | ||
# 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_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" | ||
|
||
# working_dir: | ||
# web: /var/www/html | ||
# db: /home | ||
# would set the default working directory for the web and db services. | ||
# These values specify the destination directory for ddev ssh and the | ||
# directory in which commands passed into ddev exec are run. | ||
|
||
# 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 | ||
# database container will be unusable. In the global configuration it is also | ||
# possible to omit ddev-router, but not here. | ||
|
||
# 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/latest/users/install/performance/#nfs | ||
# See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen | ||
|
||
# fail_on_hook_fail: False | ||
# Decide whether 'ddev start' should be interrupted by a failing hook | ||
|
||
# host_https_port: "59002" | ||
# The host port binding for https can be explicitly specified. It is | ||
# dynamic unless otherwise specified. | ||
# This is not used by most people, most people use the *router* instead | ||
# of the localhost port. | ||
|
||
# host_webserver_port: "59001" | ||
# The host port binding for the ddev-webserver can be explicitly specified. It is | ||
# dynamic unless otherwise specified. | ||
# This is not used by most people, most people use the *router* instead | ||
# of the localhost port. | ||
|
||
# host_db_port: "59002" | ||
# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic | ||
# unless explicitly specified. | ||
|
||
# mailpit_http_port: "8025" | ||
# mailpit_https_port: "8026" | ||
# The Mailpit ports can be changed from the default 8025 and 8026 | ||
|
||
# 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] | ||
# Extra Debian packages that are needed in the webimage can be added here | ||
|
||
# dbimage_extra_packages: [telnet,netcat] | ||
# Extra Debian packages that are needed in the dbimage can be added here | ||
|
||
# use_dns_when_possible: true | ||
# If the host has internet access and the domain configured can | ||
# successfully be looked up, DNS will be used for hostname resolution | ||
# instead of editing /etc/hosts | ||
# Defaults to true | ||
|
||
# project_tld: ddev.site | ||
# The top-level domain used for project URLs | ||
# The default "ddev.site" allows DNS lookup via a wildcard | ||
# If you prefer you can change this to "ddev.local" to preserve | ||
# pre-v1.9 behavior. | ||
|
||
# ngrok_args: --basic-auth username:pass1234 | ||
# Provide extra flags to the "ngrok http" command, see | ||
# 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 | ||
# 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 | ||
|
||
# no_project_mount: false | ||
# (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 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 120. This helps in importing huge databases, for example. | ||
|
||
#web_extra_exposed_ports: | ||
#- name: nodejs | ||
# container_port: 3000 | ||
# http_port: 2999 | ||
# https_port: 3000 | ||
#- name: something | ||
# container_port: 4000 | ||
# 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: | ||
# - name: myapp | ||
# container_port: 3000 | ||
# http_port: 9998 | ||
# https_port: 9999 | ||
|
||
#web_extra_daemons: | ||
#- name: "http-1" | ||
# command: "/var/www/html/node_modules/.bin/http-server -p 3000" | ||
# directory: /var/www/html | ||
#- name: "http-2" | ||
# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000" | ||
# directory: /var/www/html | ||
|
||
# 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 | ||
# 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 | ||
# hooks: | ||
# post-start: [] | ||
# or | ||
# web_environment: [] | ||
# or | ||
# additional_hostnames: [] | ||
# 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", | ||
# "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: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#ddev-generated | ||
services: | ||
elasticsearch: | ||
container_name: ddev-${DDEV_SITENAME}-elasticsearch | ||
hostname: ${DDEV_SITENAME}-elasticsearch | ||
image: elasticsearch:8.10.2 | ||
expose: | ||
- "9200" | ||
- "9300" | ||
environment: | ||
- cluster.name=docker-cluster | ||
- discovery.type=single-node | ||
- bootstrap.memory_lock=true | ||
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" | ||
- VIRTUAL_HOST=$DDEV_HOSTNAME | ||
- HTTP_EXPOSE=9200:9200 | ||
- HTTPS_EXPOSE=9201:9200 | ||
- ELASTIC_PASSWORD=elastic | ||
labels: | ||
com.ddev.site-name: ${DDEV_SITENAME} | ||
com.ddev.approot: $DDEV_APPROOT | ||
volumes: | ||
- elasticsearch:/usr/share/elasticsearch/data | ||
- ".:/mnt/ddev_config" | ||
healthcheck: | ||
test: [ "CMD-SHELL", "curl --fail -k -s -u elastic:elastic https://localhost:9200" ] | ||
|
||
volumes: | ||
elasticsearch: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
xdebug.mode=coverage |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,3 +8,4 @@ | |
/.circleci export-ignore | ||
/.codeclimate.yml | ||
/.editorconfig | ||
/.fixtures |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<?php | ||
|
||
namespace App\src; | ||
|
||
class SearchIndex extends \Firesphere\ElasticSearch\Indexes\ElasticIndex | ||
{ | ||
|
||
public function getIndexName() | ||
{ | ||
return 'search-testindex'; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
Firesphere\ElasticSearch\Services\ElasticCoreService: | ||
config: | ||
endpoint: "ENVIRONMENT" | ||
Firesphere\ElasticSearch\Indexes\ElasticIndex: | ||
search-testindex: | ||
Classes: | ||
- Page | ||
FulltextFields: | ||
- Title | ||
- Content |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
name: 'PHPUnit tests' | ||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
push: | ||
branches: | ||
- main | ||
jobs: | ||
test: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: actions/checkout@v1 | ||
- uses: ddev/github-action-setup-ddev@v1 | ||
# example: composer install | ||
- run: ddev composer install --prefer-dist --no-interaction --no-progress | ||
- run: ddev composer vendor-expose | ||
- run: cp .github/assets/search.yml.test app/_config/search.yml | ||
- run: cp .github/assets/SearchIndex.php.test app/src/SearchIndex.php | ||
- run: cp example.env .env | ||
- run: ddev sake dev/build | ||
- run: ddev xdebug | ||
- run: ddev exec phpunit tests --coverage-clover ./coverage.xml | ||
- name: Upload coverage reports to Codecov | ||
uses: codecov/codecov-action@v3 | ||
env: | ||
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
/app | ||
/vendor |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"version":1,"defects":{"Firesphere\\ElasticSearch\\Tests\\EndToEndTest::testSearching":4,"Firesphere\\ElasticSearch\\Extensions\\DataObjectElasticExtensionTest::testCreatingObject":4,"Firesphere\\ElasticSearch\\Extensions\\DataObjectElasticExtensionTest::testOnAfterDelete":4,"Firesphere\\ElasticSearch\\Queries\\QueryBuilderTest::testBuildQuery":4,"Firesphere\\ElasticSearch\\Tests\\ElasticCoreServiceTest::testUpdateIndex":4},"times":{"Firesphere\\ElasticSearch\\Tests\\EndToEndTest::testSearching":0.005,"Firesphere\\ElasticSearch\\Extensions\\DataObjectElasticExtensionTest::testCreatingObject":2.175,"Firesphere\\ElasticSearch\\Extensions\\DataObjectElasticExtensionTest::testOnAfterDelete":2.074,"Firesphere\\ElasticSearch\\Tests\\SynonymSetTest::testRequireDefaultRecords":1.764,"Firesphere\\ElasticSearch\\Queries\\QueryBuilderTest::testBuildQuery":0.002,"Firesphere\\ElasticSearch\\Tests\\ElasticCoreServiceTest::testConstruct":0.121,"Firesphere\\ElasticSearch\\Tests\\ElasticCoreServiceTest::testUpdateIndex":0.132,"Firesphere\\ElasticSearch\\Tasks\\ConfigureSynonymsTaskTest::testRun":0.482}} |
Oops, something went wrong.