From 7166bf4d1f9bbcb42f3b09aad1714d07f8d9178e Mon Sep 17 00:00:00 2001 From: Alex Simpson Date: Mon, 4 Dec 2023 12:39:51 +0000 Subject: [PATCH 1/2] adds failing test for cleared foreignkey behaviour --- .../tests/test_update_translations.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/wagtail_localize/tests/test_update_translations.py b/wagtail_localize/tests/test_update_translations.py index 474c2ca0..f27dad57 100644 --- a/wagtail_localize/tests/test_update_translations.py +++ b/wagtail_localize/tests/test_update_translations.py @@ -410,6 +410,47 @@ def test_post_update_page_translation_with_publish_translations_and_cleared_text self.fr_blog_post.refresh_from_db() self.assertEqual(self.fr_blog_post.test_charfield, "") self.assertEqual(self.fr_blog_post.test_richtextfield, "") + + def test_post_update_page_translation_with_publish_translations_and_cleared_foreignkey( + self, + ): + # Premable: First publish and translate with a test_snippet value + self.en_blog_post.test_snippet = self.en_snippet + self.en_blog_post.save_revision().publish() + response = self.client.post( + reverse( + "wagtail_localize:update_translations", + args=[self.page_source.id], + ), + {"publish_translations": "on"}, + ) + + # Sanity check: Both versions of page point to localise snippet instance + self.fr_blog_post.refresh_from_db() + self.assertEqual(self.en_blog_post.test_snippet, self.en_snippet) + self.assertEqual(self.fr_blog_post.test_snippet, self.fr_snippet) + + + # Now update page by clearing the test_snippet foreign key + self.en_blog_post.test_snippet = None + self.en_blog_post.save_revision().publish() + + # ... and retranslate + response = self.client.post( + reverse( + "wagtail_localize:update_translations", + args=[self.page_source.id], + ), + {"publish_translations": "on"}, + ) + + self.assertRedirects( + response, reverse("wagtailadmin_explore", args=[self.en_blog_index.id]) + ) + + # The FR version's test_snippet field should also be cleared + self.fr_blog_post.refresh_from_db() + self.assertEqual(self.fr_blog_post.test_snippet, None) def test_post_update_snippet_translation(self): self.en_snippet.field = "Edited snippet" From 5e761a6b5e54167e4e072e06dba0d5e10fca600b Mon Sep 17 00:00:00 2001 From: Alex Simpson Date: Tue, 5 Dec 2023 18:05:34 +0000 Subject: [PATCH 2/2] lint --- wagtail_localize/tests/test_update_translations.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wagtail_localize/tests/test_update_translations.py b/wagtail_localize/tests/test_update_translations.py index f27dad57..8c88c033 100644 --- a/wagtail_localize/tests/test_update_translations.py +++ b/wagtail_localize/tests/test_update_translations.py @@ -410,7 +410,7 @@ def test_post_update_page_translation_with_publish_translations_and_cleared_text self.fr_blog_post.refresh_from_db() self.assertEqual(self.fr_blog_post.test_charfield, "") self.assertEqual(self.fr_blog_post.test_richtextfield, "") - + def test_post_update_page_translation_with_publish_translations_and_cleared_foreignkey( self, ): @@ -430,7 +430,6 @@ def test_post_update_page_translation_with_publish_translations_and_cleared_fore self.assertEqual(self.en_blog_post.test_snippet, self.en_snippet) self.assertEqual(self.fr_blog_post.test_snippet, self.fr_snippet) - # Now update page by clearing the test_snippet foreign key self.en_blog_post.test_snippet = None self.en_blog_post.save_revision().publish()