test(tenant): cover split website types and migration
This commit is contained in:
@@ -3,14 +3,14 @@
|
||||
namespace Tests\Unit\Bootstrap;
|
||||
|
||||
use App\Domains\Bootstrap\Resources\AdminAppBootstrapResource;
|
||||
use App\Domains\Tenant\Models\WebsiteType;
|
||||
use App\Domains\Tenant\Models\AdminWebsiteType;
|
||||
use Tests\TestCase;
|
||||
|
||||
class AdminAppBootstrapResourceTest extends TestCase
|
||||
{
|
||||
public function test_it_exposes_the_website_type(): void
|
||||
{
|
||||
$websiteType = new WebsiteType([
|
||||
$websiteType = new AdminWebsiteType([
|
||||
'codigo' => 'shopit',
|
||||
'nombre' => 'ShopIt',
|
||||
'dominio' => 'admin.shopit.test',
|
||||
@@ -23,7 +23,7 @@ class AdminAppBootstrapResourceTest extends TestCase
|
||||
'website_type' => $websiteType,
|
||||
])->resolve(request());
|
||||
|
||||
$this->assertSame('shopit', $data['website_type_code']);
|
||||
$this->assertSame('shopit', $data['admin_website_type_code']);
|
||||
$this->assertSame('ShopIt Website Type', $data['site_title']);
|
||||
$this->assertNull($data['favicon']);
|
||||
$this->assertArrayNotHasKey('forms', $data);
|
||||
|
||||
@@ -5,8 +5,8 @@ namespace Tests\Unit;
|
||||
use App\Domains\Integration\Models\ClientIntegration;
|
||||
use App\Domains\Integration\Models\Integration;
|
||||
use App\Domains\Integration\Models\IntegrationInstance;
|
||||
use App\Domains\Integration\Models\WebsiteTypeIntegration;
|
||||
use App\Domains\Tenant\Models\WebsiteType;
|
||||
use App\Domains\Integration\Models\AdminWebsiteTypeIntegration;
|
||||
use App\Domains\Tenant\Models\AdminWebsiteType;
|
||||
use Illuminate\Config\Repository;
|
||||
use Illuminate\Container\Container;
|
||||
use Illuminate\Database\Capsule\Manager;
|
||||
@@ -75,10 +75,21 @@ class IntegrationInstanceSchemaTest extends TestCase
|
||||
$db->table('client_integrations')->insert([
|
||||
'client_id' => 1, 'integration_code' => 'email', 'integration_data' => 'existing-ciphertext',
|
||||
]);
|
||||
$this->migrations = array_map(fn (string $file) => require $file, glob(__DIR__.'/../../database/migrations/2026_09_04_*.php'));
|
||||
$migrationDir = __DIR__.'/../../database/migrations/';
|
||||
$this->migrations = array_map(fn (string $file) => require $migrationDir.$file, [
|
||||
'2026_09_04_000000_create_integration_instances_table.php',
|
||||
'2026_09_04_000001_move_client_configuration_to_integration_instances.php',
|
||||
'2026_09_04_000002_create_website_type_integrations_table.php',
|
||||
'2026_09_04_000003_rename_integration_configuration_requirement.php',
|
||||
]);
|
||||
foreach ($this->migrations as $migration) {
|
||||
$migration->up();
|
||||
}
|
||||
$schema->rename('website_type', 'admin_website_types');
|
||||
$schema->rename('website_type_integrations', 'admin_website_type_integrations');
|
||||
$schema->table('admin_website_type_integrations', function (Blueprint $table): void {
|
||||
$table->renameColumn('website_type_code', 'admin_website_type_code');
|
||||
});
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
@@ -97,6 +108,13 @@ class IntegrationInstanceSchemaTest extends TestCase
|
||||
self::assertSame('existing-ciphertext', $db->table('integration_instances')->where('id', $association->integration_instance_id)->value('integration_data'));
|
||||
self::assertFalse($db->getSchemaBuilder()->hasColumn('client_integrations', 'integration_data'));
|
||||
|
||||
$schema = $db->getSchemaBuilder();
|
||||
$schema->table('admin_website_type_integrations', function (Blueprint $table): void {
|
||||
$table->renameColumn('admin_website_type_code', 'website_type_code');
|
||||
});
|
||||
$schema->rename('admin_website_type_integrations', 'website_type_integrations');
|
||||
$schema->rename('admin_website_types', 'website_type');
|
||||
|
||||
foreach (array_reverse($this->migrations) as $migration) {
|
||||
$migration->down();
|
||||
}
|
||||
@@ -111,11 +129,11 @@ class IntegrationInstanceSchemaTest extends TestCase
|
||||
self::assertNotSame('private-value', $instance->getRawOriginal('integration_data'));
|
||||
self::assertSame(['password' => 'private-value'], $instance->fresh()->integration_data);
|
||||
self::assertArrayNotHasKey('integration_data', $instance->toArray());
|
||||
WebsiteTypeIntegration::create([
|
||||
'website_type_code' => 'onticket', 'integration_code' => 'email', 'integration_instance_id' => $instance->id,
|
||||
AdminWebsiteTypeIntegration::create([
|
||||
'admin_website_type_code' => 'onticket', 'integration_code' => 'email', 'integration_instance_id' => $instance->id,
|
||||
]);
|
||||
self::assertTrue(ClientIntegration::firstOrFail()->integrationInstance->is($instance));
|
||||
self::assertTrue(WebsiteType::firstOrFail()->integrations->first()->integrationInstance->is($instance));
|
||||
self::assertTrue(AdminWebsiteType::firstOrFail()->integrations->first()->integrationInstance->is($instance));
|
||||
self::assertSame(1, $instance->clientIntegrations()->count());
|
||||
self::assertSame(1, $instance->websiteTypeIntegrations()->count());
|
||||
self::assertTrue(Integration::where('integration_code', 'email')->firstOrFail()->instances->first()->is($instance));
|
||||
@@ -147,8 +165,8 @@ class IntegrationInstanceSchemaTest extends TestCase
|
||||
public function test_association_rejects_an_instance_from_another_integration(): void
|
||||
{
|
||||
$this->expectException(QueryException::class);
|
||||
WebsiteTypeIntegration::create([
|
||||
'website_type_code' => 'onticket', 'integration_code' => 'telepagos', 'integration_instance_id' => IntegrationInstance::firstOrFail()->id,
|
||||
AdminWebsiteTypeIntegration::create([
|
||||
'admin_website_type_code' => 'onticket', 'integration_code' => 'telepagos', 'integration_instance_id' => IntegrationInstance::firstOrFail()->id,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -161,13 +179,13 @@ class IntegrationInstanceSchemaTest extends TestCase
|
||||
|
||||
public function test_website_type_cannot_have_two_instances_of_the_same_integration(): void
|
||||
{
|
||||
WebsiteTypeIntegration::create([
|
||||
'website_type_code' => 'onticket', 'integration_code' => 'email', 'integration_instance_id' => IntegrationInstance::firstOrFail()->id,
|
||||
AdminWebsiteTypeIntegration::create([
|
||||
'admin_website_type_code' => 'onticket', 'integration_code' => 'email', 'integration_instance_id' => IntegrationInstance::firstOrFail()->id,
|
||||
]);
|
||||
$instance = IntegrationInstance::create(['integration_code' => 'email', 'name' => 'Second']);
|
||||
$this->expectException(QueryException::class);
|
||||
WebsiteTypeIntegration::create([
|
||||
'website_type_code' => 'onticket', 'integration_code' => 'email', 'integration_instance_id' => $instance->id,
|
||||
AdminWebsiteTypeIntegration::create([
|
||||
'admin_website_type_code' => 'onticket', 'integration_code' => 'email', 'integration_instance_id' => $instance->id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user