FIX: remote theme record not saved when checking for updates (#8054)

This commit is contained in:
Osama Sayegh 2019-08-30 00:32:54 +03:00 committed by GitHub
parent 1a909c16eb
commit ff8cc244d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 6 deletions

View File

@ -186,22 +186,16 @@ class Admin::ThemesController < Admin::AdminController
update_translations
handle_switch
save_remote = false
if params[:theme][:remote_check]
@theme.remote_theme.update_remote_version
save_remote = true
end
if params[:theme][:remote_update]
@theme.remote_theme.update_from_remote
save_remote = true
end
respond_to do |format|
if @theme.save
@theme.remote_theme.save! if save_remote
update_default_theme
@theme.reload

View File

@ -106,6 +106,8 @@ class RemoteTheme < ActiveRecord::Base
self.updated_at = Time.zone.now
self.remote_version, self.commits_behind = importer.commits_since(local_version)
self.last_error_text = nil
ensure
self.save!
end
end
@ -119,6 +121,7 @@ class RemoteTheme < ActiveRecord::Base
importer.import!
rescue RemoteTheme::ImportError => err
self.last_error_text = err.message
self.save!
return self
else
self.last_error_text = nil
@ -163,6 +166,7 @@ class RemoteTheme < ActiveRecord::Base
update_theme_color_schemes(theme, theme_info["color_schemes"]) unless theme.component
self.save!
self
ensure
begin

View File

@ -330,6 +330,22 @@ describe Admin::ThemesController do
expect(theme.theme_translation_overrides.count).to eq(0)
end
it 'checking for updates saves the remote_theme record' do
theme.remote_theme = RemoteTheme.create!(remote_url: "http://discourse.org", remote_version: "a", local_version: "a", commits_behind: 0)
theme.save!
ThemeStore::GitImporter.any_instance.stubs(:import!)
ThemeStore::GitImporter.any_instance.stubs(:commits_since).returns(["b", 1])
put "/admin/themes/#{theme.id}.json", params: {
theme: {
remote_check: true
}
}
theme.reload
expect(theme.remote_theme.remote_version).to eq("b")
expect(theme.remote_theme.commits_behind).to eq(1)
end
it 'can disable component' do
child = Fabricate(:theme, component: true)