def test_article_last_update(db): """ Model should auto update "last_update" value on each save. """ article = ArticleFactory( slug="foo", ) assert article.last_update is not None # Save date for usage after change last_update = article.last_update # Trigger save for auto update article.save() assert article.last_update > last_update
def test_article_model_file_management(db): """ Article 'cover' and 'image' field file management should follow correct behaviors: * When object is deleted, its files should be delete from filesystem too; * When changing file from an object, its previous files (if any) should be deleted; """ ping = ArticleFactory( cover=create_image_file(filename="machin.png"), image=create_image_file(filename="ping_image.png"), fill_categories=False, ) pong = ArticleFactory( cover=create_image_file(filename="machin.png"), image=create_image_file(filename="pong_image.png"), fill_categories=False, ) # Memorize some data to use after deletion ping_cover_path = ping.cover.path ping_image_path = ping.image.path pong_cover_path = pong.cover.path pong_image_path = pong.image.path # Delete object ping.delete() # Files are deleted along their object assert os.path.exists(ping_cover_path) is False assert os.path.exists(ping_image_path) is False # Paranoiac mode: other existing similar filename (as uploaded) is conserved # (since Django rename file with a unique hash if filename alread exist) assert os.path.exists(pong_cover_path) is True # Change object file to a new one pong.cover = create_image_file(filename="new_cover.png") pong.image = create_image_file(filename="new_image.png") pong.save() # During pre save signal, old file is removed from FS and new one is left # untouched assert os.path.exists(pong_cover_path) is False assert os.path.exists(pong_image_path) is False assert os.path.exists(pong.cover.path) is True assert os.path.exists(pong.image.path) is True