Skip to content

Commit

Permalink
FIX: Allow unbaked theme fields to be destroyed
Browse files Browse the repository at this point in the history
The after_commit hook was attempting to re-bake theme_fields after they were destroyed, which caused an exception to be thrown
  • Loading branch information
davidtaylorhq committed Feb 12, 2019
1 parent 9eb7dea commit 91f0468
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
2 changes: 1 addition & 1 deletion app/models/theme_field.rb
Expand Up @@ -372,7 +372,7 @@ def self.opts_from_file_path(filename)
end
end

after_commit do
after_commit on: [:create, :update] do
ensure_baked!
ensure_scss_compiles!
theme.clear_cached_settings!
Expand Down
19 changes: 19 additions & 0 deletions spec/models/theme_spec.rb
Expand Up @@ -127,6 +127,25 @@
expect(field.javascript_cache.content).to include('raw-handlebars')
end

it 'can destroy unbaked theme without errors' do
with_template = <<HTML
<script type='text/x-handlebars' name='template'>
{{hello}}
</script>
<script type='text/x-handlebars' data-template-name='raw_template.raw'>
{{hello}}
</script>
HTML
theme.set_field(target: :common, name: "header", value: with_template)
theme.save!

field = theme.theme_fields.find_by(target_id: Theme.targets[:common], name: 'header')
baked = Theme.lookup_field(theme.id, :mobile, "header")
ThemeField.where(id: field.id).update_all(compiler_version: 0) # update_all to avoid callbacks

field.reload.destroy!
end

it 'should create body_tag_baked on demand if needed' do
theme.set_field(target: :common, name: :body_tag, value: "<b>test")
theme.save
Expand Down

0 comments on commit 91f0468

Please sign in to comment.