From 36bdb82034c1d9386427a9a1492618ca7505c0ce Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Fri, 11 Feb 2022 16:26:38 +0300 Subject: [PATCH 01/49] 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 02/49] 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 03/49] 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 04/49] 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 05/49] 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 06/49] 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 07/49] 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 08/49] 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 09/49] 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 10/49] 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']]) ?> +
-