Coverage for apis_core/history/tests/test_simple_history.py: 100%
55 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-02-19 16:54 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2025-02-19 16:54 +0000
1from datetime import datetime, timedelta
3from django.test import TestCase
5from sample_project.models import Person, Place, Profession
8class SimpleHistoryTestCase(TestCase):
9 """Test of the simple_history package using the demo project"""
11 def setUp(self):
12 self.Person = Person
13 self.Place = Place
14 self.Profession = Profession
16 Person.objects.create(forename="John", surname="Doe")
17 Place.objects.create(
18 label="Steyr", _history_date=datetime.now() - timedelta(hours=0, minutes=50)
19 )
21 def test_history(self):
22 """Tests the simple version of attributes changed on a models instance."""
23 pers = self.Person.objects.get(forename="John")
24 pers.forename = "Jane"
25 pers.save()
26 self.assertEqual(pers.forename, "Jane")
27 pers_history = pers.history.all()
28 assert len(pers_history) == 2
29 self.assertEqual("Jane", pers.history.most_recent().forename)
30 self.assertEqual("John", pers.history.earliest().forename)
32 def test_history_tag(self):
33 """Tests the version tag function."""
34 pers = self.Person.objects.get(forename="John")
35 pers.history.latest().set_version_tag("test_tag")
36 self.assertEqual(pers.history.latest().version_tag, "test_tag")
37 pers_history = pers.history.all()
38 self.assertEqual(pers_history.count(), 1)
39 self.assertEqual(pers_history[0].version_tag, "test_tag")
40 # test with TemTriple
41 pers2 = self.Person.objects.create(forename="Jane", surname="Doe")
42 pers2.history.latest().set_version_tag("test_tag")
43 self.assertEqual(pers2.history.latest().version_tag, "test_tag")
45 def test_history_delete_entry(self):
46 """Tests the deletion of an entry."""
47 pers = self.Person.objects.get(forename="John")
48 pers.delete()
49 assert len(self.Person.history.all()) == 2
51 def test_history_merge(self):
52 """Tests the merge function of the Place model. This is still expected to fail."""
53 pl1 = self.Place.objects.first()
54 pl2 = self.Place.objects.create(
55 label="Test", _history_date=datetime.now() - timedelta(hours=0, minutes=10)
56 )
57 pl1.merge_with([pl2])
58 print("save()")
60 def test_m2m_save(self):
61 """Test if m2m profession is saved correctly."""
62 pers = self.Person.objects.create(
63 forename="John",
64 _history_date=datetime.now() - timedelta(hours=0, minutes=10),
65 )
66 self.assertEqual(pers.forename, "John")
67 pers_history = pers.history.all()
68 assert len(pers_history) == 1
69 prof = self.Profession.objects.create(name="Test")
70 pers.profession.add(prof)
71 pers.forename = "Jane"
72 pers.save()
73 assert len(pers.profession.all()) == 1
74 assert len(pers.history.latest().profession.all()) == 1
75 assert len(pers.history.earliest().profession.all()) == 0
77 def test_history_date(self):
78 """Test that history is set correctly when not manually set."""
79 pers = self.Person.objects.all().first()
80 pers.forename = "Jane"
81 pers.save()
82 assert pers.history.earliest().history_date < pers.history.latest().history_date