1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-19 13:19:39 +02:00

Fix auto upgrade logic (#758)

This commit is contained in:
Zach Gollwitzer 2024-05-17 17:25:15 -04:00 committed by GitHub
parent ddf26cd5e5
commit 0d0f766ca1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 61 additions and 23 deletions

View file

@ -1,12 +1,12 @@
module UpgradesHelper
def upgrade_notification
def get_upgrade_for_notification(user, upgrades_mode)
return nil unless ENV["UPGRADES_ENABLED"] == "true"
completed_upgrade = Upgrader.completed_upgrade
return completed_upgrade if completed_upgrade && Current.user.last_alerted_upgrade_commit_sha != completed_upgrade.commit_sha
return completed_upgrade if completed_upgrade && user.last_alerted_upgrade_commit_sha != completed_upgrade.commit_sha
available_upgrade = Upgrader.available_upgrade
if available_upgrade && Setting.upgrades_mode == "manual" && Current.user.last_prompted_upgrade_commit_sha != available_upgrade.commit_sha
if available_upgrade && upgrades_mode == "manual" && user.last_prompted_upgrade_commit_sha != available_upgrade.commit_sha
available_upgrade
end
end

View file

@ -13,7 +13,9 @@ class Upgrader::Upgrade
end
def available?
version > Maybe.version || (version == Maybe.version && commit_sha != Maybe.commit_sha)
return false if commit_sha == Maybe.commit_sha || version < Maybe.version
return false if version == Maybe.version && type == "release"
true
end
def to_s

View file

@ -12,7 +12,9 @@
</main>
</div>
<%= render "shared/upgrade_notification" %>
<% if (upgrade = get_upgrade_for_notification(Current.user, Setting.upgrades_mode)) %>
<%= render partial: "shared/upgrade_notification", locals: { upgrade: upgrade } %>
<% end %>
<% end %>
<%= render template: "layouts/application" %>

View file

@ -1,6 +1,5 @@
<% if upgrade_notification %>
<% upgrade = upgrade_notification %>
<div class="bg-white space-y-4 text-right fixed bottom-10 right-10 p-5 border border-alpha-black-200 shadow-xs rounded-md z-50 max-w-[350px]">
<%# locals: (upgrade:) %>
<div class="bg-white space-y-4 text-right fixed bottom-10 right-10 p-5 border border-alpha-black-200 shadow-xs rounded-md z-50 max-w-[350px]">
<div>
<p><%= link_to upgrade.to_s, upgrade.url, class: "text-sm text-blue-500 underline hover:text-blue-700", target: "_blank" %></p>
<% if upgrade.complete? %>
@ -15,5 +14,4 @@
<%= button_to t(".upgrade_now"), deploy_upgrade_path(upgrade.commit_sha), method: :post, class: "bg-gray-900 hover:bg-gray-700 text-white font-medium text-sm p-2 rounded-lg" %>
<% end %>
</div>
</div>
<% end %>
</div>

View file

@ -0,0 +1,36 @@
require "test_helper"
class UpgradeTest < ActiveSupport::TestCase
setup do
data = {
commit_sha: "latestcommit",
version: Semver.new("0.1.0-alpha.2")
}
@commit_upgrade = Upgrader::Upgrade.new "commit", data
@release_upgrade = Upgrader::Upgrade.new "release", data
end
test "available if latest commit and app not upgraded" do
Maybe.stubs(:version).returns(@commit_upgrade.version)
Maybe.stubs(:commit_sha).returns("outdatedcommitsha")
assert @commit_upgrade.available?
assert_not @release_upgrade.available?
end
test "available if latest release and app not upgraded" do
Maybe.stubs(:version).returns(Semver.new("0.1.0-alpha.1"))
Maybe.stubs(:commit_sha).returns("outdatedcommitsha")
assert @commit_upgrade.available?
assert @release_upgrade.available?
end
test "not available if app commit greater or equal to" do
Maybe.stubs(:version).returns(@commit_upgrade.version)
Maybe.stubs(:commit_sha).returns(@commit_upgrade.commit_sha)
assert_not @commit_upgrade.available?
end
end