|
4 | 4 | import uuid
|
5 | 5 | import warnings
|
6 | 6 | from datetime import datetime, timedelta
|
7 |
| - |
8 | 7 | from django.apps import apps
|
9 | 8 | from django.contrib.auth import get_user_model
|
10 | 9 | from django.core.files.base import ContentFile
|
11 | 10 | from django.db import models
|
12 | 11 | from django.db.models.fields.proxy import OrderWrt
|
13 |
| -from django.test import override_settings, TestCase |
| 12 | +from django.test import TestCase, override_settings |
14 | 13 | from django.urls import reverse
|
15 | 14 |
|
16 | 15 | from simple_history.models import HistoricalRecords, ModelChange
|
|
26 | 25 | BucketData,
|
27 | 26 | BucketDataRegisterChangedBy,
|
28 | 27 | BucketMember,
|
| 28 | + CharFieldChangeReasonModel, |
29 | 29 | Choice,
|
30 | 30 | City,
|
31 | 31 | ConcreteAttr,
|
|
34 | 34 | Contact,
|
35 | 35 | ContactRegister,
|
36 | 36 | Country,
|
37 |
| - CustomNameModel, |
| 37 | + CustomManagerNameModel, |
| 38 | + DefaultTextFieldChangeReasonModel, |
38 | 39 | Document,
|
39 | 40 | Employee,
|
40 | 41 | ExternalModel1,
|
|
61 | 62 | SeriesWork,
|
62 | 63 | State,
|
63 | 64 | Temperature,
|
64 |
| - UnicodeVerboseName, |
65 |
| - UUIDModel, |
66 | 65 | UUIDDefaultModel,
|
67 |
| - WaterLevel, |
68 |
| - DefaultTextFieldChangeReasonModel, |
| 66 | + UUIDModel, |
| 67 | + UnicodeVerboseName, |
69 | 68 | UserTextFieldChangeReasonModel,
|
70 |
| - CharFieldChangeReasonModel, |
| 69 | + WaterLevel, |
71 | 70 | )
|
72 | 71 |
|
73 | 72 | get_model = apps.get_model
|
@@ -537,82 +536,6 @@ def test_user_textfield_history_change_reason(self):
|
537 | 536 | self.assertTrue(isinstance(field, models.TextField))
|
538 | 537 | self.assertEqual(history.history_change_reason, reason)
|
539 | 538 |
|
540 |
| - def test_get_prev_record(self): |
541 |
| - poll = Poll(question="what's up?", pub_date=today) |
542 |
| - poll.save() |
543 |
| - poll.question = "ask questions?" |
544 |
| - poll.save() |
545 |
| - poll.question = "eh?" |
546 |
| - poll.save() |
547 |
| - poll.question = "one more?" |
548 |
| - poll.save() |
549 |
| - first_record = poll.history.filter(question="what's up?").get() |
550 |
| - second_record = poll.history.filter(question="ask questions?").get() |
551 |
| - third_record = poll.history.filter(question="eh?").get() |
552 |
| - fourth_record = poll.history.filter(question="one more?").get() |
553 |
| - self.assertIsNone(first_record.prev_record) |
554 |
| - |
555 |
| - def assertRecordsMatch(record_a, record_b): |
556 |
| - self.assertEqual(record_a, record_b) |
557 |
| - self.assertEqual(record_a.question, record_b.question) |
558 |
| - |
559 |
| - assertRecordsMatch(second_record.prev_record, first_record) |
560 |
| - assertRecordsMatch(third_record.prev_record, second_record) |
561 |
| - assertRecordsMatch(fourth_record.prev_record, third_record) |
562 |
| - |
563 |
| - def test_get_prev_record_none_if_only(self): |
564 |
| - poll = Poll(question="what's up?", pub_date=today) |
565 |
| - poll.save() |
566 |
| - self.assertEqual(poll.history.count(), 1) |
567 |
| - record = poll.history.get() |
568 |
| - self.assertIsNone(record.prev_record) |
569 |
| - |
570 |
| - def test_get_prev_record_none_if_earliest(self): |
571 |
| - poll = Poll(question="what's up?", pub_date=today) |
572 |
| - poll.save() |
573 |
| - poll.question = "ask questions?" |
574 |
| - poll.save() |
575 |
| - first_record = poll.history.filter(question="what's up?").get() |
576 |
| - self.assertIsNone(first_record.prev_record) |
577 |
| - |
578 |
| - def test_get_next_record(self): |
579 |
| - poll = Poll(question="what's up?", pub_date=today) |
580 |
| - poll.save() |
581 |
| - poll.question = "ask questions?" |
582 |
| - poll.save() |
583 |
| - poll.question = "eh?" |
584 |
| - poll.save() |
585 |
| - poll.question = "one more?" |
586 |
| - poll.save() |
587 |
| - first_record = poll.history.filter(question="what's up?").get() |
588 |
| - second_record = poll.history.filter(question="ask questions?").get() |
589 |
| - third_record = poll.history.filter(question="eh?").get() |
590 |
| - fourth_record = poll.history.filter(question="one more?").get() |
591 |
| - self.assertIsNone(fourth_record.next_record) |
592 |
| - |
593 |
| - def assertRecordsMatch(record_a, record_b): |
594 |
| - self.assertEqual(record_a, record_b) |
595 |
| - self.assertEqual(record_a.question, record_b.question) |
596 |
| - |
597 |
| - assertRecordsMatch(first_record.next_record, second_record) |
598 |
| - assertRecordsMatch(second_record.next_record, third_record) |
599 |
| - assertRecordsMatch(third_record.next_record, fourth_record) |
600 |
| - |
601 |
| - def test_get_next_record_none_if_only(self): |
602 |
| - poll = Poll(question="what's up?", pub_date=today) |
603 |
| - poll.save() |
604 |
| - self.assertEqual(poll.history.count(), 1) |
605 |
| - record = poll.history.get() |
606 |
| - self.assertIsNone(record.next_record) |
607 |
| - |
608 |
| - def test_get_next_record_none_if_most_recent(self): |
609 |
| - poll = Poll(question="what's up?", pub_date=today) |
610 |
| - poll.save() |
611 |
| - poll.question = "ask questions?" |
612 |
| - poll.save() |
613 |
| - recent_record = poll.history.filter(question="ask questions?").get() |
614 |
| - self.assertIsNone(recent_record.next_record) |
615 |
| - |
616 | 539 | def test_history_diff_includes_changed_fields(self):
|
617 | 540 | p = Poll.objects.create(question="what's up?", pub_date=today)
|
618 | 541 | p.question = "what's up, man?"
|
@@ -642,6 +565,90 @@ def test_history_diff_with_incorrect_type(self):
|
642 | 565 | new_record.diff_against("something")
|
643 | 566 |
|
644 | 567 |
|
| 568 | +class GetPrevRecordAndNextRecordTestCase(TestCase): |
| 569 | + def assertRecordsMatch(self, record_a, record_b): |
| 570 | + self.assertEqual(record_a, record_b) |
| 571 | + self.assertEqual(record_a.question, record_b.question) |
| 572 | + |
| 573 | + def setUp(self): |
| 574 | + self.poll = Poll(question="what's up?", pub_date=today) |
| 575 | + self.poll.save() |
| 576 | + |
| 577 | + def test_get_prev_record(self): |
| 578 | + |
| 579 | + self.poll.question = "ask questions?" |
| 580 | + self.poll.save() |
| 581 | + self.poll.question = "eh?" |
| 582 | + self.poll.save() |
| 583 | + self.poll.question = "one more?" |
| 584 | + self.poll.save() |
| 585 | + first_record = self.poll.history.filter(question="what's up?").get() |
| 586 | + second_record = self.poll.history.filter(question="ask questions?").get() |
| 587 | + third_record = self.poll.history.filter(question="eh?").get() |
| 588 | + fourth_record = self.poll.history.filter(question="one more?").get() |
| 589 | + |
| 590 | + self.assertRecordsMatch(second_record.prev_record, first_record) |
| 591 | + self.assertRecordsMatch(third_record.prev_record, second_record) |
| 592 | + self.assertRecordsMatch(fourth_record.prev_record, third_record) |
| 593 | + |
| 594 | + def test_get_prev_record_none_if_only(self): |
| 595 | + self.assertEqual(self.poll.history.count(), 1) |
| 596 | + record = self.poll.history.get() |
| 597 | + self.assertIsNone(record.prev_record) |
| 598 | + |
| 599 | + def test_get_prev_record_none_if_earliest(self): |
| 600 | + self.poll.question = "ask questions?" |
| 601 | + self.poll.save() |
| 602 | + first_record = self.poll.history.filter(question="what's up?").get() |
| 603 | + self.assertIsNone(first_record.prev_record) |
| 604 | + |
| 605 | + def get_prev_record_with_custom_manager_name(self): |
| 606 | + instance = CustomManagerNameModel(name="Test name 1") |
| 607 | + instance.save() |
| 608 | + instance.name = "Test name 2" |
| 609 | + first_record = instance.log.filter(name="Test name").get() |
| 610 | + second_record = instance.log.filter(name="Test name 2").get() |
| 611 | + |
| 612 | + self.assertRecordsMatch(second_record.prev_record, first_record) |
| 613 | + |
| 614 | + def test_get_next_record(self): |
| 615 | + self.poll.question = "ask questions?" |
| 616 | + self.poll.save() |
| 617 | + self.poll.question = "eh?" |
| 618 | + self.poll.save() |
| 619 | + self.poll.question = "one more?" |
| 620 | + self.poll.save() |
| 621 | + first_record = self.poll.history.filter(question="what's up?").get() |
| 622 | + second_record = self.poll.history.filter(question="ask questions?").get() |
| 623 | + third_record = self.poll.history.filter(question="eh?").get() |
| 624 | + fourth_record = self.poll.history.filter(question="one more?").get() |
| 625 | + self.assertIsNone(fourth_record.next_record) |
| 626 | + |
| 627 | + self.assertRecordsMatch(first_record.next_record, second_record) |
| 628 | + self.assertRecordsMatch(second_record.next_record, third_record) |
| 629 | + self.assertRecordsMatch(third_record.next_record, fourth_record) |
| 630 | + |
| 631 | + def test_get_next_record_none_if_only(self): |
| 632 | + self.assertEqual(self.poll.history.count(), 1) |
| 633 | + record = self.poll.history.get() |
| 634 | + self.assertIsNone(record.next_record) |
| 635 | + |
| 636 | + def test_get_next_record_none_if_most_recent(self): |
| 637 | + self.poll.question = "ask questions?" |
| 638 | + self.poll.save() |
| 639 | + recent_record = self.poll.history.filter(question="ask questions?").get() |
| 640 | + self.assertIsNone(recent_record.next_record) |
| 641 | + |
| 642 | + def get_next_record_with_custom_manager_name(self): |
| 643 | + instance = CustomManagerNameModel(name="Test name 1") |
| 644 | + instance.save() |
| 645 | + instance.name = "Test name 2" |
| 646 | + first_record = instance.log.filter(name="Test name").get() |
| 647 | + second_record = instance.log.filter(name="Test name 2").get() |
| 648 | + |
| 649 | + self.assertRecordsMatch(first_record.next_record, second_record) |
| 650 | + |
| 651 | + |
645 | 652 | class CreateHistoryModelTests(unittest.TestCase):
|
646 | 653 | def test_create_history_model_with_one_to_one_field_to_integer_field(self):
|
647 | 654 | records = HistoricalRecords()
|
|
0 commit comments