2026-03-31 15:28:24 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
use App\Livewire\Upgrade;
|
2026-04-09 12:31:12 +00:00
|
|
|
use App\Models\InstanceSettings;
|
|
|
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
2026-03-31 15:28:24 +00:00
|
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
|
use Livewire\Livewire;
|
|
|
|
|
|
2026-04-09 12:31:12 +00:00
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
|
|
2026-03-31 15:28:24 +00:00
|
|
|
it('initializes latest version during mount from cached versions data', function () {
|
|
|
|
|
config(['constants.coolify.version' => '4.0.0-beta.998']);
|
2026-04-09 12:31:12 +00:00
|
|
|
InstanceSettings::create([
|
|
|
|
|
'id' => 0,
|
|
|
|
|
'new_version_available' => true,
|
|
|
|
|
]);
|
2026-03-31 15:28:24 +00:00
|
|
|
|
|
|
|
|
Cache::shouldReceive('remember')
|
|
|
|
|
->once()
|
|
|
|
|
->with('coolify:versions:all', 3600, Mockery::type(\Closure::class))
|
|
|
|
|
->andReturn([
|
|
|
|
|
'coolify' => [
|
|
|
|
|
'v4' => [
|
|
|
|
|
'version' => '4.0.0-beta.999',
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
Livewire::test(Upgrade::class)
|
|
|
|
|
->assertSet('currentVersion', '4.0.0-beta.998')
|
|
|
|
|
->assertSet('latestVersion', '4.0.0-beta.999')
|
2026-04-09 12:31:12 +00:00
|
|
|
->assertSet('isUpgradeAvailable', true)
|
2026-03-31 15:28:24 +00:00
|
|
|
->assertSee('4.0.0-beta.998')
|
|
|
|
|
->assertSee('4.0.0-beta.999');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('falls back to 0.0.0 during mount when cached versions data is unavailable', function () {
|
2026-04-09 12:31:12 +00:00
|
|
|
InstanceSettings::create([
|
|
|
|
|
'id' => 0,
|
|
|
|
|
'new_version_available' => false,
|
|
|
|
|
]);
|
|
|
|
|
|
2026-03-31 15:28:24 +00:00
|
|
|
Cache::shouldReceive('remember')
|
|
|
|
|
->once()
|
|
|
|
|
->with('coolify:versions:all', 3600, Mockery::type(\Closure::class))
|
|
|
|
|
->andReturn(null);
|
|
|
|
|
|
|
|
|
|
Livewire::test(Upgrade::class)
|
|
|
|
|
->assertSet('latestVersion', '0.0.0');
|
|
|
|
|
});
|
2026-04-09 12:31:12 +00:00
|
|
|
|
|
|
|
|
it('clears stale upgrade availability when current version already matches latest version', function () {
|
|
|
|
|
config(['constants.coolify.version' => '4.0.0-beta.999']);
|
|
|
|
|
InstanceSettings::create([
|
|
|
|
|
'id' => 0,
|
|
|
|
|
'new_version_available' => true,
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
Cache::shouldReceive('remember')
|
|
|
|
|
->once()
|
|
|
|
|
->with('coolify:versions:all', 3600, Mockery::type(\Closure::class))
|
|
|
|
|
->andReturn([
|
|
|
|
|
'coolify' => [
|
|
|
|
|
'v4' => [
|
|
|
|
|
'version' => '4.0.0-beta.999',
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
Livewire::test(Upgrade::class)
|
|
|
|
|
->assertSet('latestVersion', '4.0.0-beta.999')
|
|
|
|
|
->assertSet('isUpgradeAvailable', false);
|
|
|
|
|
|
|
|
|
|
expect(InstanceSettings::findOrFail(0)->new_version_available)->toBeFalse();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('clears stale upgrade availability when current version is newer than cached latest version', function () {
|
|
|
|
|
config(['constants.coolify.version' => '4.0.0-beta.1000']);
|
|
|
|
|
InstanceSettings::create([
|
|
|
|
|
'id' => 0,
|
|
|
|
|
'new_version_available' => true,
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
Cache::shouldReceive('remember')
|
|
|
|
|
->once()
|
|
|
|
|
->with('coolify:versions:all', 3600, Mockery::type(\Closure::class))
|
|
|
|
|
->andReturn([
|
|
|
|
|
'coolify' => [
|
|
|
|
|
'v4' => [
|
|
|
|
|
'version' => '4.0.0-beta.999',
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
Livewire::test(Upgrade::class)
|
|
|
|
|
->assertSet('latestVersion', '4.0.0-beta.999')
|
|
|
|
|
->assertSet('isUpgradeAvailable', false);
|
|
|
|
|
|
|
|
|
|
expect(InstanceSettings::findOrFail(0)->new_version_available)->toBeFalse();
|
|
|
|
|
});
|