def test_save_uservote_only_generates_similarity_for_mps_parliament(self): v = UserVoteFactory(user=self.user) PersonWithCommitment.create_batch(2) PersonFactory.create_batch(2) for p in Person.objects.all(): VotingFactory(voting_id=v.voting_id, fk_voting_person=p) v.save() qualified_votes = UserSimilarity.objects.filter().count() nr_of_total_mps = Person.objects.all().count() self.assertEqual(qualified_votes, 2) self.assertEqual(nr_of_total_mps, 4)
def test_save_uservote_usersimilarity_is_correct(self): v1 = UserVoteFactory(user=self.user, vote='Ja') v2 = UserVoteFactory(user=self.user, vote='Ja') PersonWithCommitment.create_batch(2) mp1 = Person.objects.all()[0] mp2 = Person.objects.all()[1] VotingFactory(voting_id=v1.voting_id, fk_voting_person=mp1, vote='Ja') VotingFactory(voting_id=v2.voting_id, fk_voting_person=mp1, vote='Ja') VotingFactory(voting_id=v1.voting_id, fk_voting_person=mp2, vote='Nej') VotingFactory(voting_id=v2.voting_id, fk_voting_person=mp2, vote='Ja') v1.save() # gotcha that it needs to be saved to generate similarity mp1_similarity = UserSimilarity.objects.get(mp__pk=mp1.intressent_id) mp2_similarity = UserSimilarity.objects.get(mp__pk=mp2.intressent_id) self.assertEqual(mp1_similarity.percentage, 100) self.assertEqual(mp2_similarity.percentage, 50)
def test_similarity_does_not_take_into_account_absence_or_abstained(self): v1 = UserVoteFactory(user=self.user, vote='Ja') v2 = UserVoteFactory(user=self.user, vote='Ja') PersonWithCommitment.create_batch(2) mp1 = Person.objects.all()[0] mp2 = Person.objects.all()[1] VotingFactory(voting_id=v1.voting_id, fk_voting_person=mp1, vote='Ja') VotingFactory(voting_id=v2.voting_id, fk_voting_person=mp1, vote='Ja') VotingFactory(voting_id=v1.voting_id, fk_voting_person=mp2, vote='Nej') VotingFactory(voting_id=v2.voting_id, fk_voting_person=mp2, vote='Frånvarande') v1.save() # gotcha that it needs to be saved to generate similarity mp1_similarity = UserSimilarity.objects.get(mp__pk=mp1.intressent_id) mp2_similarity = UserSimilarity.objects.get(mp__pk=mp2.intressent_id) self.assertEqual(mp1_similarity.percentage, 100) self.assertEqual(mp2_similarity.percentage, 0) self.assertEqual(mp2_similarity.common_votes, 1)
def test_save_uservote_similarity_works_for_non_existing_votes(self): v1 = UserVoteFactory(user=self.user, vote='Ja') v2 = UserVoteFactory(user=self.user, vote='Ja') PersonWithCommitment.create_batch(2) mp1 = Person.objects.all()[0] mp2 = Person.objects.all()[1] VotingFactory(voting_id=v1.voting_id, fk_voting_person=mp1, vote='Ja') VotingFactory(voting_id=v2.voting_id, fk_voting_person=mp1, vote='Ja') VotingFactory(voting_id=v2.voting_id, fk_voting_person=mp2, vote='Nej') # mp2 has a missing vote here, should not generate error v1.save() # gotcha that it needs to be saved to generate similarity mp1_similarity = UserSimilarity.objects.get(mp__pk=mp1.intressent_id) mp2_similarity = UserSimilarity.objects.get(mp__pk=mp2.intressent_id) self.assertEqual(mp1_similarity.percentage, 100) self.assertEqual(mp2_similarity.percentage, 0) self.assertEqual(mp2_similarity.common_votes, 1)