|
15 | 15 | from django.test import TestCase, override_settings
|
16 | 16 | from django.urls import reverse
|
17 | 17 |
|
| 18 | +from simple_history import register |
| 19 | +from simple_history.exceptions import RelatedNameConflictError |
18 | 20 | from simple_history.models import HistoricalRecords, ModelChange
|
19 | 21 | from simple_history.signals import pre_create_historical_record
|
20 | 22 | from simple_history.tests.custom_user.models import CustomUser
|
|
74 | 76 | Series,
|
75 | 77 | SeriesWork,
|
76 | 78 | State,
|
| 79 | + Street, |
77 | 80 | Temperature,
|
78 | 81 | UUIDDefaultModel,
|
79 | 82 | UUIDModel,
|
@@ -1413,3 +1416,65 @@ def test_history_user_does_not_exist(self):
|
1413 | 1416 |
|
1414 | 1417 | self.assertEqual(user_id, instance.history.first().history_user_id)
|
1415 | 1418 | self.assertIsNone(instance.history.first().history_user)
|
| 1419 | + |
| 1420 | + |
| 1421 | +class RelatedNameTest(TestCase): |
| 1422 | + def setUp(self): |
| 1423 | + self.user_one = get_user_model().objects.create( |
| 1424 | + username="username_one", email="[email protected]", password="top_secret" |
| 1425 | + ) |
| 1426 | + self.user_two = get_user_model().objects.create( |
| 1427 | + username="username_two", email="[email protected]", password="top_secret" |
| 1428 | + ) |
| 1429 | + |
| 1430 | + self.one = Street(name="Test Street") |
| 1431 | + self.one._history_user = self.user_one |
| 1432 | + self.one.save() |
| 1433 | + |
| 1434 | + self.two = Street(name="Sesame Street") |
| 1435 | + self.two._history_user = self.user_two |
| 1436 | + self.two.save() |
| 1437 | + |
| 1438 | + self.one.name = "ABC Street" |
| 1439 | + self.one._history_user = self.user_two |
| 1440 | + self.one.save() |
| 1441 | + |
| 1442 | + def test_relation(self): |
| 1443 | + self.assertEqual(self.one.history.count(), 2) |
| 1444 | + self.assertEqual(self.two.history.count(), 1) |
| 1445 | + |
| 1446 | + def test_filter(self): |
| 1447 | + self.assertEqual( |
| 1448 | + Street.objects.filter(history__history_user=self.user_one.pk).count(), 1 |
| 1449 | + ) |
| 1450 | + self.assertEqual( |
| 1451 | + Street.objects.filter(history__history_user=self.user_two.pk).count(), 2 |
| 1452 | + ) |
| 1453 | + |
| 1454 | + def test_name_equals_manager(self): |
| 1455 | + with self.assertRaises(RelatedNameConflictError): |
| 1456 | + register(Place, manager_name="history", related_name="history") |
| 1457 | + |
| 1458 | + def test_deletion(self): |
| 1459 | + self.two.delete() |
| 1460 | + |
| 1461 | + self.assertEqual(Street.log.filter(history_relation=2).count(), 2) |
| 1462 | + self.assertEqual(Street.log.count(), 4) |
| 1463 | + |
| 1464 | + def test_revert(self): |
| 1465 | + id = self.one.pk |
| 1466 | + |
| 1467 | + self.one.delete() |
| 1468 | + self.assertEqual( |
| 1469 | + Street.objects.filter(history__history_user=self.user_one.pk).count(), 0 |
| 1470 | + ) |
| 1471 | + self.assertEqual(Street.objects.filter(pk=id).count(), 0) |
| 1472 | + |
| 1473 | + old = Street.log.filter(id=id).first() |
| 1474 | + old.history_object.save() |
| 1475 | + self.assertEqual( |
| 1476 | + Street.objects.filter(history__history_user=self.user_one.pk).count(), 1 |
| 1477 | + ) |
| 1478 | + |
| 1479 | + self.one = Street.objects.get(pk=id) |
| 1480 | + self.assertEqual(self.one.history.count(), 4) |
0 commit comments