= $podcast->copyright ?>
= lang('Common.powered_by', [
'castopod' =>
diff --git a/composer.lock b/composer.lock
index 38bacea6..b8932845 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "37551523e4097a9341bc00dd317f573d",
+ "content-hash": "58e59ff661eaa3553d3f9f9f88b9d274",
"packages": [
{
"name": "codeigniter4/codeigniter4",
@@ -12,12 +12,12 @@
"source": {
"type": "git",
"url": "https://github.com/codeigniter4/CodeIgniter4.git",
- "reference": "13ff147fa4cd9db15888b041ef35bc22ed94252a"
+ "reference": "58993fbbab54a2523be25e8230337b855f465a7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/codeigniter4/CodeIgniter4/zipball/13ff147fa4cd9db15888b041ef35bc22ed94252a",
- "reference": "13ff147fa4cd9db15888b041ef35bc22ed94252a",
+ "url": "https://api.github.com/repos/codeigniter4/CodeIgniter4/zipball/58993fbbab54a2523be25e8230337b855f465a7a",
+ "reference": "58993fbbab54a2523be25e8230337b855f465a7a",
"shasum": ""
},
"require": {
@@ -53,7 +53,6 @@
},
"scripts": {
"post-update-cmd": [
- "@composer dump-autoload",
"CodeIgniter\\ComposerScripts::postUpdate",
"bash admin/setup.sh"
],
@@ -75,7 +74,7 @@
"slack": "https://codeigniterchat.slack.com",
"issues": "https://github.com/codeigniter4/CodeIgniter4/issues"
},
- "time": "2020-10-20T18:13:11+00:00"
+ "time": "2020-10-21T16:26:19+00:00"
},
{
"name": "composer/ca-bundle",
@@ -805,12 +804,12 @@
"source": {
"type": "git",
"url": "https://github.com/lonnieezell/myth-auth.git",
- "reference": "e9d6a2f557bd275158e0b84624534b2abeeb539c"
+ "reference": "fe9739e1a410d9a30292faee9e8b6369667241e8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lonnieezell/myth-auth/zipball/e9d6a2f557bd275158e0b84624534b2abeeb539c",
- "reference": "e9d6a2f557bd275158e0b84624534b2abeeb539c",
+ "url": "https://api.github.com/repos/lonnieezell/myth-auth/zipball/fe9739e1a410d9a30292faee9e8b6369667241e8",
+ "reference": "fe9739e1a410d9a30292faee9e8b6369667241e8",
"shasum": ""
},
"require": {
@@ -860,7 +859,7 @@
"type": "patreon"
}
],
- "time": "2020-10-16T18:51:37+00:00"
+ "time": "2020-10-22T03:25:47+00:00"
},
{
"name": "opawg/user-agents-php",
diff --git a/package-lock.json b/package-lock.json
index 047c1bfa..0267e005 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"@amcharts/amcharts4": {
- "version": "4.10.7",
- "resolved": "https://registry.npmjs.org/@amcharts/amcharts4/-/amcharts4-4.10.7.tgz",
- "integrity": "sha512-XWITAuewadEnkX9XgZTqT6CUn91gCJpvLJYrnSdnwu4GOGV4Siu6esoEb4JEYQYEDCzDIK3zlmOT5+a0fulcTw==",
+ "version": "4.10.8",
+ "resolved": "https://registry.npmjs.org/@amcharts/amcharts4/-/amcharts4-4.10.8.tgz",
+ "integrity": "sha512-2xIPHkvuxhsN49btE+K0ThO0CxvEgHC+n2aFa05GLwIH2JKgSjFBmjSvELrEqlEYf2mEPjmKjuYe6d4TgHfGUA==",
"requires": {
"@babel/runtime": "^7.6.3",
"core-js": "^3.0.0",
@@ -53,16 +53,16 @@
"dev": true
},
"@babel/core": {
- "version": "7.12.1",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.1.tgz",
- "integrity": "sha512-6bGmltqzIJrinwRRdczQsMhruSi9Sqty9Te+/5hudn4Izx/JYRhW1QELpR+CIL0gC/c9A7WroH6FmkDGxmWx3w==",
+ "version": "7.12.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz",
+ "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.10.4",
"@babel/generator": "^7.12.1",
"@babel/helper-module-transforms": "^7.12.1",
"@babel/helpers": "^7.12.1",
- "@babel/parser": "^7.12.1",
+ "@babel/parser": "^7.12.3",
"@babel/template": "^7.10.4",
"@babel/traverse": "^7.12.1",
"@babel/types": "^7.12.1",
@@ -102,6 +102,12 @@
"js-tokens": "^4.0.0"
}
},
+ "@babel/parser": {
+ "version": "7.12.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz",
+ "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==",
+ "dev": true
+ },
"@babel/types": {
"version": "7.12.1",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz",
@@ -2379,13 +2385,13 @@
"integrity": "sha512-RFwCobxsvZ6j7twS7dHIZQZituMIDJJNHS/qY6iuthVebxS3zhRY+jaC2roEKiAYaVuTcGmX6Luc6YBcf6zJVg=="
},
"@prettier/plugin-php": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/@prettier/plugin-php/-/plugin-php-0.15.0.tgz",
- "integrity": "sha512-OnzCmDTDdWLkm2nsvtiWKip1ePoy+KucY1h9zHDVXIFWBrd+OZATeZZgC7JU7gjly96g86hW1ZHpbF9ip9KHfg==",
+ "version": "0.15.1",
+ "resolved": "https://registry.npmjs.org/@prettier/plugin-php/-/plugin-php-0.15.1.tgz",
+ "integrity": "sha512-uQiaGGXCs0uqpck1LyDU+V4Z50Qqml7ltajPQL+DB43r5aHVawDCSkgLGYZJSb1g+hK5eBmdVBqMa7ED8EBjbA==",
"dev": true,
"requires": {
"linguist-languages": "^7.5.1",
- "mem": "^6.0.1",
+ "mem": "^8.0.0",
"php-parser": "3.0.2"
}
},
@@ -3133,13 +3139,13 @@
"dev": true
},
"@typescript-eslint/eslint-plugin": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.4.1.tgz",
- "integrity": "sha512-O+8Utz8pb4OmcA+Nfi5THQnQpHSD2sDUNw9AxNHpuYOo326HZTtG8gsfT+EAYuVrFNaLyNb2QnUNkmTRDskuRA==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.5.0.tgz",
+ "integrity": "sha512-mjb/gwNcmDKNt+6mb7Aj/TjKzIJjOPcoCJpjBQC9ZnTRnBt1p4q5dJSSmIqAtsZ/Pff5N+hJlbiPc5bl6QN4OQ==",
"dev": true,
"requires": {
- "@typescript-eslint/experimental-utils": "4.4.1",
- "@typescript-eslint/scope-manager": "4.4.1",
+ "@typescript-eslint/experimental-utils": "4.5.0",
+ "@typescript-eslint/scope-manager": "4.5.0",
"debug": "^4.1.1",
"functional-red-black-tree": "^1.0.1",
"regexpp": "^3.0.0",
@@ -3156,55 +3162,55 @@
}
},
"@typescript-eslint/experimental-utils": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.4.1.tgz",
- "integrity": "sha512-Nt4EVlb1mqExW9cWhpV6pd1a3DkUbX9DeyYsdoeziKOpIJ04S2KMVDO+SEidsXRH/XHDpbzXykKcMTLdTXH6cQ==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.5.0.tgz",
+ "integrity": "sha512-bW9IpSAKYvkqDGRZzayBXIgPsj2xmmVHLJ+flGSoN0fF98pGoKFhbunIol0VF2Crka7z984EEhFi623Rl7e6gg==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.3",
- "@typescript-eslint/scope-manager": "4.4.1",
- "@typescript-eslint/types": "4.4.1",
- "@typescript-eslint/typescript-estree": "4.4.1",
+ "@typescript-eslint/scope-manager": "4.5.0",
+ "@typescript-eslint/types": "4.5.0",
+ "@typescript-eslint/typescript-estree": "4.5.0",
"eslint-scope": "^5.0.0",
"eslint-utils": "^2.0.0"
}
},
"@typescript-eslint/parser": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.4.1.tgz",
- "integrity": "sha512-S0fuX5lDku28Au9REYUsV+hdJpW/rNW0gWlc4SXzF/kdrRaAVX9YCxKpziH7djeWT/HFAjLZcnY7NJD8xTeUEg==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.5.0.tgz",
+ "integrity": "sha512-xb+gmyhQcnDWe+5+xxaQk5iCw6KqXd8VQxGiTeELTMoYeRjpocZYYRP1gFVM2C8Yl0SpUvLa1lhprwqZ00w3Iw==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "4.4.1",
- "@typescript-eslint/types": "4.4.1",
- "@typescript-eslint/typescript-estree": "4.4.1",
+ "@typescript-eslint/scope-manager": "4.5.0",
+ "@typescript-eslint/types": "4.5.0",
+ "@typescript-eslint/typescript-estree": "4.5.0",
"debug": "^4.1.1"
}
},
"@typescript-eslint/scope-manager": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.4.1.tgz",
- "integrity": "sha512-2oD/ZqD4Gj41UdFeWZxegH3cVEEH/Z6Bhr/XvwTtGv66737XkR4C9IqEkebCuqArqBJQSj4AgNHHiN1okzD/wQ==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.5.0.tgz",
+ "integrity": "sha512-C0cEO0cTMPJ/w4RA/KVe4LFFkkSh9VHoFzKmyaaDWAnPYIEzVCtJ+Un8GZoJhcvq+mPFXEsXa01lcZDHDG6Www==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "4.4.1",
- "@typescript-eslint/visitor-keys": "4.4.1"
+ "@typescript-eslint/types": "4.5.0",
+ "@typescript-eslint/visitor-keys": "4.5.0"
}
},
"@typescript-eslint/types": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.4.1.tgz",
- "integrity": "sha512-KNDfH2bCyax5db+KKIZT4rfA8rEk5N0EJ8P0T5AJjo5xrV26UAzaiqoJCxeaibqc0c/IvZxp7v2g3difn2Pn3w==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.5.0.tgz",
+ "integrity": "sha512-n2uQoXnyWNk0Les9MtF0gCK3JiWd987JQi97dMSxBOzVoLZXCNtxFckVqt1h8xuI1ix01t+iMY4h4rFMj/303g==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.4.1.tgz",
- "integrity": "sha512-wP/V7ScKzgSdtcY1a0pZYBoCxrCstLrgRQ2O9MmCUZDtmgxCO/TCqOTGRVwpP4/2hVfqMz/Vw1ZYrG8cVxvN3g==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.5.0.tgz",
+ "integrity": "sha512-gN1mffq3zwRAjlYWzb5DanarOPdajQwx5MEWkWCk0XvqC8JpafDTeioDoow2L4CA/RkYZu7xEsGZRhqrTsAG8w==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "4.4.1",
- "@typescript-eslint/visitor-keys": "4.4.1",
+ "@typescript-eslint/types": "4.5.0",
+ "@typescript-eslint/visitor-keys": "4.5.0",
"debug": "^4.1.1",
"globby": "^11.0.1",
"is-glob": "^4.0.1",
@@ -3222,12 +3228,12 @@
}
},
"@typescript-eslint/visitor-keys": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.4.1.tgz",
- "integrity": "sha512-H2JMWhLaJNeaylSnMSQFEhT/S/FsJbebQALmoJxMPMxLtlVAMy2uJP/Z543n9IizhjRayLSqoInehCeNW9rWcw==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.5.0.tgz",
+ "integrity": "sha512-UHq4FSa55NDZqscRU//O5ROFhHa9Hqn9KWTEvJGTArtTQp5GKv9Zqf6d/Q3YXXcFv4woyBml7fJQlQ+OuqRcHA==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "4.4.1",
+ "@typescript-eslint/types": "4.5.0",
"eslint-visitor-keys": "^2.0.0"
}
},
@@ -5909,9 +5915,9 @@
}
},
"eslint-config-prettier": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.13.0.tgz",
- "integrity": "sha512-LcT0i0LSmnzqK2t764pyIt7kKH2AuuqKRTtJTdddWxOiUja9HdG5GXBVF2gmCTvVYWVsTu8J2MhJLVGRh+pj8w==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz",
+ "integrity": "sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ==",
"dev": true,
"requires": {
"get-stdin": "^6.0.0"
@@ -6488,6 +6494,11 @@
"write": "1.0.3"
}
},
+ "flatpickr": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.6.tgz",
+ "integrity": "sha512-EZ48CJMttMg3maMhJoX+GvTuuEhX/RbA1YeuI19attP3pwBdbYy6+yqAEVm0o0hSBFYBiLbVxscLW6gJXq6H3A=="
+ },
"flatted": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
@@ -7888,9 +7899,9 @@
}
},
"lint-staged": {
- "version": "10.4.1",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.4.1.tgz",
- "integrity": "sha512-E2Y6Mu1haUD3ZefzwBG8tqy3QDQ9udWRS946YcuDCU8Mi22RjwxrEhLrqTLszxl80DG/sCtKdGCArzEkTsBzJQ==",
+ "version": "10.4.2",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.4.2.tgz",
+ "integrity": "sha512-OLCA9K1hS+Sl179SO6kX0JtnsaKj/MZalEhUj5yAgXsb63qPI/Gfn6Ua1KuZdbfkZNEu3/n5C/obYCu70IMt9g==",
"dev": true,
"requires": {
"chalk": "^4.1.0",
@@ -8612,13 +8623,13 @@
"integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
},
"mem": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.1.tgz",
- "integrity": "sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-8.0.0.tgz",
+ "integrity": "sha512-qrcJOe6uD+EW8Wrci1Vdiua/15Xw3n/QnaNXE7varnB6InxSk7nu3/i5jfy3S6kWxr8WYJ6R1o0afMUtvorTsA==",
"dev": true,
"requires": {
"map-age-cleaner": "^0.1.3",
- "mimic-fn": "^3.0.0"
+ "mimic-fn": "^3.1.0"
}
},
"meow": {
@@ -15403,9 +15414,9 @@
}
},
"rollup": {
- "version": "2.31.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.31.0.tgz",
- "integrity": "sha512-0d8S3XwEZ7aCP910/9SjnelgLvC+ZXziouVolzxPOM1zvKkHioGkWGJIWmlOULlmvB8BZ6S0wrgsT4yMz0eyMg==",
+ "version": "2.32.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz",
+ "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==",
"dev": true,
"requires": {
"fsevents": "~2.1.2"
@@ -17027,9 +17038,9 @@
}
},
"tailwindcss": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.9.2.tgz",
- "integrity": "sha512-D3uKSZZkh4GaKiZWmPEfNrqEmEuYdwaqXOQ7trYSQQFI5laSD9+b2FUUj5g39nk5R1omKp5tBW9wZsfJq+KIVA==",
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.9.5.tgz",
+ "integrity": "sha512-Je5t1fAfyW333YTpSxF+8uJwbnrkpyBskDtZYgSMMKQbNp6QUhEKJ4g/JIevZjD2Zidz9VxLraEUq/yWOx6nQg==",
"dev": true,
"requires": {
"@fullhuman/postcss-purgecss": "^2.1.2",
diff --git a/package.json b/package.json
index 812c0818..d1b9cf54 100644
--- a/package.json
+++ b/package.json
@@ -25,23 +25,24 @@
"release": "semantic-release"
},
"dependencies": {
- "@amcharts/amcharts4": "^4.10.7",
+ "@amcharts/amcharts4": "^4.10.8",
"@amcharts/amcharts4-geodata": "^4.1.17",
"@popperjs/core": "^2.5.3",
"choices.js": "^9.0.1",
+ "flatpickr": "^4.6.6",
"prosemirror-example-setup": "^1.1.2",
"prosemirror-markdown": "^1.5.0",
"prosemirror-state": "^1.3.3",
"prosemirror-view": "^1.16.0"
},
"devDependencies": {
- "@babel/core": "^7.12.1",
+ "@babel/core": "^7.12.3",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/preset-env": "^7.12.1",
"@babel/preset-typescript": "^7.12.1",
"@commitlint/cli": "^11.0.0",
"@commitlint/config-conventional": "^11.0.0",
- "@prettier/plugin-php": "^0.15.0",
+ "@prettier/plugin-php": "^0.15.1",
"@rollup/plugin-babel": "^5.2.1",
"@rollup/plugin-commonjs": "^15.1.0",
"@rollup/plugin-json": "^4.1.0",
@@ -55,22 +56,22 @@
"@tailwindcss/typography": "^0.2.0",
"@types/prosemirror-markdown": "^1.0.3",
"@types/prosemirror-view": "^1.16.1",
- "@typescript-eslint/eslint-plugin": "^4.4.1",
- "@typescript-eslint/parser": "^4.4.1",
+ "@typescript-eslint/eslint-plugin": "^4.5.0",
+ "@typescript-eslint/parser": "^4.5.0",
"cross-env": "^7.0.2",
"cssnano": "^4.1.10",
"cz-conventional-changelog": "^3.3.0",
"eslint": "^7.11.0",
- "eslint-config-prettier": "^6.13.0",
+ "eslint-config-prettier": "^6.14.0",
"eslint-plugin-prettier": "^3.1.4",
"husky": "^4.3.0",
- "lint-staged": "^10.4.1",
+ "lint-staged": "^10.4.2",
"postcss-cli": "^8.1.0",
"postcss-import": "^12.0.1",
"postcss-preset-env": "^6.7.0",
"prettier": "2.1.2",
"prettier-plugin-organize-imports": "^1.1.1",
- "rollup": "^2.31.0",
+ "rollup": "^2.32.1",
"rollup-plugin-multi-input": "^1.1.1",
"rollup-plugin-node-polyfills": "^0.2.1",
"rollup-plugin-postcss": "^3.1.8",
@@ -79,7 +80,7 @@
"stylelint": "^13.7.2",
"stylelint-config-standard": "^20.0.0",
"svgo": "^1.3.2",
- "tailwindcss": "^1.9.2",
+ "tailwindcss": "^1.9.5",
"typescript": "^4.0.3"
},
"husky": {
diff --git a/tests/README.md b/tests/README.md
index 24f7c828..ba8aa0e2 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -1,9 +1,9 @@
# Running Application Tests
This is the quick-start to CodeIgniter testing. Its intent is to describe what
-it takes to set up your application and get it ready to run unit tests.
-It is not intended to be a full description of the test features that you can
-use to test your application. Those details can be found in the documentation.
+it takes to set up your application and get it ready to run unit tests. It is
+not intended to be a full description of the test features that you can use to
+test your application. Those details can be found in the documentation.
## Resources
@@ -15,33 +15,36 @@ use to test your application. Those details can be found in the documentation.
It is recommended to use the latest version of PHPUnit. At the time of this
writing we are running version 8.5.2. Support for this has been built into the
**composer.json** file that ships with CodeIgniter and can easily be installed
-via [Composer](https://getcomposer.org/) if you don't already have it installed globally.
+via [Composer](https://getcomposer.org/) if you don't already have it installed
+globally.
> composer install
-If running under OS X or Linux, you can create a symbolic link to make running tests a touch nicer.
+If running under OS X or Linux, you can create a symbolic link to make running
+tests a touch nicer.
> ln -s ./vendor/bin/phpunit ./phpunit
-You also need to install [XDebug](https://xdebug.org/index.php) in order
-for code coverage to be calculated successfully.
+You also need to install [XDebug](https://xdebug.org/index.php) in order for
+code coverage to be calculated successfully.
## Setting Up
-A number of the tests use a running database.
-In order to set up the database edit the details for the `tests` group in
-**app/Config/Database.php** or **phpunit.xml**. Make sure that you provide a database engine
-that is currently running on your machine. More details on a test database setup are in the
+A number of the tests use a running database. In order to set up the database
+edit the details for the `tests` group in **app/Config/Database.php** or
+**phpunit.xml**. Make sure that you provide a database engine that is currently
+running on your machine. More details on a test database setup are in the
_Docs>>Testing>>Testing Your Database_ section of the documentation.
-If you want to run the tests without using live database you can
-exclude @DatabaseLive group. Or make a copy of **phpunit.dist.xml** -
-call it **phpunit.xml** - and comment out the named "database". This will make
-the tests run quite a bit faster.
+If you want to run the tests without using live database you can exclude
+@DatabaseLive group. Or make a copy of **phpunit.dist.xml** - call it
+**phpunit.xml** - and comment out the named "database". This will
+make the tests run quite a bit faster.
## Running the tests
-The entire test suite can be run by simply typing one command-line command from the main directory.
+The entire test suite can be run by simply typing one command-line command from
+the main directory.
> ./phpunit
@@ -52,59 +55,62 @@ directory name after phpunit.
## Generating Code Coverage
-To generate coverage information, including HTML reports you can view in your browser,
-you can use the following command:
+To generate coverage information, including HTML reports you can view in your
+browser, you can use the following command:
> ./phpunit --colors --coverage-text=tests/coverage.txt --coverage-html=tests/coverage/ -d memory_limit=1024m
This runs all of the tests again collecting information about how many lines,
-functions, and files are tested. It also reports the percentage of the code that is covered by tests.
-It is collected in two formats: a simple text file that provides an overview as well
-as a comprehensive collection of HTML files that show the status of every line of code in the project.
+functions, and files are tested. It also reports the percentage of the code that
+is covered by tests. It is collected in two formats: a simple text file that
+provides an overview as well as a comprehensive collection of HTML files that
+show the status of every line of code in the project.
-The text file can be found at **tests/coverage.txt**.
-The HTML files can be viewed by opening **tests/coverage/index.html** in your favorite browser.
+The text file can be found at **tests/coverage.txt**. The HTML files can be
+viewed by opening **tests/coverage/index.html** in your favorite browser.
## PHPUnit XML Configuration
The repository has a `phpunit.xml.dist` file in the project root that's used for
-PHPUnit configuration. This is used to provide a default configuration if you
-do not have your own configuration file in the project root.
+PHPUnit configuration. This is used to provide a default configuration if you do
+not have your own configuration file in the project root.
-The normal practice would be to copy `phpunit.xml.dist` to `phpunit.xml`
-(which is git ignored), and to tailor it as you see fit.
-For instance, you might wish to exclude database tests, or automatically generate
-HTML code coverage reports.
+The normal practice would be to copy `phpunit.xml.dist` to `phpunit.xml` (which
+is git ignored), and to tailor it as you see fit. For instance, you might wish
+to exclude database tests, or automatically generate HTML code coverage reports.
## Test Cases
Every test needs a _test case_, or class that your tests extend. CodeIgniter 4
provides a few that you may use directly:
-- `CodeIgniter\Test\CIUnitTestCase` - for basic tests with no other service needs
+- `CodeIgniter\Test\CIUnitTestCase` - for basic tests with no other service
+ needs
- `CodeIgniter\Test\CIDatabaseTestCase` - for tests that need database access
-Most of the time you will want to write your own test cases to hold functions and services
-common to your test suites.
+Most of the time you will want to write your own test cases to hold functions
+and services common to your test suites.
## Creating Tests
-All tests go in the **tests/** directory. Each test file is a class that extends a
-**Test Case** (see above) and contains methods for the individual tests. These method
-names must start with the word "test" and should have descriptive names for precisely what
-they are testing:
-`testUserCanModifyFile()` `testOutputColorMatchesInput()` `testIsLoggedInFailsWithInvalidUser()`
+All tests go in the **tests/** directory. Each test file is a class that extends
+a **Test Case** (see above) and contains methods for the individual tests. These
+method names must start with the word "test" and should have descriptive names
+for precisely what they are testing: `testUserCanModifyFile()`
+`testOutputColorMatchesInput()` `testIsLoggedInFailsWithInvalidUser()`
-Writing tests is an art, and there are many resources available to help learn how.
-Review the links above and always pay attention to your code coverage.
+Writing tests is an art, and there are many resources available to help learn
+how. Review the links above and always pay attention to your code coverage.
### Database Tests
-Tests can include migrating, seeding, and testing against a mock or live1 database.
-Be sure to modify the test case (or create your own) to point to your seed and migrations
-and include any additional steps to be run before tests in the `setUp()` method.
+Tests can include migrating, seeding, and testing against a mock or
+live1 database. Be sure to modify the test case (or create your own)
+to point to your seed and migrations and include any additional steps to be run
+before tests in the `setUp()` method.
-1 Note: If you are using database tests that require a live database connection
-you will need to rename **phpunit.xml.dist** to **phpunit.xml**, uncomment the database
-configuration lines and add your connection details. Prevent **phpunit.xml** from being
-tracked in your repo by adding it to **.gitignore**.
+1 Note: If you are using database tests that require a live database
+connection you will need to rename **phpunit.xml.dist** to **phpunit.xml**,
+uncomment the database configuration lines and add your connection details.
+Prevent **phpunit.xml** from being tracked in your repo by adding it to
+**.gitignore**.
diff --git a/tsconfig.json b/tsconfig.json
index 30890ef3..6cfc4c30 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -21,5 +21,6 @@
/* Advanced Options */
"skipLibCheck": true /* Skip type checking of declaration files. */,
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
- }
+ },
+ "include": ["app/Views/_assets/**/*"]
}