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

1from datetime import datetime, timedelta 

2 

3from django.test import TestCase 

4 

5from sample_project.models import Person, Place, Profession 

6 

7 

8class SimpleHistoryTestCase(TestCase): 

9 """Test of the simple_history package using the demo project""" 

10 

11 def setUp(self): 

12 self.Person = Person 

13 self.Place = Place 

14 self.Profession = Profession 

15 

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 ) 

20 

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) 

31 

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") 

44 

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 

50 

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()") 

59 

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 

76 

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