Esempio n. 1
0
 def test_is_eligible_blocked(self):
     # Blocked citizen is not eligible
     TODAY = datetime.datetime(2000, 6, 2)
     citizen = CitizenFactory(birth_date=datetime.date(1982, 6, 1))
     self.assertTrue(citizen.is_eligible(as_of=TODAY))
     citizen.block()
     citizen.save()
     self.assertFalse(citizen.is_eligible(as_of=TODAY))
Esempio n. 2
0
 def test_block_citizen(self):
     citizen = CitizenFactory()
     RegistrationFactory(citizen=citizen, archive_time=None)
     self.assertIsNotNone(citizen.registration)
     citizen.block()
     self.assertIsNone(citizen.registration)
Esempio n. 3
0
class ExecuteUnblockTest(TestCase):
    """
    Test executeing unblocking changesets.

    Each test will set up a change in a different way but that ought to have the same
    results. Then we'll try to roll back the change, after changing one voter, and check
    those results.
    """
    def setUp(self):
        # these should be unblocked during the changeset
        self.citizen1 = CitizenFactory()
        self.citizen1.block()
        self.citizen2 = CitizenFactory()
        self.citizen2.block()
        # citizen3 already unblocked
        self.citizen3 = CitizenFactory()
        # citizen4 won't be included
        self.citizen4 = CitizenFactory()
        self.citizen4.block()

        self.changeset = ChangesetFactory(
            status=Changeset.STATUS_APPROVED,
            change=Changeset.CHANGE_UNBLOCK,
        )

    def doit(self):
        self.changeset.full_clean()
        citizens = list(self.changeset.get_citizens_to_change())
        self.assertIn(self.citizen1, citizens)
        self.assertIn(self.citizen2, citizens)
        self.assertIn(self.citizen3, citizens)  # In the list, but will not be changed
        self.assertNotIn(self.citizen4, citizens)

        self.changeset.execute()
        self.citizen1 = refresh_model(self.citizen1)
        self.citizen2 = refresh_model(self.citizen2)
        self.citizen3 = refresh_model(self.citizen3)
        self.citizen4 = refresh_model(self.citizen4)
        self.assertFalse(self.citizen1.blocked)
        self.assertFalse(self.citizen2.blocked)
        self.assertFalse(self.citizen3.blocked)
        self.assertTrue(self.citizen4.blocked)

        changes = self.changeset.change_records.all()
        self.assertTrue(changes.filter(citizen=self.citizen1, changed=True).exists())
        self.assertTrue(changes.filter(citizen=self.citizen2, changed=True).exists())
        self.assertTrue(changes.filter(citizen=self.citizen3, changed=False).exists())
        self.assertFalse(changes.filter(citizen=self.citizen4).exists())

        self.assertEqual(Changeset.STATUS_PARTIALLY_SUCCESSFUL, self.changeset.status)

        # Now block citizen 2
        self.citizen2.block()

        rollback = ChangesetFactory(
            status=Changeset.STATUS_APPROVED,
            change=Changeset.CHANGE_ROLLBACK,
            how_to_select=Changeset.SELECT_OTHER_CHANGESET,
            other_changeset=self.changeset,
        )
        citizens = list(rollback.get_citizens_to_change())
        self.assertIn(self.citizen1, citizens)
        self.assertIn(self.citizen2, citizens)
        self.assertNotIn(self.citizen3, citizens)  # not changed before, so not in list this time
        self.assertNotIn(self.citizen4, citizens)

        rollback.execute()
        self.changeset = refresh_model(self.changeset)
        self.assertEqual(Changeset.STATUS_ROLLED_BACK, self.changeset.status)

        self.citizen1 = refresh_model(self.citizen1)
        self.citizen2 = refresh_model(self.citizen2)
        self.citizen3 = refresh_model(self.citizen3)
        self.citizen4 = refresh_model(self.citizen4)
        self.assertTrue(self.citizen1.blocked)
        self.assertTrue(self.citizen2.blocked)
        self.assertFalse(self.citizen3.blocked)
        self.assertTrue(self.citizen4.blocked)

        changes = rollback.change_records.all()
        self.assertTrue(changes.filter(citizen=self.citizen1, changed=True).exists())
        self.assertTrue(changes.filter(citizen=self.citizen2, changed=False).exists())
        # reg 3 not in the list because they were changed previously
        self.assertFalse(changes.filter(citizen=self.citizen3).exists())
        self.assertFalse(changes.filter(citizen=self.citizen4).exists())
        self.assertEqual(Changeset.STATUS_PARTIALLY_SUCCESSFUL, rollback.status)

    def test_unblock_by_uploaded_citizens(self):
        self.changeset.how_to_select = Changeset.SELECT_UPLOADED_NIDS
        self.changeset.save()
        self.changeset.selected_citizens.add(self.citizen1, self.citizen2, self.citizen3)
        self.doit()

    def test_unblock_by_selected_centers(self):
        center1 = RegistrationCenterFactory()
        center2 = RegistrationCenterFactory()
        RegistrationCenterFactory()
        RegistrationFactory(citizen=self.citizen1, registration_center=center1,
                            archive_time=None)
        RegistrationFactory(citizen=self.citizen2, registration_center=center1,
                            archive_time=None)
        RegistrationFactory(citizen=self.citizen3, registration_center=center2,
                            archive_time=None)
        self.changeset.how_to_select = Changeset.SELECT_CENTERS
        self.changeset.save()
        self.changeset.selected_centers.add(center1, center2)
        self.doit()

    def test_unblock_by_other_changeset(self):
        other = ChangesetFactory(status=Changeset.STATUS_SUCCESSFUL)
        self.changeset.how_to_select = Changeset.SELECT_OTHER_CHANGESET
        self.changeset.other_changeset = other
        self.changeset.save()
        ChangeRecordFactory(citizen=self.citizen1, changeset=other, changed=True)
        ChangeRecordFactory(citizen=self.citizen2, changeset=other, changed=True)
        ChangeRecordFactory(citizen=self.citizen3, changeset=other, changed=True)
        ChangeRecordFactory(citizen=self.citizen4, changeset=other, changed=False)
        self.doit()