From 78604da44963bf84156ae8a688019ee44101f42b Mon Sep 17 00:00:00 2001 From: Mehdi Achour Date: Sat, 4 Sep 2021 08:08:05 +0100 Subject: [PATCH 01/57] Fix typo in SECURITY.md [skip ci] --- .github/SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/SECURITY.md b/.github/SECURITY.md index f71384759..405acca4e 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -3,4 +3,4 @@ Please use the [security issue form](https://www.yiiframework.com/security) to report to us any security issue you find in Yii. DO NOT use the issue tracker or discuss it in the public forum as it will cause more damage than help. -Please note that as a non-commerial OpenSource project we are not able to pay bounties at the moment. +Please note that as a non-commercial OpenSource project we are not able to pay bounties at the moment. From fb5da1b4d0aa3371a995210be49db1e3e673b64b Mon Sep 17 00:00:00 2001 From: tobias-dietz <10538098+tobias-dietz@users.noreply.github.com> Date: Wed, 15 Sep 2021 13:01:12 +0200 Subject: [PATCH 02/57] Fix #250: Make alert widget not access all flash data (#252) --- tests/unit/widgets/AlertTest.php | 261 +++++++++++++++++++++++++++++++ widgets/Alert.php | 7 +- 2 files changed, 263 insertions(+), 5 deletions(-) create mode 100644 tests/unit/widgets/AlertTest.php diff --git a/tests/unit/widgets/AlertTest.php b/tests/unit/widgets/AlertTest.php new file mode 100644 index 000000000..5a84cbdb5 --- /dev/null +++ b/tests/unit/widgets/AlertTest.php @@ -0,0 +1,261 @@ +session->setFlash('error', $message); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($message); + expect($renderingResult)->stringContainsString('alert-danger'); + + expect($renderingResult)->stringNotContainsString('alert-success'); + expect($renderingResult)->stringNotContainsString('alert-info'); + expect($renderingResult)->stringNotContainsString('alert-warning'); + } + + public function testMultipleErrorMessages() + { + $firstMessage = 'This is the first error message'; + $secondMessage = 'This is the second error message'; + + Yii::$app->session->setFlash('error', [$firstMessage, $secondMessage]); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($firstMessage); + expect($renderingResult)->stringContainsString($secondMessage); + expect($renderingResult)->stringContainsString('alert-danger'); + + expect($renderingResult)->stringNotContainsString('alert-success'); + expect($renderingResult)->stringNotContainsString('alert-info'); + expect($renderingResult)->stringNotContainsString('alert-warning'); + } + + public function testSingleDangerMessage() + { + $message = 'This is a danger message'; + + Yii::$app->session->setFlash('danger', $message); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($message); + expect($renderingResult)->stringContainsString('alert-danger'); + + expect($renderingResult)->stringNotContainsString('alert-success'); + expect($renderingResult)->stringNotContainsString('alert-info'); + expect($renderingResult)->stringNotContainsString('alert-warning'); + } + + public function testMultipleDangerMessages() + { + $firstMessage = 'This is the first danger message'; + $secondMessage = 'This is the second danger message'; + + Yii::$app->session->setFlash('danger', [$firstMessage, $secondMessage]); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($firstMessage); + expect($renderingResult)->stringContainsString($secondMessage); + expect($renderingResult)->stringContainsString('alert-danger'); + + expect($renderingResult)->stringNotContainsString('alert-success'); + expect($renderingResult)->stringNotContainsString('alert-info'); + expect($renderingResult)->stringNotContainsString('alert-warning'); + } + + public function testSingleSuccessMessage() + { + $message = 'This is a success message'; + + Yii::$app->session->setFlash('success', $message); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($message); + expect($renderingResult)->stringContainsString('alert-success'); + + expect($renderingResult)->stringNotContainsString('alert-danger'); + expect($renderingResult)->stringNotContainsString('alert-info'); + expect($renderingResult)->stringNotContainsString('alert-warning'); + } + + public function testMultipleSuccessMessages() + { + $firstMessage = 'This is the first danger message'; + $secondMessage = 'This is the second danger message'; + + Yii::$app->session->setFlash('success', [$firstMessage, $secondMessage]); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($firstMessage); + expect($renderingResult)->stringContainsString($secondMessage); + expect($renderingResult)->stringContainsString('alert-success'); + + expect($renderingResult)->stringNotContainsString('alert-danger'); + expect($renderingResult)->stringNotContainsString('alert-info'); + expect($renderingResult)->stringNotContainsString('alert-warning'); + } + + public function testSingleInfoMessage() + { + $message = 'This is an info message'; + + Yii::$app->session->setFlash('info', $message); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($message); + expect($renderingResult)->stringContainsString('alert-info'); + + expect($renderingResult)->stringNotContainsString('alert-danger'); + expect($renderingResult)->stringNotContainsString('alert-success'); + expect($renderingResult)->stringNotContainsString('alert-warning'); + } + + public function testMultipleInfoMessages() + { + $firstMessage = 'This is the first info message'; + $secondMessage = 'This is the second info message'; + + Yii::$app->session->setFlash('info', [$firstMessage, $secondMessage]); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($firstMessage); + expect($renderingResult)->stringContainsString($secondMessage); + expect($renderingResult)->stringContainsString('alert-info'); + + expect($renderingResult)->stringNotContainsString('alert-danger'); + expect($renderingResult)->stringNotContainsString('alert-success'); + expect($renderingResult)->stringNotContainsString('alert-warning'); + } + + public function testSingleWarningMessage() + { + $message = 'This is a warning message'; + + Yii::$app->session->setFlash('warning', $message); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($message); + expect($renderingResult)->stringContainsString('alert-warning'); + + expect($renderingResult)->stringNotContainsString('alert-danger'); + expect($renderingResult)->stringNotContainsString('alert-success'); + expect($renderingResult)->stringNotContainsString('alert-info'); + } + + public function testMultipleWarningMessages() + { + $firstMessage = 'This is the first warning message'; + $secondMessage = 'This is the second warning message'; + + Yii::$app->session->setFlash('warning', [$firstMessage, $secondMessage]); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($firstMessage); + expect($renderingResult)->stringContainsString($secondMessage); + expect($renderingResult)->stringContainsString('alert-warning'); + + expect($renderingResult)->stringNotContainsString('alert-danger'); + expect($renderingResult)->stringNotContainsString('alert-success'); + expect($renderingResult)->stringNotContainsString('alert-info'); + } + + public function testSingleMixedMessages() { + $errorMessage = 'This is an error message'; + $dangerMessage = 'This is a danger message'; + $successMessage = 'This is a success message'; + $infoMessage = 'This is a info message'; + $warningMessage = 'This is a warning message'; + + Yii::$app->session->setFlash('error', $errorMessage); + Yii::$app->session->setFlash('danger', $dangerMessage); + Yii::$app->session->setFlash('success', $successMessage); + Yii::$app->session->setFlash('info', $infoMessage); + Yii::$app->session->setFlash('warning', $warningMessage); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($errorMessage); + expect($renderingResult)->stringContainsString($dangerMessage); + expect($renderingResult)->stringContainsString($successMessage); + expect($renderingResult)->stringContainsString($infoMessage); + expect($renderingResult)->stringContainsString($warningMessage); + + expect($renderingResult)->stringContainsString('alert-danger'); + expect($renderingResult)->stringContainsString('alert-success'); + expect($renderingResult)->stringContainsString('alert-info'); + expect($renderingResult)->stringContainsString('alert-warning'); + } + + public function testMultipleMixedMessages() { + $firstErrorMessage = 'This is the first error message'; + $secondErrorMessage = 'This is the second error message'; + $firstDangerMessage = 'This is the first danger message'; + $secondDangerMessage = 'This is the second'; + $firstSuccessMessage = 'This is the first success message'; + $secondSuccessMessage = 'This is the second success message'; + $firstInfoMessage = 'This is the first info message'; + $secondInfoMessage = 'This is the second info message'; + $firstWarningMessage = 'This is the first warning message'; + $secondWarningMessage = 'This is the second warning message'; + + Yii::$app->session->setFlash('error', [$firstErrorMessage, $secondErrorMessage]); + Yii::$app->session->setFlash('danger', [$firstDangerMessage, $secondDangerMessage]); + Yii::$app->session->setFlash('success', [$firstSuccessMessage, $secondSuccessMessage]); + Yii::$app->session->setFlash('info', [$firstInfoMessage, $secondInfoMessage]); + Yii::$app->session->setFlash('warning', [$firstWarningMessage, $secondWarningMessage]); + + $renderingResult = Alert::widget(); + + expect($renderingResult)->stringContainsString($firstErrorMessage); + expect($renderingResult)->stringContainsString($secondErrorMessage); + expect($renderingResult)->stringContainsString($firstDangerMessage); + expect($renderingResult)->stringContainsString($secondDangerMessage); + expect($renderingResult)->stringContainsString($firstSuccessMessage); + expect($renderingResult)->stringContainsString($secondSuccessMessage); + expect($renderingResult)->stringContainsString($firstInfoMessage); + expect($renderingResult)->stringContainsString($secondInfoMessage); + expect($renderingResult)->stringContainsString($firstWarningMessage); + expect($renderingResult)->stringContainsString($secondWarningMessage); + + expect($renderingResult)->stringContainsString('alert-danger'); + expect($renderingResult)->stringContainsString('alert-success'); + expect($renderingResult)->stringContainsString('alert-info'); + expect($renderingResult)->stringContainsString('alert-warning'); + } + + public function testFlashIntegrity() + { + $errorMessage = 'This is an error message'; + $unrelatedMessage = 'This is a message that is not related to the alert widget'; + + Yii::$app->session->setFlash('error', $errorMessage); + Yii::$app->session->setFlash('unrelated', $unrelatedMessage); + + Alert::widget(); + + // Simulate redirect + Yii::$app->session->close(); + Yii::$app->session->open(); + + expect(Yii::$app->session->getFlash('error'))->null(); + expect(Yii::$app->session->getFlash('unrelated'))->equals($unrelatedMessage); + } +} diff --git a/widgets/Alert.php b/widgets/Alert.php index 9fbc73939..fd2b1955c 100644 --- a/widgets/Alert.php +++ b/widgets/Alert.php @@ -51,13 +51,10 @@ class Alert extends \yii\bootstrap4\Widget public function run() { $session = Yii::$app->session; - $flashes = $session->getAllFlashes(); $appendClass = isset($this->options['class']) ? ' ' . $this->options['class'] : ''; - foreach ($flashes as $type => $flash) { - if (!isset($this->alertTypes[$type])) { - continue; - } + foreach (array_keys($this->alertTypes) as $type) { + $flash = $session->getFlash($type); foreach ((array) $flash as $i => $message) { echo \yii\bootstrap4\Alert::widget([ From 032681963751244b4d1154d53ed83bb71b3ff217 Mon Sep 17 00:00:00 2001 From: Sohel Ahmed Mesaniya Date: Tue, 28 Sep 2021 03:54:29 +0530 Subject: [PATCH 03/57] Add IDE autocomplete hints (#253) --- config/__autocomplete.php | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 config/__autocomplete.php diff --git a/config/__autocomplete.php b/config/__autocomplete.php new file mode 100644 index 000000000..d99dea50e --- /dev/null +++ b/config/__autocomplete.php @@ -0,0 +1,33 @@ + Date: Sat, 2 Oct 2021 12:21:51 +0500 Subject: [PATCH 04/57] Typo fixes (#254) --- .github/ISSUE_TEMPLATE.md | 2 +- README.md | 4 ++-- config/web.php | 2 +- vagrant/provision/once-as-root.sh | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 52ec8692f..a2ee92439 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -9,6 +9,6 @@ | Q | A | ---------------- | --- -| Yii vesion | +| Yii version | | PHP version | | Operating system | diff --git a/README.md b/README.md index 6db290bfa..fd9b5f6a1 100644 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ TESTING ------- Tests are located in `tests` directory. They are developed with [Codeception PHP Testing Framework](http://codeception.com/). -By default there are 3 test suites: +By default, there are 3 test suites: - `unit` - `functional` @@ -155,7 +155,7 @@ To execute acceptance tests do the following: 1. Rename `tests/acceptance.suite.yml.example` to `tests/acceptance.suite.yml` to enable suite configuration -2. Replace `codeception/base` package in `composer.json` with `codeception/codeception` to install full featured +2. Replace `codeception/base` package in `composer.json` with `codeception/codeception` to install full-featured version of Codeception 3. Update dependencies with Composer diff --git a/config/web.php b/config/web.php index 3c03de8c5..25cb0d0a2 100644 --- a/config/web.php +++ b/config/web.php @@ -29,7 +29,7 @@ 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', // send all mails to a file by default. You have to set - // 'useFileTransport' to false and configure a transport + // 'useFileTransport' to false and configure transport // for the mailer to send real emails. 'useFileTransport' => true, ], diff --git a/vagrant/provision/once-as-root.sh b/vagrant/provision/once-as-root.sh index 75cbf5a2c..1d2917016 100644 --- a/vagrant/provision/once-as-root.sh +++ b/vagrant/provision/once-as-root.sh @@ -70,7 +70,7 @@ info "Removing default site configuration" rm /etc/nginx/sites-enabled/default echo "Done!" -info "Initailize databases for MySQL" +info "Initialize databases for MySQL" mysql <<< 'CREATE DATABASE yii2basic' mysql <<< 'CREATE DATABASE yii2basic_test' echo "Done!" From 1d283a477af32f0c1ccd43fe5e661710a50dff53 Mon Sep 17 00:00:00 2001 From: Bizley Date: Sun, 31 Oct 2021 19:06:57 +0000 Subject: [PATCH 05/57] Fix #256: Fix error message in login form (#257) --- views/site/login.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/views/site/login.php b/views/site/login.php index 8104ff130..598fd81ad 100644 --- a/views/site/login.php +++ b/views/site/login.php @@ -19,8 +19,10 @@ 'id' => 'login-form', 'layout' => 'horizontal', 'fieldConfig' => [ - 'template' => "{label}\n
{input}
\n
{error}
", - 'labelOptions' => ['class' => 'col-lg-1 col-form-label'], + 'template' => "{label}\n{input}\n{error}", + 'labelOptions' => ['class' => 'col-lg-1 col-form-label mr-lg-3'], + 'inputOptions' => ['class' => 'col-lg-3 form-control'], + 'errorOptions' => ['class' => 'col-lg-7 invalid-feedback'], ], ]); ?> From 479a83cc94518ee148f96338eda53c1119a19578 Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Thu, 30 Dec 2021 10:59:54 +0300 Subject: [PATCH 06/57] release version 2.0.44 --- composer.json | 2 +- models/LoginForm.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index e3068b065..75987a3dd 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "irc": "irc://irc.freenode.net/yii", "source": "https://github.com/yiisoft/yii2" }, - "minimum-stability": "dev", + "minimum-stability": "stable", "require": { "php": ">=5.6.0", "yiisoft/yii2": "~2.0.14", diff --git a/models/LoginForm.php b/models/LoginForm.php index 66d658068..dce15ccf7 100644 --- a/models/LoginForm.php +++ b/models/LoginForm.php @@ -8,7 +8,7 @@ /** * LoginForm is the model behind the login form. * - * @property-read User|null $user This property is read-only. + * @property-read User|null $user * */ class LoginForm extends Model From 47614b78e07bba944382300ab2c97a797c39ca37 Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Thu, 30 Dec 2021 11:00:09 +0300 Subject: [PATCH 07/57] prepare for next release --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 75987a3dd..e3068b065 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "irc": "irc://irc.freenode.net/yii", "source": "https://github.com/yiisoft/yii2" }, - "minimum-stability": "stable", + "minimum-stability": "dev", "require": { "php": ">=5.6.0", "yiisoft/yii2": "~2.0.14", From 19f5d09c92d0e0b5e80e3bf07c38d53bafe50f33 Mon Sep 17 00:00:00 2001 From: Evgeniy Tkachenko Date: Fri, 14 Jan 2022 22:47:17 +0300 Subject: [PATCH 08/57] docs: correct Syntax for phpDoc (#258) Co-authored-by: githubjeka --- mail/layouts/html.php | 6 +++--- views/layouts/main.php | 4 ++-- views/site/about.php | 2 +- views/site/contact.php | 6 +++--- views/site/error.php | 8 ++++---- views/site/index.php | 2 +- views/site/login.php | 6 +++--- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/mail/layouts/html.php b/mail/layouts/html.php index bddbc6129..95732cdfa 100644 --- a/mail/layouts/html.php +++ b/mail/layouts/html.php @@ -1,9 +1,9 @@ beginPage() ?> diff --git a/views/layouts/main.php b/views/layouts/main.php index 54d139995..67328ca86 100644 --- a/views/layouts/main.php +++ b/views/layouts/main.php @@ -1,7 +1,7 @@ title = 'My Yii Application'; ?> diff --git a/views/site/login.php b/views/site/login.php index 598fd81ad..c8d495ebe 100644 --- a/views/site/login.php +++ b/views/site/login.php @@ -1,8 +1,8 @@ Date: Fri, 11 Feb 2022 16:26:38 +0300 Subject: [PATCH 09/57] release version 2.0.45 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e3068b065..75987a3dd 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "irc": "irc://irc.freenode.net/yii", "source": "https://github.com/yiisoft/yii2" }, - "minimum-stability": "dev", + "minimum-stability": "stable", "require": { "php": ">=5.6.0", "yiisoft/yii2": "~2.0.14", From 0f429780b44c9e8b347c22bbded672fb176b83b0 Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Fri, 11 Feb 2022 16:28:03 +0300 Subject: [PATCH 10/57] prepare for next release --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 75987a3dd..e3068b065 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "irc": "irc://irc.freenode.net/yii", "source": "https://github.com/yiisoft/yii2" }, - "minimum-stability": "stable", + "minimum-stability": "dev", "require": { "php": ">=5.6.0", "yiisoft/yii2": "~2.0.14", From 60d89fc5527fc8bf04d3d4683a5739270dec6f5b Mon Sep 17 00:00:00 2001 From: Luke English Date: Thu, 24 Feb 2022 21:45:17 +0000 Subject: [PATCH 11/57] Make template compatible with PHP 8.1 and Codeception 5 (#259) Co-authored-by: Luke English --- .github/workflows/build.yml | 1 + tests/functional.suite.yml | 1 + tests/functional/ContactFormCest.php | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0671f8970..103e74537 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,7 @@ jobs: - "7.3" - "7.4" - "8.0" + - "8.1" steps: - name: Checkout diff --git a/tests/functional.suite.yml b/tests/functional.suite.yml index 374c6df45..6d6ff7b4d 100644 --- a/tests/functional.suite.yml +++ b/tests/functional.suite.yml @@ -11,3 +11,4 @@ modules: enabled: - Filesystem - Yii2 + - Asserts diff --git a/tests/functional/ContactFormCest.php b/tests/functional/ContactFormCest.php index ad8167865..d17ef52fd 100644 --- a/tests/functional/ContactFormCest.php +++ b/tests/functional/ContactFormCest.php @@ -4,7 +4,7 @@ class ContactFormCest { public function _before(\FunctionalTester $I) { - $I->amOnPage(['site/contact']); + $I->amOnRoute('site/contact'); } public function openContactPage(\FunctionalTester $I) From 94bfe898451a67c066cff9559b6e7dc2634aaee4 Mon Sep 17 00:00:00 2001 From: Luke English Date: Fri, 25 Feb 2022 14:58:50 +0000 Subject: [PATCH 12/57] Update to PHP 7.4 and codeception/verify 2.2 (#260) Co-authored-by: Luke English --- .github/workflows/build.yml | 5 - composer.json | 19 +-- controllers/SiteController.php | 4 +- tests/unit/models/ContactFormTest.php | 14 +-- tests/unit/models/LoginFormTest.php | 16 +-- tests/unit/models/UserTest.php | 24 ++-- tests/unit/widgets/AlertTest.php | 162 +++++++++++++------------- views/site/contact.php | 2 +- 8 files changed, 122 insertions(+), 124 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 103e74537..f1065f909 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,11 +21,6 @@ jobs: - windows-latest php: - - "5.6" - - "7.0" - - "7.1" - - "7.2" - - "7.3" - "7.4" - "8.0" - "8.1" diff --git a/composer.json b/composer.json index e3068b065..7db83cfc4 100644 --- a/composer.json +++ b/composer.json @@ -14,24 +14,27 @@ }, "minimum-stability": "dev", "require": { - "php": ">=5.6.0", + "php": ">=7.4.0", "yiisoft/yii2": "~2.0.14", "yiisoft/yii2-bootstrap4": "~2.0.0", - "yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0" + "yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0", + "yiisoft/yii2-symfonymailer": "~2.0.3" }, "require-dev": { "yiisoft/yii2-debug": "~2.1.0", "yiisoft/yii2-gii": "~2.2.0", "yiisoft/yii2-faker": "~2.0.0", "codeception/codeception": "^4.0", - "codeception/verify": "~0.5.0 || ~1.1.0", - "codeception/specify": "~0.4.6", - "symfony/browser-kit": ">=2.7 <=4.2.4", - "codeception/module-filesystem": "^1.0.0", - "codeception/module-yii2": "^1.0.0", - "codeception/module-asserts": "^1.0.0" + "codeception/module-asserts": "^1.0", + "codeception/module-yii2": "^1.0", + "codeception/module-filesystem": "^1.0", + "codeception/verify": "^2.2", + "symfony/browser-kit": ">=2.7 <=4.2.4" }, "config": { + "allow-plugins": { + "yiisoft/yii2-composer" : true + }, "process-timeout": 1800, "fxp-asset": { "enabled": false diff --git a/controllers/SiteController.php b/controllers/SiteController.php index 6e8a85d10..67c3f50f8 100644 --- a/controllers/SiteController.php +++ b/controllers/SiteController.php @@ -19,7 +19,7 @@ public function behaviors() { return [ 'access' => [ - 'class' => AccessControl::className(), + 'class' => AccessControl::class, 'only' => ['logout'], 'rules' => [ [ @@ -30,7 +30,7 @@ public function behaviors() ], ], 'verbs' => [ - 'class' => VerbFilter::className(), + 'class' => VerbFilter::class, 'actions' => [ 'logout' => ['post'], ], diff --git a/tests/unit/models/ContactFormTest.php b/tests/unit/models/ContactFormTest.php index 93313e4a6..1bb1bb2d0 100644 --- a/tests/unit/models/ContactFormTest.php +++ b/tests/unit/models/ContactFormTest.php @@ -24,18 +24,18 @@ public function testEmailIsSentOnContact() 'verifyCode' => 'testme', ]; - expect_that($model->contact('admin@example.com')); + verify($model->contact('admin@example.com'))->notEmpty(); // using Yii2 module actions to check email was sent $this->tester->seeEmailIsSent(); /** @var MessageInterface $emailMessage */ $emailMessage = $this->tester->grabLastSentEmail(); - expect('valid email is sent', $emailMessage)->isInstanceOf('yii\mail\MessageInterface'); - expect($emailMessage->getTo())->hasKey('admin@example.com'); - expect($emailMessage->getFrom())->hasKey('noreply@example.com'); - expect($emailMessage->getReplyTo())->hasKey('tester@example.com'); - expect($emailMessage->getSubject())->equals('very important letter subject'); - expect($emailMessage->toString())->stringContainsString('body of current message'); + verify($emailMessage)->instanceOf('yii\mail\MessageInterface'); + verify($emailMessage->getTo())->arrayHasKey('admin@example.com'); + verify($emailMessage->getFrom())->arrayHasKey('noreply@example.com'); + verify($emailMessage->getReplyTo())->arrayHasKey('tester@example.com'); + verify($emailMessage->getSubject())->equals('very important letter subject'); + verify($emailMessage->toString())->stringContainsString('body of current message'); } } diff --git a/tests/unit/models/LoginFormTest.php b/tests/unit/models/LoginFormTest.php index ecdb14512..3c1dcddaa 100644 --- a/tests/unit/models/LoginFormTest.php +++ b/tests/unit/models/LoginFormTest.php @@ -20,8 +20,8 @@ public function testLoginNoUser() 'password' => 'not_existing_password', ]); - expect_not($this->model->login()); - expect_that(\Yii::$app->user->isGuest); + verify($this->model->login())->false(); + verify(\Yii::$app->user->isGuest)->true(); } public function testLoginWrongPassword() @@ -31,9 +31,9 @@ public function testLoginWrongPassword() 'password' => 'wrong_password', ]); - expect_not($this->model->login()); - expect_that(\Yii::$app->user->isGuest); - expect($this->model->errors)->hasKey('password'); + verify($this->model->login())->false(); + verify(\Yii::$app->user->isGuest)->true(); + verify($this->model->errors)->arrayHasKey('password'); } public function testLoginCorrect() @@ -43,9 +43,9 @@ public function testLoginCorrect() 'password' => 'demo', ]); - expect_that($this->model->login()); - expect_not(\Yii::$app->user->isGuest); - expect($this->model->errors)->hasntKey('password'); + verify($this->model->login())->true(); + verify(\Yii::$app->user->isGuest)->false(); + verify($this->model->errors)->arrayHasNotKey('password'); } } diff --git a/tests/unit/models/UserTest.php b/tests/unit/models/UserTest.php index cb612785f..cd1072593 100644 --- a/tests/unit/models/UserTest.php +++ b/tests/unit/models/UserTest.php @@ -8,24 +8,24 @@ class UserTest extends \Codeception\Test\Unit { public function testFindUserById() { - expect_that($user = User::findIdentity(100)); - expect($user->username)->equals('admin'); + verify($user = User::findIdentity(100))->notEmpty(); + verify($user->username)->equals('admin'); - expect_not(User::findIdentity(999)); + verify(User::findIdentity(999))->empty(); } public function testFindUserByAccessToken() { - expect_that($user = User::findIdentityByAccessToken('100-token')); - expect($user->username)->equals('admin'); + verify($user = User::findIdentityByAccessToken('100-token'))->notEmpty(); + verify($user->username)->equals('admin'); - expect_not(User::findIdentityByAccessToken('non-existing')); + verify(User::findIdentityByAccessToken('non-existing'))->empty(); } public function testFindUserByUsername() { - expect_that($user = User::findByUsername('admin')); - expect_not(User::findByUsername('not-admin')); + verify($user = User::findByUsername('admin'))->notEmpty(); + verify(User::findByUsername('not-admin'))->empty(); } /** @@ -34,11 +34,11 @@ public function testFindUserByUsername() public function testValidateUser($user) { $user = User::findByUsername('admin'); - expect_that($user->validateAuthKey('test100key')); - expect_not($user->validateAuthKey('test102key')); + verify($user->validateAuthKey('test100key'))->notEmpty(); + verify($user->validateAuthKey('test102key'))->empty(); - expect_that($user->validatePassword('admin')); - expect_not($user->validatePassword('123456')); + verify($user->validatePassword('admin'))->notEmpty(); + verify($user->validatePassword('123456'))->empty(); } } diff --git a/tests/unit/widgets/AlertTest.php b/tests/unit/widgets/AlertTest.php index 5a84cbdb5..e9857a161 100644 --- a/tests/unit/widgets/AlertTest.php +++ b/tests/unit/widgets/AlertTest.php @@ -15,12 +15,12 @@ public function testSingleErrorMessage() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($message); - expect($renderingResult)->stringContainsString('alert-danger'); + verify($renderingResult)->stringContainsString($message); + verify($renderingResult)->stringContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-info'); - expect($renderingResult)->stringNotContainsString('alert-warning'); + verify($renderingResult)->stringNotContainsString('alert-success'); + verify($renderingResult)->stringNotContainsString('alert-info'); + verify($renderingResult)->stringNotContainsString('alert-warning'); } public function testMultipleErrorMessages() @@ -32,13 +32,13 @@ public function testMultipleErrorMessages() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($firstMessage); - expect($renderingResult)->stringContainsString($secondMessage); - expect($renderingResult)->stringContainsString('alert-danger'); + verify($renderingResult)->stringContainsString($firstMessage); + verify($renderingResult)->stringContainsString($secondMessage); + verify($renderingResult)->stringContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-info'); - expect($renderingResult)->stringNotContainsString('alert-warning'); + verify($renderingResult)->stringNotContainsString('alert-success'); + verify($renderingResult)->stringNotContainsString('alert-info'); + verify($renderingResult)->stringNotContainsString('alert-warning'); } public function testSingleDangerMessage() @@ -49,12 +49,12 @@ public function testSingleDangerMessage() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($message); - expect($renderingResult)->stringContainsString('alert-danger'); + verify($renderingResult)->stringContainsString($message); + verify($renderingResult)->stringContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-info'); - expect($renderingResult)->stringNotContainsString('alert-warning'); + verify($renderingResult)->stringNotContainsString('alert-success'); + verify($renderingResult)->stringNotContainsString('alert-info'); + verify($renderingResult)->stringNotContainsString('alert-warning'); } public function testMultipleDangerMessages() @@ -66,13 +66,13 @@ public function testMultipleDangerMessages() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($firstMessage); - expect($renderingResult)->stringContainsString($secondMessage); - expect($renderingResult)->stringContainsString('alert-danger'); + verify($renderingResult)->stringContainsString($firstMessage); + verify($renderingResult)->stringContainsString($secondMessage); + verify($renderingResult)->stringContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-info'); - expect($renderingResult)->stringNotContainsString('alert-warning'); + verify($renderingResult)->stringNotContainsString('alert-success'); + verify($renderingResult)->stringNotContainsString('alert-info'); + verify($renderingResult)->stringNotContainsString('alert-warning'); } public function testSingleSuccessMessage() @@ -83,12 +83,12 @@ public function testSingleSuccessMessage() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($message); - expect($renderingResult)->stringContainsString('alert-success'); + verify($renderingResult)->stringContainsString($message); + verify($renderingResult)->stringContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-info'); - expect($renderingResult)->stringNotContainsString('alert-warning'); + verify($renderingResult)->stringNotContainsString('alert-danger'); + verify($renderingResult)->stringNotContainsString('alert-info'); + verify($renderingResult)->stringNotContainsString('alert-warning'); } public function testMultipleSuccessMessages() @@ -100,13 +100,13 @@ public function testMultipleSuccessMessages() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($firstMessage); - expect($renderingResult)->stringContainsString($secondMessage); - expect($renderingResult)->stringContainsString('alert-success'); + verify($renderingResult)->stringContainsString($firstMessage); + verify($renderingResult)->stringContainsString($secondMessage); + verify($renderingResult)->stringContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-info'); - expect($renderingResult)->stringNotContainsString('alert-warning'); + verify($renderingResult)->stringNotContainsString('alert-danger'); + verify($renderingResult)->stringNotContainsString('alert-info'); + verify($renderingResult)->stringNotContainsString('alert-warning'); } public function testSingleInfoMessage() @@ -117,12 +117,12 @@ public function testSingleInfoMessage() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($message); - expect($renderingResult)->stringContainsString('alert-info'); + verify($renderingResult)->stringContainsString($message); + verify($renderingResult)->stringContainsString('alert-info'); - expect($renderingResult)->stringNotContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-warning'); + verify($renderingResult)->stringNotContainsString('alert-danger'); + verify($renderingResult)->stringNotContainsString('alert-success'); + verify($renderingResult)->stringNotContainsString('alert-warning'); } public function testMultipleInfoMessages() @@ -134,13 +134,13 @@ public function testMultipleInfoMessages() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($firstMessage); - expect($renderingResult)->stringContainsString($secondMessage); - expect($renderingResult)->stringContainsString('alert-info'); + verify($renderingResult)->stringContainsString($firstMessage); + verify($renderingResult)->stringContainsString($secondMessage); + verify($renderingResult)->stringContainsString('alert-info'); - expect($renderingResult)->stringNotContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-warning'); + verify($renderingResult)->stringNotContainsString('alert-danger'); + verify($renderingResult)->stringNotContainsString('alert-success'); + verify($renderingResult)->stringNotContainsString('alert-warning'); } public function testSingleWarningMessage() @@ -151,12 +151,12 @@ public function testSingleWarningMessage() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($message); - expect($renderingResult)->stringContainsString('alert-warning'); + verify($renderingResult)->stringContainsString($message); + verify($renderingResult)->stringContainsString('alert-warning'); - expect($renderingResult)->stringNotContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-info'); + verify($renderingResult)->stringNotContainsString('alert-danger'); + verify($renderingResult)->stringNotContainsString('alert-success'); + verify($renderingResult)->stringNotContainsString('alert-info'); } public function testMultipleWarningMessages() @@ -168,13 +168,13 @@ public function testMultipleWarningMessages() $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($firstMessage); - expect($renderingResult)->stringContainsString($secondMessage); - expect($renderingResult)->stringContainsString('alert-warning'); + verify($renderingResult)->stringContainsString($firstMessage); + verify($renderingResult)->stringContainsString($secondMessage); + verify($renderingResult)->stringContainsString('alert-warning'); - expect($renderingResult)->stringNotContainsString('alert-danger'); - expect($renderingResult)->stringNotContainsString('alert-success'); - expect($renderingResult)->stringNotContainsString('alert-info'); + verify($renderingResult)->stringNotContainsString('alert-danger'); + verify($renderingResult)->stringNotContainsString('alert-success'); + verify($renderingResult)->stringNotContainsString('alert-info'); } public function testSingleMixedMessages() { @@ -192,16 +192,16 @@ public function testSingleMixedMessages() { $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($errorMessage); - expect($renderingResult)->stringContainsString($dangerMessage); - expect($renderingResult)->stringContainsString($successMessage); - expect($renderingResult)->stringContainsString($infoMessage); - expect($renderingResult)->stringContainsString($warningMessage); + verify($renderingResult)->stringContainsString($errorMessage); + verify($renderingResult)->stringContainsString($dangerMessage); + verify($renderingResult)->stringContainsString($successMessage); + verify($renderingResult)->stringContainsString($infoMessage); + verify($renderingResult)->stringContainsString($warningMessage); - expect($renderingResult)->stringContainsString('alert-danger'); - expect($renderingResult)->stringContainsString('alert-success'); - expect($renderingResult)->stringContainsString('alert-info'); - expect($renderingResult)->stringContainsString('alert-warning'); + verify($renderingResult)->stringContainsString('alert-danger'); + verify($renderingResult)->stringContainsString('alert-success'); + verify($renderingResult)->stringContainsString('alert-info'); + verify($renderingResult)->stringContainsString('alert-warning'); } public function testMultipleMixedMessages() { @@ -224,21 +224,21 @@ public function testMultipleMixedMessages() { $renderingResult = Alert::widget(); - expect($renderingResult)->stringContainsString($firstErrorMessage); - expect($renderingResult)->stringContainsString($secondErrorMessage); - expect($renderingResult)->stringContainsString($firstDangerMessage); - expect($renderingResult)->stringContainsString($secondDangerMessage); - expect($renderingResult)->stringContainsString($firstSuccessMessage); - expect($renderingResult)->stringContainsString($secondSuccessMessage); - expect($renderingResult)->stringContainsString($firstInfoMessage); - expect($renderingResult)->stringContainsString($secondInfoMessage); - expect($renderingResult)->stringContainsString($firstWarningMessage); - expect($renderingResult)->stringContainsString($secondWarningMessage); - - expect($renderingResult)->stringContainsString('alert-danger'); - expect($renderingResult)->stringContainsString('alert-success'); - expect($renderingResult)->stringContainsString('alert-info'); - expect($renderingResult)->stringContainsString('alert-warning'); + verify($renderingResult)->stringContainsString($firstErrorMessage); + verify($renderingResult)->stringContainsString($secondErrorMessage); + verify($renderingResult)->stringContainsString($firstDangerMessage); + verify($renderingResult)->stringContainsString($secondDangerMessage); + verify($renderingResult)->stringContainsString($firstSuccessMessage); + verify($renderingResult)->stringContainsString($secondSuccessMessage); + verify($renderingResult)->stringContainsString($firstInfoMessage); + verify($renderingResult)->stringContainsString($secondInfoMessage); + verify($renderingResult)->stringContainsString($firstWarningMessage); + verify($renderingResult)->stringContainsString($secondWarningMessage); + + verify($renderingResult)->stringContainsString('alert-danger'); + verify($renderingResult)->stringContainsString('alert-success'); + verify($renderingResult)->stringContainsString('alert-info'); + verify($renderingResult)->stringContainsString('alert-warning'); } public function testFlashIntegrity() @@ -255,7 +255,7 @@ public function testFlashIntegrity() Yii::$app->session->close(); Yii::$app->session->open(); - expect(Yii::$app->session->getFlash('error'))->null(); - expect(Yii::$app->session->getFlash('unrelated'))->equals($unrelatedMessage); + verify(Yii::$app->session->getFlash('error'))->empty(); + verify(Yii::$app->session->getFlash('unrelated'))->equals($unrelatedMessage); } } diff --git a/views/site/contact.php b/views/site/contact.php index d92e21ff5..4ae25a933 100644 --- a/views/site/contact.php +++ b/views/site/contact.php @@ -51,7 +51,7 @@ field($model, 'body')->textarea(['rows' => 6]) ?> - field($model, 'verifyCode')->widget(Captcha::className(), [ + field($model, 'verifyCode')->widget(Captcha::class, [ 'template' => '
{image}
{input}
', ]) ?> From 6720c62f6861a8a6416cf06eb96edd5e6c51d1ea Mon Sep 17 00:00:00 2001 From: Anton Date: Tue, 26 Apr 2022 21:57:19 +0300 Subject: [PATCH 13/57] Add missing file '/mail/layouts/text.php' (#261) --- mail/layouts/text.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mail/layouts/text.php diff --git a/mail/layouts/text.php b/mail/layouts/text.php new file mode 100644 index 000000000..c3768640b --- /dev/null +++ b/mail/layouts/text.php @@ -0,0 +1,13 @@ +beginPage(); +$this->beginBody(); +echo $content; +$this->endBody(); +$this->endPage(); From 24d97b99f8a3dd85bac90f9e72c6e206d61d8436 Mon Sep 17 00:00:00 2001 From: Lucas Bartholemy Date: Fri, 17 Jun 2022 17:46:18 +0200 Subject: [PATCH 14/57] Removed Swiftmailer dependency (#264) --- composer.json | 1 - config/test.php | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 7db83cfc4..0edbf98d2 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,6 @@ "php": ">=7.4.0", "yiisoft/yii2": "~2.0.14", "yiisoft/yii2-bootstrap4": "~2.0.0", - "yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0", "yiisoft/yii2-symfonymailer": "~2.0.3" }, "require-dev": { diff --git a/config/test.php b/config/test.php index f95bc031e..f2e26ef58 100644 --- a/config/test.php +++ b/config/test.php @@ -17,6 +17,7 @@ 'db' => $db, 'mailer' => [ 'useFileTransport' => true, + 'messageClass' => 'yii\symfonymailer\Message' ], 'assetManager' => [ 'basePath' => __DIR__ . '/../web/assets', From 9d3b84517ad93b228311886e0737b213616bb716 Mon Sep 17 00:00:00 2001 From: Luke English Date: Fri, 17 Jun 2022 17:15:52 +0100 Subject: [PATCH 15/57] Update composer depedencies to be the same as the advanced application (#262) * Compatible with PHP 8.1 and Codeception 5 * Add PHP 8.1 to workflow * PHP 7.4 as a minimum * Updated dependencies Co-authored-by: Luke English --- .gitignore | 3 +++ assets/AppAsset.php | 2 +- codeception.yml | 2 +- composer.json | 16 +++++++++------- config/test.php | 3 +++ config/web.php | 7 +++---- tests/acceptance.suite.yml.example | 2 +- tests/functional.suite.yml | 2 +- tests/unit.suite.yml | 2 +- tests/unit/models/UserTest.php | 2 +- views/layouts/main.php | 8 ++++---- views/site/contact.php | 6 +++--- views/site/login.php | 6 +++--- widgets/Alert.php | 4 ++-- 14 files changed, 36 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index 5bd9be80b..28419e445 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,9 @@ Thumbs.db # composer itself is not needed composer.phar +# composer lock +composer.lock + # Mac DS_Store Files .DS_Store diff --git a/assets/AppAsset.php b/assets/AppAsset.php index 3b950fe7d..732d48efc 100644 --- a/assets/AppAsset.php +++ b/assets/AppAsset.php @@ -26,6 +26,6 @@ class AppAsset extends AssetBundle ]; public $depends = [ 'yii\web\YiiAsset', - 'yii\bootstrap4\BootstrapAsset', + 'yii\bootstrap5\BootstrapAsset' ]; } diff --git a/codeception.yml b/codeception.yml index c8c21690d..dd8febcff 100644 --- a/codeception.yml +++ b/codeception.yml @@ -2,7 +2,7 @@ actor: Tester bootstrap: _bootstrap.php paths: tests: tests - log: tests/_output + output: tests/_output data: tests/_data helpers: tests/_support settings: diff --git a/composer.json b/composer.json index 0edbf98d2..31d1a6db3 100644 --- a/composer.json +++ b/composer.json @@ -15,20 +15,22 @@ "minimum-stability": "dev", "require": { "php": ">=7.4.0", - "yiisoft/yii2": "~2.0.14", - "yiisoft/yii2-bootstrap4": "~2.0.0", + "yiisoft/yii2": "~2.0.45", + "yiisoft/yii2-bootstrap5": "~2.0.2", "yiisoft/yii2-symfonymailer": "~2.0.3" }, "require-dev": { "yiisoft/yii2-debug": "~2.1.0", "yiisoft/yii2-gii": "~2.2.0", "yiisoft/yii2-faker": "~2.0.0", - "codeception/codeception": "^4.0", - "codeception/module-asserts": "^1.0", - "codeception/module-yii2": "^1.0", - "codeception/module-filesystem": "^1.0", + "phpunit/phpunit": "~9.5.0", + "codeception/codeception": "^5.0.0-alpha2 || ^4.0", + "codeception/lib-innerbrowser": "^3.0 || ^1.1", + "codeception/module-asserts": "^3.0 || ^1.1", + "codeception/module-yii2": "dev-codecept5 || ^1.1", + "codeception/module-filesystem": "^3.0 || ^1.1", "codeception/verify": "^2.2", - "symfony/browser-kit": ">=2.7 <=4.2.4" + "symfony/browser-kit": "^6.0 || >=2.7 <=4.2.4" }, "config": { "allow-plugins": { diff --git a/config/test.php b/config/test.php index f2e26ef58..317bc1cb6 100644 --- a/config/test.php +++ b/config/test.php @@ -16,6 +16,9 @@ 'components' => [ 'db' => $db, 'mailer' => [ + 'class' => \yii\symfonymailer\Mailer::class, + 'viewPath' => '@app/mail', + // send all mails to a file by default. 'useFileTransport' => true, 'messageClass' => 'yii\symfonymailer\Message' ], diff --git a/config/web.php b/config/web.php index 25cb0d0a2..8b9dd3f94 100644 --- a/config/web.php +++ b/config/web.php @@ -27,10 +27,9 @@ 'errorAction' => 'site/error', ], 'mailer' => [ - 'class' => 'yii\swiftmailer\Mailer', - // send all mails to a file by default. You have to set - // 'useFileTransport' to false and configure transport - // for the mailer to send real emails. + 'class' => \yii\symfonymailer\Mailer::class, + 'viewPath' => '@app/mail', + // send all mails to a file by default. 'useFileTransport' => true, ], 'log' => [ diff --git a/tests/acceptance.suite.yml.example b/tests/acceptance.suite.yml.example index 7bb4986fd..3821d4fe4 100644 --- a/tests/acceptance.suite.yml.example +++ b/tests/acceptance.suite.yml.example @@ -1,4 +1,4 @@ -class_name: AcceptanceTester +actor: AcceptanceTester modules: enabled: - WebDriver: diff --git a/tests/functional.suite.yml b/tests/functional.suite.yml index 6d6ff7b4d..9d8cf149c 100644 --- a/tests/functional.suite.yml +++ b/tests/functional.suite.yml @@ -6,7 +6,7 @@ # RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. #basic/web/index.php -class_name: FunctionalTester +actor: FunctionalTester modules: enabled: - Filesystem diff --git a/tests/unit.suite.yml b/tests/unit.suite.yml index d2e6622f8..c14e49c37 100644 --- a/tests/unit.suite.yml +++ b/tests/unit.suite.yml @@ -3,7 +3,7 @@ # suite for unit (internal) tests. # RUN `build` COMMAND AFTER ADDING/REMOVING MODULES. -class_name: UnitTester +actor: UnitTester modules: enabled: - Asserts diff --git a/tests/unit/models/UserTest.php b/tests/unit/models/UserTest.php index cd1072593..28986cbbd 100644 --- a/tests/unit/models/UserTest.php +++ b/tests/unit/models/UserTest.php @@ -31,7 +31,7 @@ public function testFindUserByUsername() /** * @depends testFindUserByUsername */ - public function testValidateUser($user) + public function testValidateUser() { $user = User::findByUsername('admin'); verify($user->validateAuthKey('test100key'))->notEmpty(); diff --git a/views/layouts/main.php b/views/layouts/main.php index 67328ca86..8de99c540 100644 --- a/views/layouts/main.php +++ b/views/layouts/main.php @@ -5,10 +5,10 @@ use app\assets\AppAsset; use app\widgets\Alert; -use yii\bootstrap4\Breadcrumbs; -use yii\bootstrap4\Html; -use yii\bootstrap4\Nav; -use yii\bootstrap4\NavBar; +use yii\bootstrap5\Breadcrumbs; +use yii\bootstrap5\Html; +use yii\bootstrap5\Nav; +use yii\bootstrap5\NavBar; AppAsset::register($this); ?> diff --git a/views/site/contact.php b/views/site/contact.php index 4ae25a933..597fabcb2 100644 --- a/views/site/contact.php +++ b/views/site/contact.php @@ -1,11 +1,11 @@ title = 'Contact'; diff --git a/views/site/login.php b/views/site/login.php index c8d495ebe..ebb07d9c3 100644 --- a/views/site/login.php +++ b/views/site/login.php @@ -1,11 +1,11 @@ title = 'Login'; $this->params['breadcrumbs'][] = $this->title; diff --git a/widgets/Alert.php b/widgets/Alert.php index fd2b1955c..1302c1f29 100644 --- a/widgets/Alert.php +++ b/widgets/Alert.php @@ -23,7 +23,7 @@ * @author Kartik Visweswaran * @author Alexander Makarov */ -class Alert extends \yii\bootstrap4\Widget +class Alert extends \yii\bootstrap5\Widget { /** * @var array the alert types configuration for the flash messages. @@ -57,7 +57,7 @@ public function run() $flash = $session->getFlash($type); foreach ((array) $flash as $i => $message) { - echo \yii\bootstrap4\Alert::widget([ + echo \yii\bootstrap5\Alert::widget([ 'body' => $message, 'closeButton' => $this->closeButton, 'options' => array_merge($this->options, [ From 69461fcd871bfbaf00ad6234194ad64a952736d6 Mon Sep 17 00:00:00 2001 From: Luke English Date: Fri, 17 Jun 2022 23:41:05 +0100 Subject: [PATCH 16/57] replace "codeception/codeception": "^5.0.0-alpha2" with "codeception/codeception": "^5.0.0" --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 31d1a6db3..f169290f4 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "yiisoft/yii2-gii": "~2.2.0", "yiisoft/yii2-faker": "~2.0.0", "phpunit/phpunit": "~9.5.0", - "codeception/codeception": "^5.0.0-alpha2 || ^4.0", + "codeception/codeception": "^5.0.0 || ^4.0", "codeception/lib-innerbrowser": "^3.0 || ^1.1", "codeception/module-asserts": "^3.0 || ^1.1", "codeception/module-yii2": "dev-codecept5 || ^1.1", From b306be778d958c6c9d2e527a722bf10c71d3d5ae Mon Sep 17 00:00:00 2001 From: Luke English Date: Tue, 21 Jun 2022 12:34:09 +0100 Subject: [PATCH 17/57] update yii2 codeception module as its now a proper release (1.1.6) --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index f169290f4..fae8c1a58 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "codeception/codeception": "^5.0.0 || ^4.0", "codeception/lib-innerbrowser": "^3.0 || ^1.1", "codeception/module-asserts": "^3.0 || ^1.1", - "codeception/module-yii2": "dev-codecept5 || ^1.1", + "codeception/module-yii2": "^1.1", "codeception/module-filesystem": "^3.0 || ^1.1", "codeception/verify": "^2.2", "symfony/browser-kit": "^6.0 || >=2.7 <=4.2.4" From e35ea2e81436c17b5fd2db1d4c626409f47f2f87 Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 19 Aug 2022 00:57:02 +0300 Subject: [PATCH 18/57] Fix #267: Adjust main layout for Bootstrap5 (#268) --- views/layouts/main.php | 56 ++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/views/layouts/main.php b/views/layouts/main.php index 8de99c540..0fa458c5f 100644 --- a/views/layouts/main.php +++ b/views/layouts/main.php @@ -11,28 +11,30 @@ use yii\bootstrap5\NavBar; AppAsset::register($this); + +$this->registerCsrfMetaTags(); +$this->registerMetaTag(['charset' => Yii::$app->charset], 'charset'); +$this->registerMetaTag(['name' => 'viewport', 'content' => 'width=device-width, initial-scale=1, shrink-to-fit=no']); +$this->registerMetaTag(['name' => 'description', 'content' => $this->params['meta_description'] ?? '']); +$this->registerMetaTag(['name' => 'keywords', 'content' => $this->params['meta_keywords'] ?? '']); +$this->registerLinkTag(['rel' => 'icon', 'type' => 'image/x-icon', 'href' => '@web/favicon.ico']); ?> beginPage() ?> - - - registerCsrfMetaTags() ?> <?= Html::encode($this->title) ?> head() ?> beginBody() ?> -
+ -
+
- isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], - ]) ?> + params['breadcrumbs'])): ?> + $this->params['breadcrumbs']]) ?> +
-