In addition to the fixes done in [#7834], a ticket can still be marked as updated just when viewed. This happens if the cache was not created initially (e.g. ticket import - no view, or first view was under the threshold time) and then the cache was created upon a later view. We need to skip updating mod_date and last_updated when a cache is set. I think it's probably safe to set the skip_mod_date and skip_last_updated flags on the session, since there shouldn't be cases of rendering a markdown (viewing) in the same session as legitimately updating records (I hope).
Ready for review.
hs/7852
Very minor feedback:
setattr(session, 'skip_mod_date', True)can besession.skip_mod_date = Truetest_cached_convert, we should have a comment explaining whyskip_mod_dateis needed to avoid the automatic setting of mod_date when it is savedBigger:
cached_convertis being mocked, there's the caching logic will never run at all. We need it to run so the test actually tests it :) I'd just remove that mock. For a strong assertion that it did run, rather than mocking it and checking call_count, we could check thatticket.description_cache.htmlis set... but that requires querying Ming for the record and making sure you get that latest (not cached in the Ming layer)Besides that I think the test approach is fine, even if it's not ideal.
Force-pushed hs/7852 (rebase)
Good feedback.
I removed the mock am now asserting
ticket.description_cache.htmlreturns the expected result.