From ea1cb8cd29b51c5ce3e2cbc2981fa974b02bc00d Mon Sep 17 00:00:00 2001 From: Brandon Shipley Date: Sat, 24 Jan 2026 11:11:04 -0800 Subject: [PATCH] fixtures suck --- ..._AlterContactUsFormSubmissionsKeywords.php | 50 ++++++++++++ phpunit.xml.dist | 3 +- src/Model/Entity/ContactUsFormSubmission.php | 4 +- .../Table/ContactUsFormSubmissionsTable.php | 10 +-- .../ContactUsFormSubmissionsFixture.php | 16 +--- .../Component/ContactUsComponentTest.php | 80 ++++++++++--------- tests/bootstrap.php | 25 +++--- 7 files changed, 121 insertions(+), 67 deletions(-) create mode 100644 config/Migrations/20260123091420_AlterContactUsFormSubmissionsKeywords.php diff --git a/config/Migrations/20260123091420_AlterContactUsFormSubmissionsKeywords.php b/config/Migrations/20260123091420_AlterContactUsFormSubmissionsKeywords.php new file mode 100644 index 0000000..37916bd --- /dev/null +++ b/config/Migrations/20260123091420_AlterContactUsFormSubmissionsKeywords.php @@ -0,0 +1,50 @@ +table('contact_us_form_submissions'); + if ($table->hasColumn('subject')) { + $table->renameColumn('subject', 'contact_subject'); + } + if ($table->hasColumn('name')) { + $table->renameColumn('name', 'first_name'); + } + $table->addColumn('last_name', 'string', [ + 'limit' => 255, + 'default' => null, + 'null' => true, + ]); + $table->update(); + } + + /** + * down Method. + * + * More information on this method is available here: + * https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method + * @return void + */ + public function down(): void { + $table = $this->table('contact_us_form_submissions'); + if ($table->hasColumn('contact_subject')) { + $table->renameColumn('contact_subject', 'subject'); + } + if ($table->hasColumn('fist_name')) { + $table->renameColumn('fist_name', 'name'); + } + $table->removeColumn('last_name'); + $table->update(); + } + +} diff --git a/phpunit.xml.dist b/phpunit.xml.dist index d4da298..69da4f4 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -8,11 +8,12 @@ + - + tests/TestCase/ diff --git a/src/Model/Entity/ContactUsFormSubmission.php b/src/Model/Entity/ContactUsFormSubmission.php index 9a72bca..1688aea 100644 --- a/src/Model/Entity/ContactUsFormSubmission.php +++ b/src/Model/Entity/ContactUsFormSubmission.php @@ -13,7 +13,7 @@ use Cake\ORM\Entity; * @property string $client_ip * @property string $name * @property string|null $email - * @property string|null $subject + * @property string|null $contact_subject * @property string $message * @property \Cake\I18n\DateTime|null $confirm_email_sent * @property \Cake\I18n\DateTime|null $backend_email_sent @@ -34,7 +34,7 @@ class ContactUsFormSubmission extends Entity { 'client_ip' => true, 'name' => true, 'email' => true, - 'subject' => true, + 'contact_subject' => true, 'message' => true, 'confirm_email_sent' => true, 'backend_email_sent' => true, diff --git a/src/Model/Table/ContactUsFormSubmissionsTable.php b/src/Model/Table/ContactUsFormSubmissionsTable.php index 93f7be2..d738ce1 100644 --- a/src/Model/Table/ContactUsFormSubmissionsTable.php +++ b/src/Model/Table/ContactUsFormSubmissionsTable.php @@ -82,14 +82,14 @@ class ContactUsFormSubmissionsTable extends Table { $validator->allowEmptyString('email'); } - // subject + // contact_subject $validator - ->scalar('subject') - ->maxLength('subject', 255); + ->scalar('contact_subject') + ->maxLength('contact_subject', 255); if ($fields['subject'] ?? false) { - $validator->notEmptyString('subject'); + $validator->notEmptyString('contact_subject'); } else { - $validator->allowEmptyString('subject'); + $validator->allowEmptyString('contact_subject'); } $validator diff --git a/tests/Fixture/ContactUsFormSubmissionsFixture.php b/tests/Fixture/ContactUsFormSubmissionsFixture.php index 9e2e53b..1dad8fb 100644 --- a/tests/Fixture/ContactUsFormSubmissionsFixture.php +++ b/tests/Fixture/ContactUsFormSubmissionsFixture.php @@ -10,25 +10,15 @@ use Cake\TestSuite\Fixture\TestFixture; */ class ContactUsFormSubmissionsFixture extends TestFixture { + public string $table = 'contact_us_form_submissions'; + /** * Init method * * @return void */ public function init(): void { - $this->records = [ - [ - 'id' => '76fbe7fb-1949-4670-a3d2-c0b48eb98e8d', - 'submitted_at' => '2025-01-03 09:16:50', - 'client_ip' => 'Lorem ipsum dolor sit amet', - 'name' => 'Lorem ipsum dolor sit amet', - 'email' => 'Lorem ipsum dolor sit amet', - 'subject' => 'Lorem ipsum dolor sit amet', - 'message' => 'Lorem ipsum dolor sit amet, aliquet feugiat. Convallis morbi fringilla gravida, phasellus feugiat dapibus velit nunc, pulvinar eget sollicitudin venenatis cum nullam, vivamus ut a sed, mollitia lectus. Nulla vestibulum massa neque ut et, id hendrerit sit, feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.', - 'confirm_email_sent' => '2025-01-03 09:16:50', - 'backend_email_sent' => '2025-01-03 09:16:50', - ], - ]; + $this->records = []; parent::init(); } diff --git a/tests/TestCase/Controller/Component/ContactUsComponentTest.php b/tests/TestCase/Controller/Component/ContactUsComponentTest.php index 4304849..a107101 100644 --- a/tests/TestCase/Controller/Component/ContactUsComponentTest.php +++ b/tests/TestCase/Controller/Component/ContactUsComponentTest.php @@ -14,19 +14,20 @@ use CakeContactUs\Model\Entity\ContactUsFormSubmission; * CakeContactUs\Controller\Component\ContactUsComponent Test Case */ class ContactUsComponentTest extends TestCase { - - protected ContactUsComponent $component; - protected Controller $controller; - - /** + + protected ContactUsComponent $component; + + protected Controller $controller; + + /** * Fixtures * * @var array */ - protected array $fixtures = [ - 'plugin.CakeContactUs.ContactUsFormSubmissions', - ]; - + protected array $fixtures = [ + 'plugin.CakeContactUs.ContactUsFormSubmissions', + ]; + /** * setUp method * @@ -34,11 +35,11 @@ class ContactUsComponentTest extends TestCase { */ protected function setUp(): void { parent::setUp(); - $request = new ServerRequest(); - $this->controller = new Controller($request); - $registry = new ComponentRegistry($this->controller); - - $this->component = new ContactUsComponent($registry); + $request = new ServerRequest(); + $this->controller = new Controller($request); + $registry = new ComponentRegistry($this->controller); + + $this->component = new ContactUsComponent($registry); } /** @@ -51,27 +52,34 @@ class ContactUsComponentTest extends TestCase { parent::tearDown(); } - - public function testNewContactUsFormWithoutCaptcha() - { - $this->assertInstanceOf(ContactUsFormSubmission::class, $this->component->newContactUsForm()); - } - - public function testNewContactUsFormWithCaptcha() - { - $this->component->setConfig('requireCaptcha', true); - $this->assertInstanceOf(ContactUsFormSubmission::class, $this->component->newContactUsForm()); - } - public function testProcessContactUsFormSaved() - { - $numSubmissionsBefore = $this->fetchTable('CakeContactUs/ContactUsFormSubmissions')->find()->count(); - $result = $this->component->processContactUsForm($this->component->newContactUsForm(), [ - 'name' => 'Jane Doe', - 'email' => 'test@example.com', - ]); - $this->assertNotInstanceOf(ContactUsFormSubmission::class, $result); - $numSubmissionsAfter = $this->fetchTable('CakeContactUs/ContactUsFormSubmissions')->find()->count(); - $this->assertEquals($numSubmissionsBefore + 1, $numSubmissionsAfter); - } + /** + * @return void + */ + public function testNewContactUsFormWithoutCaptcha() { + $this->assertInstanceOf(ContactUsFormSubmission::class, $this->component->newContactUsForm()); + } + + /** + * @return void + */ + public function testNewContactUsFormWithCaptcha() { + $this->component->setConfig('requireCaptcha', true); + $this->assertInstanceOf(ContactUsFormSubmission::class, $this->component->newContactUsForm()); + } + + /** + * @return void + */ + public function testProcessContactUsFormSaved() { + $numSubmissionsBefore = $this->fetchTable('CakeContactUs/ContactUsFormSubmissions')->find()->count(); + $result = $this->component->processContactUsForm($this->component->newContactUsForm(), [ + 'name' => 'Jane Doe', + 'email' => 'test@example.com', + ]); + $this->assertNotInstanceOf(ContactUsFormSubmission::class, $result); + $numSubmissionsAfter = $this->fetchTable('CakeContactUs/ContactUsFormSubmissions')->find()->count(); + $this->assertEquals($numSubmissionsBefore + 1, $numSubmissionsAfter); + } + } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index aa07675..fc0e90b 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -141,6 +141,7 @@ ConnectionManager::setConfig('test', [ 'timezone' => 'UTC', 'quoteIdentifiers' => false, 'cacheMetadata' => true, + 'log' => true, ]); /** @@ -156,16 +157,20 @@ ConnectionManager::setConfig('test', [ // Load a schema dump file. //(new SchemaLoader())->loadSqlFiles('tests/schema.sql', 'test'); if (!defined('SECOND')) { - define('SECOND', 1); - define('MINUTE', 60); - define('HOUR', 3600); - define('DAY', 86400); - define('WEEK', 604800); - define('MONTH', 2592000); - define('YEAR', 31536000); + define('SECOND', 1); + define('MINUTE', 60); + define('HOUR', 3600); + define('DAY', 86400); + define('WEEK', 604800); + define('MONTH', 2592000); + define('YEAR', 31536000); } - $migrator = new Migrator(); -$migrator->run(['plugin' => 'CakeContactUs']); -$migrator->run(['plugin' => 'Captcha']); +$migrator->runMany([ + // Run app migrations on test connection. + ['connection' => 'test'], + // Run plugin migrations on test connection. + ['plugin' => 'CakeContactUs'], + ['plugin' => 'Captcha'], +]);