diff --git a/app/Models/Application.php b/app/Models/Application.php index 0c43f6c3f..97b257752 100644 --- a/app/Models/Application.php +++ b/app/Models/Application.php @@ -1255,7 +1255,7 @@ private function legacyConfigurationHash(): string if ($this->pull_request_id === 0 || $this->pull_request_id === null) { $newConfigHash .= json_encode($this->environment_variables()->get(['value', 'is_multiline', 'is_literal', 'is_buildtime', 'is_runtime'])->sort()); } else { - $newConfigHash .= json_encode($this->environment_variables_preview->get(['value', 'is_multiline', 'is_literal', 'is_buildtime', 'is_runtime'])->sort()); + $newConfigHash .= json_encode($this->environment_variables_preview()->get(['value', 'is_multiline', 'is_literal', 'is_buildtime', 'is_runtime'])->sort()); } return md5($newConfigHash); diff --git a/tests/Feature/ApplicationConfigurationChangedTest.php b/tests/Feature/ApplicationConfigurationChangedTest.php index 3dc68292f..f862f840d 100644 --- a/tests/Feature/ApplicationConfigurationChangedTest.php +++ b/tests/Feature/ApplicationConfigurationChangedTest.php @@ -3,6 +3,7 @@ use App\Models\Application; use App\Models\ApplicationDeploymentQueue; use App\Models\Environment; +use App\Models\EnvironmentVariable; use App\Models\Project; use App\Models\Team; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -57,6 +58,32 @@ function configurationChangedDeployment(Application $application): ApplicationDe ->and(data_get($secondDeployment->configuration_diff, 'changes.0.label'))->toBe('Build command'); }); +it('checks legacy preview deployment configuration hash using preview environment variable query', function () { + $application = configurationChangedTestApplication(); + + EnvironmentVariable::create([ + 'key' => 'APP_ENV', + 'value' => 'preview', + 'is_preview' => true, + 'is_multiline' => false, + 'is_literal' => false, + 'is_buildtime' => true, + 'is_runtime' => true, + 'resourceable_type' => Application::class, + 'resourceable_id' => $application->id, + ]); + + $application->forceFill([ + 'config_hash' => 'legacy-hash', + 'pull_request_id' => 123, + ]); + + $diff = $application->pendingDeploymentConfigurationDiff(); + + expect($diff->isLegacyFallback())->toBeTrue() + ->and($diff->isChanged())->toBeTrue(); +}); + it('falls back to legacy configuration hash when no deployment snapshot exists', function () { $application = configurationChangedTestApplication(); $application->isConfigurationChanged(save: true);