fixtures suck

This commit is contained in:
2026-01-24 11:11:04 -08:00
parent 37b7bca3be
commit ea1cb8cd29
7 changed files with 121 additions and 67 deletions

View File

@@ -0,0 +1,50 @@
<?php
declare(strict_types=1);
use Migrations\AbstractMigration;
class AlterContactUsFormSubmissionsKeywords extends AbstractMigration {
/**
* up 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 up(): void {
$table = $this->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();
}
}

View File

@@ -8,11 +8,12 @@
<php>
<ini name="memory_limit" value="-1"/>
<ini name="apc.enable_cli" value="1"/>
<env name="FIXTURE_SCHEMA_METADATA" value="tests/schema.php"/>
</php>
<!-- Add any additional test suites you want to run here -->
<testsuites>
<testsuite name="CakeContactUs">
<testsuite name="CakeConctactUs">
<directory>tests/TestCase/</directory>
</testsuite>
</testsuites>

View File

@@ -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,

View File

@@ -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

View File

@@ -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();
}

View File

@@ -15,17 +15,18 @@ use CakeContactUs\Model\Entity\ContactUsFormSubmission;
*/
class ContactUsComponentTest extends TestCase {
protected ContactUsComponent $component;
protected Controller $controller;
protected ContactUsComponent $component;
/**
protected Controller $controller;
/**
* Fixtures
*
* @var array<string>
*/
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);
$request = new ServerRequest();
$this->controller = new Controller($request);
$registry = new ComponentRegistry($this->controller);
$this->component = new ContactUsComponent($registry);
$this->component = new ContactUsComponent($registry);
}
/**
@@ -52,26 +53,33 @@ class ContactUsComponentTest extends TestCase {
parent::tearDown();
}
public function testNewContactUsFormWithoutCaptcha()
{
$this->assertInstanceOf(ContactUsFormSubmission::class, $this->component->newContactUsForm());
}
/**
* @return void
*/
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());
}
/**
* @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);
}
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);
}
}

View File

@@ -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'],
]);