def test_constituency_unlock(self):
     MembershipFactory(
         ballot=self.dulwich_post_ballot,
         person=PersonFactory(),
         party=PartyFactory(),
     )
     ballot = self.dulwich_post_ballot
     ballot.candidates_locked = True
     ballot.save()
     response = self.app.get(
         self.dulwich_post_ballot.get_absolute_url(),
         user=self.user_who_can_lock,
     )
     csrftoken = self.app.cookies["csrftoken"]
     self.assertContains(response, "Unlock candidate list")
     response = self.app.post(
         reverse(
             "constituency-lock",
             kwargs={"ballot_id": ballot.ballot_paper_id},
         ),
         params={"csrfmiddlewaretoken": csrftoken},
         user=self.user_who_can_lock,
     )
     ballot.refresh_from_db()
     self.assertFalse(ballot.candidates_locked)
     self.assertEqual(response.status_code, 302)
     self.assertEqual(response.location,
                      self.dulwich_post_ballot.get_absolute_url())
Пример #2
0
    def test_delete_elections_with_related_membership(self, mock_requests):
        # import some data
        mock_requests.get.side_effect = create_mock_with_fixtures({
            urljoin(EE_BASE_URL, "/api/elections/?current=True"):
            local_highland,
            urljoin(EE_BASE_URL, "/api/elections/?current=1&deleted=1"):
            no_results,
        })
        call_command("uk_create_elections_from_every_election")
        self.assertEqual(
            every_election.PostExtraElection.objects.all().count(), 1)
        self.assertEqual(every_election.YNRElection.objects.all().count(), 1)

        # create a membership which references the PEE we just imported
        MembershipFactory(
            person=PersonFactory.create(id=2009, name="Tessa Jowell"),
            post_election=every_election.PostExtraElection.objects.all()[0],
        )

        # now we've switched the fixtures round
        # so the records we just imported are deleted in EE
        mock_requests.get.side_effect = create_mock_with_fixtures({
            urljoin(EE_BASE_URL, "/api/elections/?current=True"):
            no_results,
            urljoin(EE_BASE_URL, "/api/elections/?current=1&deleted=1"):
            local_highland,
        })
        # make sure we throw an exception
        with self.assertRaises(Exception):
            call_command("uk_create_elections_from_every_election")

        # we should also roll back the whole transaction so nothing is deleted
        self.assertEqual(
            every_election.PostExtraElection.objects.all().count(), 1)
        self.assertEqual(every_election.YNRElection.objects.all().count(), 1)
 def create_memberships(self, ballot, parties):
     for i in range(3):
         for party in parties:
             person = PersonFactory()
             MembershipFactory(ballot=ballot, person=person, party=party)