summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@gitlab.com>2017-05-02 15:24:41 +0200
committerBob Van Landuyt <bob@gitlab.com>2017-05-02 15:24:41 +0200
commit3dd2476eb395ca706763210ef1f37978889c595d (patch)
tree298508bd9cf34436c3957376a16fe9b00e20e490
parentffc486a58547b6984a44a43097183b34592be608 (diff)
downloadgitlab-ce-3dd2476eb395ca706763210ef1f37978889c595d.tar.gz
Refresh the markdown cache if it was `nil`
If the cached html_field for a markdown_field is `nil` while the mfarkdown_field is not, it needs to be refreshed.
-rw-r--r--app/models/concerns/cache_markdown_field.rb3
-rw-r--r--spec/models/concerns/cache_markdown_field_spec.rb6
2 files changed, 9 insertions, 0 deletions
diff --git a/app/models/concerns/cache_markdown_field.rb b/app/models/concerns/cache_markdown_field.rb
index f033028c4e5..eb32bf3d32a 100644
--- a/app/models/concerns/cache_markdown_field.rb
+++ b/app/models/concerns/cache_markdown_field.rb
@@ -78,6 +78,9 @@ module CacheMarkdownField
def cached_html_up_to_date?(markdown_field)
html_field = cached_markdown_fields.html_field(markdown_field)
+ cached = !cached_html_for(markdown_field).nil? && !__send__(markdown_field).nil?
+ return false unless cached
+
markdown_changed = attribute_changed?(markdown_field) || false
html_changed = attribute_changed?(html_field) || false
diff --git a/spec/models/concerns/cache_markdown_field_spec.rb b/spec/models/concerns/cache_markdown_field_spec.rb
index 4edafbc4e32..40bbb10eaac 100644
--- a/spec/models/concerns/cache_markdown_field_spec.rb
+++ b/spec/models/concerns/cache_markdown_field_spec.rb
@@ -170,6 +170,12 @@ describe CacheMarkdownField do
is_expected.to be_truthy
end
+
+ it 'returns false if the markdown field is set but the html is not' do
+ thing.foo_html = nil
+
+ is_expected.to be_falsy
+ end
end
describe '#refresh_markdown_cache!' do