|
47 | 47 | STATE_APPROVED, |
48 | 48 | STATE_FUZZY, |
49 | 49 | STATE_NEEDS_CHECKING, |
| 50 | + STATE_NEEDS_REWRITING, |
50 | 51 | STATE_READONLY, |
51 | 52 | STATE_TRANSLATED, |
52 | 53 | ) |
@@ -1161,3 +1162,39 @@ def test_xliff_file_sync_gets_automatically_translated_from_file(self) -> None: |
1161 | 1162 |
|
1162 | 1163 | car_unit = translation.unit_set.get(source="Car") |
1163 | 1164 | self.assertTrue(car_unit.automatically_translated) |
| 1165 | + |
| 1166 | + |
| 1167 | +class FuzzySubstatePreservationTest(RepoTestCase): |
| 1168 | + """Test that fuzzy sub-states are preserved across file syncs.""" |
| 1169 | + |
| 1170 | + def setUp(self) -> None: |
| 1171 | + super().setUp() |
| 1172 | + self.user = create_test_user() |
| 1173 | + |
| 1174 | + def _test_fuzzy_substate_preserved_after_sync(self, substate) -> None: |
| 1175 | + component = self.create_component() |
| 1176 | + translation = component.translation_set.get(language_code="cs") |
| 1177 | + unit = translation.unit_set.get(source="Hello, world!\n") |
| 1178 | + |
| 1179 | + unit.translate(self.user, "Ahoj světe!\n", substate) |
| 1180 | + self.assertEqual(unit.state, substate) |
| 1181 | + |
| 1182 | + translation.commit_pending("test", None) |
| 1183 | + |
| 1184 | + unit.refresh_from_db() |
| 1185 | + self.assertEqual(unit.state, substate) |
| 1186 | + self.assertNotIn("disk_state", unit.details) |
| 1187 | + |
| 1188 | + # Trigger check_sync to simulate repository parsing due to another change |
| 1189 | + translation = component.translation_set.get(language_code="cs") |
| 1190 | + translation.check_sync(force=True) |
| 1191 | + |
| 1192 | + # The fuzzy sub-state should be preserved, not changed to STATE_FUZZY |
| 1193 | + unit.refresh_from_db() |
| 1194 | + self.assertEqual(unit.state, substate) |
| 1195 | + |
| 1196 | + def test_needs_rewriting_preserved_after_sync(self) -> None: |
| 1197 | + self._test_fuzzy_substate_preserved_after_sync(STATE_NEEDS_REWRITING) |
| 1198 | + |
| 1199 | + def test_needs_checking_preserved_after_sync(self) -> None: |
| 1200 | + self._test_fuzzy_substate_preserved_after_sync(STATE_NEEDS_CHECKING) |
0 commit comments