|
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